Skip to content
Privacy & security

What we capture, and everything we deliberately do not.

Conversionics tells a website owner where their site loses people. To do that it watches how visitors behave — so the first thing worth saying is what it does not watch.

We never record what your visitors see or type

There is no session recording, no screen capture, no video, and no copy of your pages' content. Not as a policy we could quietly change: there is nothing in the product that could take one. No screenshot is taken, no page markup is copied, and no canvas or font fingerprint is read.

What a form contributes is how many characters were typed and how long it took — never the characters. Text reaches us only from the label of something a visitor actually interacted with: a button's name, a link's text. Before it is stored, anything that looks like an email address, a phone number or a run of four or more digits is removed.

We do not read your visitors' cookies, we do not use third-party storage, and we store no user ID of any kind.

Your visitors' addresses are not stored

Your visitor's IP address arrives with the request, as it must for any request on the internet. We shorten it — IPv4 to a /24, IPv6 to a /64 — before looking anything up, use the shortened value to resolve a country and a first-level region, and then discard it. There is no IP column in any table, and the lookup is an offline read of a database file inside our own server: the address is never sent anywhere.

Location is a country code and a region. Never a city, never coordinates, never a postcode. The record also says which source answered, so two different spellings of the same region are never quietly treated as two places.

One residual, stated rather than hidden: Google Cloud, which runs our servers, keeps its own request log, and that log holds the connecting address for 30 days. It is not ours, nothing in our product reads it, and no address from it ever reaches a stored row — but it exists, and a page that said “no log anywhere holds an address” would be wrong.

There is no tracking of your visitors across other companies' sites

No identifier we create can follow a visitor to another company's website. Not “we choose not to” — no such field exists. The value that recognises a returning visitor is first-party and scoped to your site alone.

Two values can cross a boundary. Both are confined to your own domains, both require the separate Recognise permission, and neither is read by any feature today:

Because of this we count sessions, not people — and every rate in the product shows the denominator it was measured over. We would rather show you a smaller honest number than a bigger invented one.

Your data is separated from every other customer's, in the database

Tenant separation is not application logic that a bug could bypass. Every tenant-scoped table carries a row-level security policy, and the policy is forced — it applies to the table owner too. An application defect cannot read across customers, because the database refuses the query. An audit checks every one of those tables on every release and fails the build if one is unprotected or unforced.

The API that serves your data is not on the internet. It has no public address; only our own services inside a private network can reach it. Passwords are hashed with argon2id, and a password reset genuinely invalidates every session that was already signed in. Secrets live in Google Secret Manager and never in our source code.

Where it all lives

Everything that stores data is in the European Union — Belgium: the collector that receives behaviour, the raw-event store, the database, the cache and the pipeline. Adding our tag adds no third party to your capture path.

Who else touches it

We use five sub-processors. Two of them receive personal data and both are in the United States, so they are covered by Standard Contractual Clauses in our Data Processing Agreement.

Sub-processorWhat it doesWhereWhat it receivesWhat it never receives
Google CloudAll infrastructureEU — Belgium. One exception: Google's own request log, worldwide, 30 daysEverything; it is the infrastructure
AnthropicWrites the plain-English explanation of a finding, answers questions about your own results, classifies what a page is forUnited StatesOur own finished sentences about a finding, plus your page's own title, headings and description, plus counts of its form fields and buttonsNever raw behaviour, never a visitor identifier, never an address, never anything one of your visitors typed or saw
ResendSends invitations, password resets and alert emailsUnited StatesYour team's email addresses and the text of that emailNothing about your visitors
SlackOptional: delivers alerts to a channelUnited StatesAn alert's metric, value and thresholdNothing about your visitors
SentryError reportingEU — GermanyNothing. It is present in our code and switched off in production

If you connect Google Analytics 4 or Microsoft Clarity, those remain your tools under your arrangements. We read the aggregates you already had; connecting them adds no new company to your own list.

The current list is always this page. We give notice before it changes — see the DPA.

You can have a visitor erased, and you get a receipt that is true

A single visitor’s data can be deleted on request. You resolve your visitor to their identifier — it is readable in their own browser storage and the tag exposes it for exactly this purpose — and we delete every row it identifies, including the rows they arrived on from another of your domains. You receive a receipt recording what was deleted, when, and by whom. The receipt stores a one-way hash of the identifier, not the identifier.

And when we cannot do it, we say so instead of issuing a receipt. Very recently captured rows sit in a write buffer that cannot be deleted for up to about 90 minutes. In that window the request returns a failure that tells you when to retry, and no receipt is written. A receipt claiming an erasure that did not happen would be worse than the delay — so the product refuses to produce one.

We delete everything after 400 days

Raw behavioural data is held for 400 days and then dropped. The deletion is a metadata operation on a whole day’s partition — it does not even create a database job. This is also the honest limit on what the product can recalculate: change a rule today and history re-derives, but only as far back as 400 days.

The residuals — what we cannot undo

  1. Behaviour captured before your visitor consented does not exist, so there is nothing to delete. Where a grant arrives mid-visit, the earlier moments were never attached to any identifier. They cannot be erased because they cannot be linked to anybody — which is the point, not an excuse.
  2. A deletion in our raw store is queued, not instant. The receipt records when it completed, not when it was asked for.
  3. Database backups age out on their own schedule. We keep 7 automatic backups and 7 days of transaction logs for point-in-time recovery, in the EU. A row deleted today is gone from the live database immediately and leaves those backups as they expire.
  4. Google Cloud's own request log holds connecting IP addresses for 30 days, as described above.

What we have not got

We hold no SOC 2 report, no ISO 27001 certificate, and no independent penetration test. We are not going to imply otherwise on the page where we ask you to trust us.

The honest position is: we built it right and nobody has certified it yet. That is a real gap, and it is a different kind of gap from a product that captured too much and now has to be rewritten — this product cannot leak what it never collected. If a certification is a requirement for you, tell us; it is money and calendar time, and a named requirement is what starts it.

Why any of this is credible

Because the claims on this page are not policy — they are properties of the code, and each one is checked by something that fails the build when it stops being true. That includes the awkward ones: the tests that would catch us sending a visitor’s page text to a US model, and the test that would catch us issuing an erasure receipt for an erasure that did not happen.