Data Processing Agreement

Version 1.1 · effective 2026-11-05

This data processing agreement is entered into between you (the customer) and FWRD Digital (KvK 42057087), established at Utrechtseweg 95-3, 3702 AA Zeist, the Netherlands, email [email protected] ("FWRD", "we"), and forms part of your FWRD Studio subscription. It sets out what we may do with the personal data of your website’s visitors — and what we may not.

YOU are the controller: it is your website, your visitors, your decision what the data is used for. WE are the processor: we only do what you instruct us to, and nothing beyond that. That distinction is the heart of Article 28 GDPR and of this entire document.

We have deliberately kept it readable. Where readability collided with precision, precision wins — but there is no sentence here that only a lawyer could check.

1. Subject matter and duration

Subject matter: building, hosting and maintaining your website, including measuring how visitors use it and receiving whatever they enter into your forms.

Duration: this agreement runs for as long as your subscription runs. When the subscription ends, so does this agreement — with the consequences set out in section 11.

2. Nature and purpose of the processing

We process the data solely to deliver the service you buy:

  • serve the website to whoever requests it, and protect it against abuse;
  • measure how visitors use the website, so you can see what works and what does not;
  • pass form submissions on to you and store them so they are not lost if email falters;
  • suggest improvements on the basis of aggregated figures.

3. Types of personal data and categories of data subjects

The data subjects are the VISITORS to your website, and anyone who fills in a form on it.

From them we process:

  • technical data that comes with every visit: IP address and browser type. These are processed in order to deliver the site, but the IP address is NOT stored by FWRD;
  • a day-scoped visitor identifier: an irreversible code derived from the IP address, the browser and a daily rotating secret. Details in section 6;
  • behavioural data: which page was viewed, which block came into view, what was clicked, how far the page was scrolled, how long it was actively read;
  • for forms: the NAME of the field someone started typing in ("phone"), never what they typed;
  • whatever someone entered in a submitted form — typically name, email address and message — because that is precisely what the form is for;
  • if the visitor’s browser hits a technical error: the error message, scrubbed (see section 6).

4. What we deliberately do NOT process

  • No cookies for the statistics. Visitor measurement works without a cookie. The site does keep one random session number in the visitor’s tab, which disappears when that tab is closed and cannot be read by any other site.
  • No identifier that works across multiple websites. The identifier differs per site, even for the same person on the same day.
  • No storage of IP addresses.
  • No form field values in the statistics. There is no column in our data model that such content would fit into.
  • No selling of data, no advertising profiles, no use for anything other than your service.

5. Our obligations as processor

  • We process only on your instructions. This agreement and your use of the platform are those instructions; we do nothing else without your say-so.
  • If a law nonetheless compels us to do otherwise, we tell you beforehand — unless that same law forbids it.
  • Everyone at our end with access to this data is bound by confidentiality.
  • We assist you with data subject requests (access, rectification, erasure) and with any data protection impact assessment.
  • We make available the information you need to demonstrate compliance with Article 28 GDPR.

6. How the visitor identifier works — and why it is safe

To count whether someone is new or returning, we need an identifier. Instead of a cookie we compute a code: SHA-256 over (today’s secret ‖ the IP address ‖ the browser type ‖ your site’s id).

That secret — the "daily salt" — changes every day and is then destroyed. While it exists, the code could with considerable effort be worked back; once it is gone, that is permanently impossible. Not by us either, and not under compulsion: the key you would need no longer exists.

The consequence: within one day we recognise a visitor on one site. Across days we do not. Across sites we never do, because your site’s id is part of the computation.

If the IP address is unavailable, we compute no code at all. Otherwise every visitor sharing a browser would collapse onto one identity — a number that looks credible and is wrong.

One exception to "no free text": if something breaks in the visitor’s browser, we keep the error message itself, at most 200 characters and scrubbed. Query strings, email-like patterns and runs of seven or more digits are replaced before storage. Without the message a reported error cannot be fixed; with the scrubbing it can never be something a visitor typed.

7. Sub-processors

