How the Resolver Works
How EUlabel's GS1-conformant resolver routes QR code scans to the right data for the right audience.
The resolver is the routing engine behind the QR code. When a GS1 Digital Link URI is scanned, the resolver identifies the product, determines the appropriate destination, and redirects the request.
One QR code, multiple audiences
The same QR code serves different data to different audiences:
| Audience | Destination | Data Served |
|---|---|---|
| Consumer | Passport page | Ingredients, nutrition, allergens, product story |
| Regulator | Compliance dataset | Machine-readable JSON-LD conformity data |
| Retailer | Logistics view | Batch info, supply chain data |
| Recycler | Material data | Packaging composition, disposal instructions |
The resolver selects the destination based on the linkType query parameter, Accept header, or default link configuration.
Request flow
1. Consumer scans QR code
|
2. URI hits the resolver: eulabel.eu/01/05601234567890
|
3. GTIN extracted and validated
|
4. Product looked up in database
|
5. Scan event recorded (non-blocking)
|
6. Destination link determined
|
7. HTTP 307 redirect to passport pageRequesting specific link types
Append ?linkType= to request a specific type of information:
# Product information page
https://eulabel.eu/01/05601234567890?linkType=gs1:pip
# Allergen information
https://eulabel.eu/01/05601234567890?linkType=gs1:allergenInfo
# Nutrition information
https://eulabel.eu/01/05601234567890?linkType=gs1:nutritionalInfo
# Full linkset (all available links)
https://eulabel.eu/01/05601234567890?linkType=linksetGTIN hierarchy fallback
The resolver supports three levels of identification and falls back up the hierarchy when more specific data is not available:
1. Serial level: GTIN + lot + serial -> item-specific links (repair, warranty)
|
| (not found)
v
2. Batch level: GTIN + lot -> batch-specific links (recall, lab results)
|
| (not found)
v
3. GTIN level: GTIN only -> general product links (ingredients, passport)This means general product information is registered once at the GTIN level, while batch-specific recall notices or item-specific repair records can be added without duplicating data.
HTTP behavior
| Response | Condition |
|---|---|
| 307 Temporary Redirect | Successful resolution -- redirect to target URL |
| 400 Bad Request | Malformed or invalid GS1 Digital Link URI |
| 404 Not Found | Valid URI but no registered links for this identifier |
The resolver uses HTTP 307 (not 301) because target URLs may change over time as product data updates. 307 prevents browsers from caching the redirect permanently.
Default link
Every product must have exactly one default link. When no specific linkType is requested, the resolver redirects to the default link -- typically the consumer-facing passport page.