Privacy and compliance
What the script stores, how IP addresses and identifiers are handled, which browser signals are honoured, consent and opt-out, and retention.
The short version: Statsy is cookieless for visitors in the EU, EEA, UK and Switzerland and for anyone sending Global Privacy Control, stores no IP addresses, sets no third-party cookies, masks every form field in replays, and keeps raw events for 90 days. The detail is below, with links to the full pages.
What is stored in the browser
| Mode | Cookies | Storage | Identifier |
|---|---|---|---|
| Cookieless | None | A session id in the tab’s session storage, gone when the tab closes | A daily key computed on the server from a rotating secret, the site, the IP and the browser. Not reversible, not linkable across days. |
| Full | One first-party cookie, statsy_vid, a random id, up to a year | The same session id, plus the consent choice in local storage | The random id. Nothing about the person is derived from it. |
Which mode applies is decided per visitor by the site setting, the country and the browser's signals. See Tracking modes.
IP addresses
The IP address is used twice and stored never: to look up country, region and city, and in cookieless mode as one input to the daily key. The secret behind that key is deleted after two days, after which the key cannot be tied to an address even by us. Exports, the API and the dashboard have no IP field.
Browser signals honoured
- Global Privacy Control and Do Not Track: the script sends nothing at all. Not a pageview, not a heatmap hit, not a replay. A site can override this with
data-ignore-dnt="true"; a GPC visitor is then still measured cookieless. - Sec-GPC on the request: when a beacon does arrive with it, because the site set
data-ignore-dnt, the server forces cookieless mode for that visitor whatever the site setting. - Opt-out:
statsy.optOut()sets a local storage flag and the script stays silent on that browser untilstatsy.optIn(). An opt-out link for your privacy page is one line.
<button onclick="statsy.optOut(); this.textContent='You are opted out'">Opt out of analytics</button>Consent
Cookieless mode stores no identifier, which in many places means no analytics consent is needed for it. If you run a banner anyway, or want full mode for visitors who agree, wire the banner to statsy.consent(). Granted switches that browser to full mode, denied clears the cookie and stays cookieless. The choice is remembered.
banner.on('accept', () => statsy.consent('granted'));
banner.on('reject', () => statsy.consent('denied'));Replays and heatmaps
- Replays record full-mode visitors only, at the sample rate you set, and every input field, passwords included, is masked. That cannot be turned off.
- Heatmaps are positions aggregated per page; no click is stored with a visitor.
- A CSS selector under Site settings › Replays blocks elements whose content should never appear in a recording, such as an account page or a chat widget.
Events and identity
- Automatic events never read form values, file contents or typed text. See Events captured automatically.
- Search queries are the exception by design: they are what the visitor typed into your search. Switch URL capture off if that is not appropriate for your site.
- Identity traits from
statsy.identify()are stored in your workspace only, never in public share links or the share API.
Retention
| Data | Kept |
|---|---|
| Raw events and sessions | 90 days, then aggregated daily totals only |
| Session replays | 90 days |
| Raw heatmap clicks and scroll reach | 90 days; the per-page totals up to 400 days |
| Daily and hourly totals | While the site exists |
| Identities and payments | Until the site is deleted |
Full table and the purge schedule: Data retention.
Data subject requests
Delete one visitor by id, delete a date range, or delete the site, from Site settings › Danger zone or the API. Exports of any report are CSV. The Data Processing Addendum covers the processor relationship, and Privacy and GDPR covers roles and sub-processors.
Note. Rules differ by country and by what your site does. This page describes what the software does; whether that satisfies your obligations is a question for you and, where needed, your counsel.
Frequently asked questions
Is Statsy GDPR compliant without a cookie banner?
In cookieless mode it stores no identifier and no IP address, which is the configuration most operators rely on to measure EU visitors without an analytics banner. The site remains responsible for its own notices.
Can visitors see what you hold on them?
A visitor with their id (statsy.visitorId() in their browser) can be deleted by you from Site settings › Danger zone, and their journey exported as CSV.
Last updated · Markdown version