Analytics
Scan analytics is first-party: measured at our edge as the redirect happens, not by a Google tag on someone's page. No cookie is set on scanners, ever · uniques are estimated with a counting sketch, and the number is labeled as the estimate it is.
What is measured
For what this looks like on a live code, and the list of what is deliberately not collected, see QR code scan analytics.
- Totals and a daily timeseries, with the headline compared against the previous equal-length window · and no delta shown at all when there is no honest baseline to compare against.
- Uniques without cookies. A per-day sketch estimates distinct visitors. Nothing is stored on the visitor's device and nothing we keep can be turned back into a person.
- New against returning. Whether a visitor has been seen before is worked out from a rotating identifier we derive on our side, never from a cookie. It resets every 28 days, so "returning" always means "came back within the last four weeks" · and we collect no extra signal from the device to sharpen it, because that would be fingerprinting.
- Bots, shown not hidden. Automated hits are flagged and reported as their own number rather than silently folded into your reach.
- 8 breakdowns · country · city · device · browser · OS · referrer · UTM source · hour of day · plus your top links, filterable to a single link or a folder subtree.
- A live feed · the last scans as they happen, in Dashboard → Live.
Ranges and retention
Ranges: 7 days · 30 days · 90 days · 180 days · 365 days · all time (default 30). Up to 90 days is served live from the edge analytics store; 180 days, 365 days and all-time come from a nightly rollup, so history does not expire when the live window does. Retention is not a tier: every pack keeps the rollup.
Getting it out
- Shareable reports · white-label, signed, stateless links that expire after 30 days; hand one to a client with no login.
- CSV export · the raw numbers, yours.
- API ·
GET /api/v1/analyticsreturns everything above as JSON. Reference. - Webhooks · a signed POST per scan, in real time, for your own pipeline. Verification snippet.