The scan-to-report journey
Here is what happens from the moment a user scans your QR Code to the moment that event appears in your reports.The scan session
Thescnv query parameter is the key to attribution. It contains a scan session ID — a UUID that uniquely identifies a single scan of a single QR Code by a single user at a specific moment in time.
- Reads the
scnvvalue from the URL - Saves it to
localStoragewith a 60-day expiry - Attaches it as
scan_session_idto every event sent from that browser
Attribution across pages and sessions
The scan session ID persists across page navigations within the same domain. If a user:- Scans a QR Code → lands on
/landing - Clicks through to
/pricing - Signs up on
/signup
Browser events vs server events
There are two types of events:| Type | Sent from | Auth | Best for |
|---|---|---|---|
| Browser events | User’s browser via SDK | None (public) | Page views, clicks, scroll, form submissions |
| Server events | Your backend via API | API key required | Purchases, sign-ups, leads, any server-side action |
scan_session_id, which links them to the QR scan. For server events, your backend needs to receive the scan_session_id from the browser — typically by passing it in a form field, session cookie, or API call.
How events are processed
Once the Tracking API receives an event, it goes through a processing pipeline:- Validation — checks required fields, payload size, and site/domain authorization
- Deduplication — marks repeated
event_idvalues as duplicates (they are still stored, not dropped) - Device enrichment — parses user-agent to extract device type, browser, and OS
- Location enrichment — resolves IP address to country and city using GeoIP
- Identity linking — resolves
scan_session_idto QR Code ID and user ID from the Scanova database - Fraud detection — heuristic scoring to flag bot-like behaviour
- Privacy / GDPR — strips PII fields if
consentisdeniedorpending
Identity and sessions
Each event the SDK sends carries three separate identity values. Understanding the difference helps when reading reports:| Identity | Cookie/Storage key | Lifetime | What it represents |
|---|---|---|---|
scan_session_id | localStorage._scnv | 60 days | The specific QR Code scan that started this user journey. The primary attribution key. |
web_session_id | Cookie _scnv_ws | 30 minutes of inactivity | One continuous browsing session. Resets after 30 minutes of inactivity, like a standard session. |
visitor_id | Cookie _scnv_vid | 1 year | A persistent anonymous identifier for a browser. Allows returning QR scan visitors to be recognised across multiple scan sessions. |
scan_session_id.
Data availability
- Events are ingested and queued immediately on receipt
- Processed events appear in reports within seconds under normal load
- Short delays (up to a few minutes) can occur during high-traffic spikes