Scan Analytics
How EUlabel captures and reports QR code scan events.
Every QR code scan generates a structured event that feeds into the analytics pipeline, giving you visibility into how products are being engaged with.
At a glance
- Analytics are captured before redirect, so you don’t lose events when a destination fails to load.
- Location is derived from IP geolocation, not device GPS.
- Use the Analytics API for dashboards, alerts, and reporting.
Scan event structure
When a consumer scans a QR code, the resolver captures a scan event before redirecting:
{
"eventId": "evt_01H8ABC123XYZ",
"eventType": "scan",
"productId": "prd_01F8ABC123",
"timestamp": "2026-03-12T14:23:01Z",
"location": {
"country": "PT",
"region": "Lisboa",
"city": "Lisboa"
},
"referrer": "https://winebar.pt/menu",
"device": {
"type": "mobile",
"os": "iOS",
"browser": "Safari"
}
}Privacy
EUlabel analytics are privacy-by-design. No personally identifiable information is stored, and location is derived from IP geolocation -- not device GPS.
- Location data is derived from IP geolocation, not device GPS
- No personally identifiable information is stored
- Events are captured at the resolver layer before the redirect, so analytics are recorded even if the passport page fails to load
What you can track
Total scans
Total number of scans per product
Geographic distribution
Country/region/city breakdown via IP geolocation
Device types
Mobile, tablet, and desktop breakdown
Top referrers
Where scans originate (menus, e-commerce, direct)
Time series
Day/week/month trends for growth and seasonality
Accessing analytics
Use the Analytics API endpoint or the EUlabel Dashboard to view scan data.
curl "https://api.eulabel.eu/v1/analytics/product/a1b2c3d4-...?start=2026-01-01" \
-H "Authorization: Bearer sk_test_..."Event types
The platform tracks events beyond QR scans:
| Event | Trigger | Description |
|---|---|---|
scan | QR code scanned | Primary engagement metric |
api_request | Passport retrieved via API | B2B integration usage |
passport_created | New passport published | Product lifecycle event |
passport_updated | Passport modified | Content change tracking |
webhook_delivered | Webhook sent to subscriber | Integration monitoring |