the fine print

Privacy Policy

Last updated: 2026-10-11 · Datenschutzerklärung gemäß Art. 13 DSGVO

Summary: we do not store your drawings. Drawing content goes directly from your browser to Notion using your Notion access token - it never touches our servers. We store a pseudonymous identifier (a hash of your Notion user ID) and your monthly drawing count to enforce the free-tier limit, plus your Pro license key if you upgrade. For Pro customers, this identifier can be linked to the person who paid. We delete the user record 13 months after the extension last contacted our server (for Pro customers, not while the subscription is active); drawing counters expire after 35 days. The website uses Cloudflare Web Analytics (cookieless, no fingerprinting, no cross-site tracking) for aggregate page-view stats; no advertising cookies, no third-party tracking scripts.

1. Who is the data controller

Alexander Kagoshima
Email: [email protected]

The full postal address of the data controller is published in our Impressum as required under § 5 DDG.

We are responsible for the processing of personal data in connection with this website (flowblock.app) and the Flowblock Chrome extension.

2. Data processed when you visit flowblock.app

This website is hosted on Cloudflare Pages. When you load a page, Cloudflare automatically processes certain connection metadata to deliver the site and protect against abuse:

Legal basis: Art. 6(1)(f) GDPR - legitimate interest in operating and securing the website.
Retention: handled by Cloudflare under their own policies (typically rolling logs of a few days). See cloudflare.com/privacypolicy.

In addition, this website uses Cloudflare Web Analytics to measure aggregate page views and referrers. Cloudflare Web Analytics is cookieless, does not use browser fingerprinting, does not track you across other websites, and does not build a user profile. The beacon (static.cloudflareinsights.com) is injected automatically by Cloudflare when serving the page; no personal data such as your IP address is retained for analytics purposes (Cloudflare drops it after deriving the aggregate counters).
Legal basis: Art. 6(1)(f) GDPR - legitimate interest in understanding aggregate website usage. Because Web Analytics neither stores nor reads information on your device, no consent under § 25 TTDSG is required.
See cloudflare.com/web-analytics for details.

Apart from this, no cookies and no third-party tracking scripts are served from this website. Fonts (Caveat) are self-hosted and not loaded from any third party.

3. Data processed when you use the Flowblock Chrome extension

3.1 Notion OAuth token

When you connect your Notion account, Notion issues an OAuth access token scoped to the Notion pages you explicitly select during the authorization flow. Notion sends the token to our Cloudflare Worker, which passes it on to the extension. We do not store the Notion token on our servers. The extension stores the token locally in your browser (chrome.storage.local) and uses it to call Notion's API directly from your browser.

Legal basis: Art. 6(1)(b) GDPR - necessary to provide the service you requested.

3.2 Pseudonymous user ID and diagram count

When you connect your Notion account, Notion sends our Cloudflare Worker your Notion user ID. The Worker computes a SHA-256 hash of this ID (the "user hash") and keeps only the hash. The hash is not salted: anyone who knows your Notion user ID can compute the same hash and match it to our records. The user hash is therefore a pseudonymous identifier, not anonymous data.

To enforce the free-tier limit of five drawings per calendar month, the extension sends to our Worker:

The backend stores in Cloudflare KV, keyed by your user hash: a user record with your plan and the date of your first use, a monthly drawing counter, and the block IDs of your drawings. The block IDs let you edit your own drawings without using up a free drawing again. When a drawing is created from a Mermaid code block, a second counter (mermaid_import) is incremented in the same way, so we can measure aggregate adoption of the Mermaid-import feature. We do not store your name, your email address or the content of your drawings.

Legal basis: Art. 6(1)(b) GDPR - necessary to enforce the terms of the free tier; Art. 6(1)(f) GDPR - legitimate interest in measuring aggregate feature adoption.
Retention: the user record (user hash, plan, date of first use) is deleted automatically 13 months after the extension last contacted our server. For Pro users see 3.3. Both counters expire automatically 35 days after their last change. Block IDs expire at the end of the month after the one in which they were last recorded.

3.3 License key and subscription status (Pro users only)

If you upgrade to Pro, Polar.sh issues a license key. When you enter the key in the extension, we send it to our backend, which validates it against Polar.sh's API and stores the result (plan: "pro") in your user record in Cloudflare KV. We do not receive or store payment card details - Polar.sh handles the full payment flow.

A license must be assigned to the extension that uses it. So on activation, our backend sends the license key and your user hash to Polar.sh, and Polar.sh stores the user hash as the label of that activation. Our backend stores the license key together with your user hash. Polar.sh knows your email address and billing details from the purchase. For Pro customers, the user hash can therefore be linked to the person who paid, by us and by Polar.sh.

Legal basis: Art. 6(1)(b) GDPR - necessary to provide Pro features.
Retention: the user record, including the license key, is kept while your subscription is active. After the subscription ends, the record is deleted 13 months after the extension last contacted our server. Purchase and invoice records are kept by Polar.sh as Merchant of Record under its own retention duties. Our server keeps no invoices.

3.4 Drawing content

We do not process or store your drawing content. When you save a drawing, the SVG is uploaded directly from your browser to Notion's file-upload API using your Notion access token. Our servers never see the drawing bytes.

To edit a drawing, the extension loads the stored file from Notion's file storage (prod-files-secure.s3.us-west-2.amazonaws.com and notionusercontent.com), which is part of Notion's service.

You draw in an Excalidraw or draw.io editor that the extension opens inside Notion. We host both editors as static websites on Cloudflare Pages: excalidraw-flowblock.pages.dev and drawio-flowblock.pages.dev. The editor runs in your browser. The extension passes the drawing to the editor inside your browser, and the editor renders it there. When an editor opens, Cloudflare processes your IP address and user agent to deliver it, as on any website visit (see section 2). The drawing is not sent to Cloudflare.

The Excalidraw editor loads fonts and other editor assets from unpkg.com, a public content delivery network for open-source packages. When it opens, your browser connects to unpkg.com, which receives your IP address and user agent.

The draw.io editor loads all of its files from drawio-flowblock.pages.dev and contacts no other host when it opens a drawing. Some optional draw.io features contact third-party hosts when you use them, for example Google Fonts when you choose a web font.

3.5 Connection data on API calls

When the extension calls our Cloudflare Worker (sign-in, license checks, drawing counts), Cloudflare processes your IP address and user agent to deliver the request and protect against abuse. Our Worker does not store them. Cloudflare handles this data under its own policies.

Legal basis: Art. 6(1)(f) GDPR - legitimate interest in operating and securing the service.

4. Recipients and third-party processors

We use the following service providers. Data transfers to US-based providers are covered by the EU-US Data Privacy Framework (adequacy decision of 10 July 2023) or by Standard Contractual Clauses where applicable.

5. Your rights

Under the GDPR you have the right to:

To exercise any of these rights, email [email protected]. Uninstalling the extension or clicking Disconnect in the extension deletes the Notion access token from your browser. It does not revoke the token at Notion, and it does not delete the records on our server: they are deleted as described in sections 3.2 and 3.3, or earlier if you request deletion. To revoke Flowblock's access, remove the connection in Notion: open Settings, then Connections, and disconnect Flowblock.

6. Supervisory authority

You have the right to lodge a complaint with the data protection supervisory authority of your country of residence. For users in Germany, this is the data protection authority of the federal state in which the controller is established:

Berliner Beauftragte für Datenschutz und Informationsfreiheit

7. Changes to this policy

We may update this policy to reflect changes in the service or legal requirements. The "Last updated" date above will reflect any revision. Material changes will be announced in-extension or by email to Pro subscribers.