How our analytics works

Last updated: June 20, 2026

Most privacy startups put Google Analytics on the very landing page that promises privacy. We didn't. We wrote our own — cookieless, zero third parties, and provably unable to identify you.

What makes it different

No cookies, no banner

We count visits without setting a single cookie or touching localStorage. That's why there's no annoying cookie banner — we don't need consent for storage we never use.

CookielessNo consent bannerNo fingerprinting

Zero third parties

No Google Analytics, no Meta Pixel, no PostHog, no Plausible. Not a single byte about your visit leaves our servers. The analytics run in the same backend that serves the app.

First-party onlyNo data brokersNo external trackers

Provably anonymous

We never store your IP or user-agent. We hash them with a secret salt that is rotated every day and then destroyed — so by nightfall the hash is mathematically irreversible and the same visitor tomorrow is a different number.

Salted hashDaily salt rotationNo PII in the database

We respect Do-Not-Track

Turned on Do-Not-Track or Global Privacy Control in your browser? We honor it — literally, on the first line of the script. The beacon never even initializes.

DNT honoredGPC honoredOpt-out first

1. What we measure

We measure aggregate page traffic so we know which content is useful: how many visits a page got, roughly how many distinct visitors a day, the country-agnostic referrer host (e.g. news.ycombinator.com), and the campaign tags on inbound links (utm_source / utm_campaign / utm_content). That's it — enough to run a marketing funnel, not enough to profile a person.

2. What we never collect

We do not collect or store any of the following:

  • Cookies or localStorage identifiers of any kind
  • Browser fingerprints
  • Your IP address (used in RAM for a fraction of a second, then discarded)
  • Your user-agent string (same: in-memory only)
  • Your name, email, or any account identifier linked to a page view
  • Mouse movements, scroll heatmaps, session recordings

3. How the cookieless visitor count works

Instead of a tracking cookie, we derive a one-way visitor hash on the server: sha256(daily_salt + ip + user_agent + host). The IP and user-agent only ever live in memory for the duration of the request and are never written to the database, the logs, or our error tracker. What lands in Postgres is an opaque hex string that cannot be reversed and is not joined to any user account.

4. The salt is rotated every day

The secret salt is generated with cryptographic randomness, kept only in Redis, and rotated every 24 hours — the old one is destroyed. Because the salt is gone, the hash becomes mathematically irreversible: by the end of the day there is no way to take an IP and recompute the hash. The same visitor on the next day produces a completely different number, so a cross-day profile of you is impossible by design.

5. Do-Not-Track and Global Privacy Control

If your browser sends a Do-Not-Track (DNT) or Global Privacy Control (GPC) signal, the analytics beacon never runs — that check is the first line of the client script — and the server independently drops the request as well. We also skip known bots and crawlers.

6. Retention

Raw events are kept for a short window (60 days) and then permanently deleted. We roll them up into a tiny daily summary table — pure aggregate counts with no visitor hashes — which is what the dashboard reads for past periods.

7. Why this is GDPR-clean without a consent banner

Because we set no cookies and store no personal data, ePrivacy/PECR consent rules for storage do not apply, and there is no PII to process. This is privacy by architecture, not by promise — see also our Privacy Policy and Cookie Policy.