You give us general authorisation to engage sub-processors. At present these are:

  • Cloudflare — Hosting, delivery and security of the website, DNS, bot protection (Turnstile) and storage of uploaded images. Every visit passes through here, so Cloudflare sees the visitor’s IP address and browser. (processes in: global network; the company is established in the United States)
  • Supabase — The database and the sign-in system. This is where the visitor statistics, the form submissions and the account data live. (processes in: European Union — AWS eu-north-1 (Stockholm))
  • Resend — Email delivery: the notification you receive when someone fills in a form on your site, plus sign-in and billing emails. That notification contains what the visitor entered. (processes in: United States)
  • DeepSeek — The language model that writes pages, edits copy and drafts the monthly report. Your SITE CONTENT goes here, plus summarised figures (counts per page, per form). No submitted form values and no visitor identifier are sent. Please note: this processing takes place in China, for which there is no adequacy decision and for which DeepSeek offers no standard contractual clauses. We are ending this transfer and will replace it no later than 4 November 2026 with processing inside the EU. (processes in: People’s Republic of China)
  • Google — Google Analytics 4 and Search Console. Analytics runs ONLY if the visitor consents through the cookie notice; without that consent no request to Google is made at all. (processes in: United States)
  • GitHub (Microsoft) — Building your website. On every publish the content and settings of your site (copy, contact details you put on your site) are sent as a build job to our build environment (GitHub Actions). No visitor data or form submissions are sent. (processes in: United States)
  • Stripe — Payments and invoicing. Processes YOUR data as a FWRD customer, not that of your website visitors. (processes in: United States and Ireland)
  • Sentry — Error reports from our own software, so we see outages before you report them. Contains technical context; occasionally an identifier may travel with it. (processes in: United States)

We impose on every sub-processor the same data protection obligations as set out in this agreement, and we remain fully responsible to you for their performance.

If we want to add or replace a sub-processor, we notify you at least 30 days in advance by email to your account address, stating the name, purpose and country. Within that period you may object in writing. If you object and we cannot reasonably offer an alternative, you may terminate the agreement effective on the date the change takes effect, and we refund the prepaid amount for the period not used.

8. International transfers

The visitor statistics and the form submissions are stored in the European Union (Supabase, AWS eu-north-1 in Stockholm). That is not incidental; it is a hard requirement written into our own configuration.

Some sub-processors are established in the United States (Cloudflare, Resend, Google, Stripe, Sentry, GitHub). For those transfers we rely on the EU-US Data Privacy Framework where the supplier is certified under it, and otherwise on the European Commission’s standard contractual clauses (Decision 2021/914) in that supplier’s data processing agreement.

The language model we use to write pages currently runs at DeepSeek in China. No valid transfer mechanism exists for that. We will replace it no later than 4 November 2026 with processing inside the EU. No form submissions, visitor data or visitor identifiers are sent to that model, only your site content and summarised figures.

9. Security

  • All connections are encrypted (TLS); storage at our database provider is encrypted.
  • The database is deny-by-default: every table holding customer data is isolated per account, and that isolation is enforced server-side from the verified sign-in token — never from anything a browser sends along.
  • The raw visitor data is readable by no signed-in user at all, including you: you read the summary and the report. Writes happen exclusively server-side.
  • Access to production systems is limited to those who need it, with two-factor authentication.
  • We keep an immutable audit trail of changes to your site and your settings, including changes to the retention period.

10. Personal data breaches

If we discover a personal data breach we notify you WITHOUT UNDUE DELAY and at the latest within 48 hours of discovery, by email to your account address.

That notification contains what we know: what happened, which categories of data and roughly how many data subjects are likely affected, the likely consequences, and the measures we have taken. If we do not know everything yet we send what we do know first — a complete story in three days is worth less than half a story today.

Notifying the supervisory authority and the data subjects is YOUR responsibility as controller. We supply everything you need in order to do so.

11. Retention, deletion and return

  • You set the retention period for visitor statistics yourself, between 7 and 730 days; the default is 90. You will find it in your site settings.
  • A daily purge removes everything outside that window and destroys the daily salts no one needs any more.
  • If you cancel, your site goes offline immediately and we keep the content for a further 90 days so that coming back stays possible. After that it is cleared.
  • If you want your data back sooner, or gone sooner, that is available on request.

12. Audit rights

You may verify that we hold to this. In practice that means: you ask us questions and we answer them, with evidence where evidence exists.

If you want an on-site audit or one by an independent auditor, we will cooperate. We ask for reasonable notice (30 days), no more than one audit per year absent a specific cause, and confidentiality — the systems serving you also serve other customers.

13. Liability and final provisions

This agreement is governed by Dutch law. Disputes go to the competent court in the Netherlands.

Where this data processing agreement and our general terms conflict on the processing of personal data, this agreement prevails.

If we change this text materially, it receives a new version number. We notify you of the change at least 30 days in advance by email. For a new sub-processor the objection procedure in section 7 applies. The previous version is kept, so it is always traceable what applied at the moment you agreed.