EUlabel
Concepts

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:

AudienceDestinationData Served
ConsumerPassport pageIngredients, nutrition, allergens, product story
RegulatorCompliance datasetMachine-readable JSON-LD conformity data
RetailerLogistics viewBatch info, supply chain data
RecyclerMaterial dataPackaging 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 page

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=linkset

GTIN 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

ResponseCondition
307 Temporary RedirectSuccessful resolution -- redirect to target URL
400 Bad RequestMalformed or invalid GS1 Digital Link URI
404 Not FoundValid 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.

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.

On this page