> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://tieback.io/docs/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://tieback.io/docs/_mcp/server.

# Resolver and GS1 Digital Link

> How tieback resolves GS1 Digital Link identifiers into a Digital Product Passport, so every printed QR code keeps working for the life of the product.

This page explains how **tie*back*** turns a scanned identifier into a Digital Product Passport. The resolver connects a physical code (GTIN, EAN or UPC) to the correct product record, with consistent routing, market aware presentation and controlled lifecycle visibility.

## What does the resolver do?

The resolver gives every product identifier a permanent public URL. When a consumer scans a barcode or follows a link, the resolver maps that identifier to the right product and sends the scan onward to the passport. Codes you printed years ago keep resolving, including identifiers you have since retired.

<rect x="8" y="30" width="150" height="60" rx="10" fill="none" stroke="currentColor" stroke-width="1.5" />

<text x="83" y="65" text-anchor="middle" font-size="13" fill="currentColor" />

<rect x="198" y="30" width="150" height="60" rx="10" fill="none" stroke="currentColor" stroke-width="1.5" />

<text x="273" y="65" text-anchor="middle" font-size="13" fill="currentColor" />

<rect x="388" y="30" width="150" height="60" rx="10" fill="none" stroke="currentColor" stroke-width="1.5" />

<text x="463" y="65" text-anchor="middle" font-size="13" fill="currentColor" />

<rect x="578" y="30" width="134" height="60" rx="10" fill="none" stroke="currentColor" stroke-width="1.5" />

<text x="645" y="65" text-anchor="middle" font-size="13" fill="currentColor" />

<path d="M158 60 H198 M348 60 H388 M538 60 H578" stroke="currentColor" stroke-width="1.5" />

## Who it is for

Supply chain participants, consumers scanning product codes, and systems integrating with GS1 Digital Link.

## How it works

### Permanent brand domain

Every brand is assigned a permanent resolver subdomain:

```
<brand-subdomain>.tieback.io
```

This is the canonical domain for public scan paths. It stays the same even when the brand's display name changes.

### GS1 Digital Link path

The resolver supports the GS1 Digital Link URI structure:

```
https://<brand>.tieback.io/01/<GTIN>
```

Optional path segments are also supported:

* `/10/<batch>` for the batch or lot number
* `/21/<serial>` for the serial number

Example:

```
https://acme.tieback.io/01/05060012345678
https://acme.tieback.io/01/05060012345678/10/LOT-A/21/001
```

### Non-GS1 fallback paths

Brands that are not yet GS1 ready can use internal identifier paths:

| Pattern               | Description              |
| --------------------- | ------------------------ |
| `/mu/<MINT_UNIT_ID>`  | Resolve by mint unit ID  |
| `/mb/<MINT_BATCH_ID>` | Resolve by mint batch ID |
| `/ml/<MINT_LOT_ID>`   | Resolve by mint lot ID   |

These IDs are UUIDs. The resolver confirms the entity belongs to the brand that owns the scanned domain.

### Resolution strategy

#### Active identifier first

If the GTIN is currently active on a product, it resolves immediately.

#### History fallback

If no active match exists, the resolver uses the most recently retired match, so old packaging
keeps working.

#### Identifier only

The resolver returns the product reference and issues a redirect. Product data stays private.

The resolved product reference is used to redirect to `/p/<product-id>`.

### Activation state and scanning

Activation is set by the brand: either the passport is live the moment it is issued (activated at mint), or it is issued inactive and activated later by the brand, for example when the unit is packed, shipped or sold. Scanning changes nothing. The scan destination resolves for a unit in either state, and the passport reflects whichever state the brand has set.

### Cache behaviour

Responses are cached when the resolution is stable and served fresh when a unit's state has recently changed, so consumers always see current content.

### Wrong domain behaviour

If a scan request arrives on a platform host such as `app.tieback.io`, `docs.tieback.io` or the root `tieback.io`, the resolver leaves it alone. Those hosts serve the application, documentation and marketing site. Product resolution runs only on a brand's resolver subdomain or verified custom domain.

### Query string preservation

Query parameters appended to a scan URL are preserved through the redirect, so downstream systems can pass tracking or context parameters.

## Privacy

Scanning requires no consumer account and builds no personal profile. Telemetry supports aggregate analytics and product integrity signals. IP data is retained for a defined retention period and then masked. The platform tracks products rather than people. See [Data and Privacy](/passport-intelligence/data-privacy).

## Limits and notes

* The resolver is public, so no authentication is required.
* Only the product reference is returned. Product details, pricing and sensitive data stay private.
* GTIN paths (`/01/...`) and fallback paths (`/mu/`, `/mb/`, `/ml/`) are both supported.
* Batch (`/10/...`) and serial (`/21/...`) segments are captured and used for unit and lot resolution.
* Fallback IDs must be valid UUID strings. Invalid UUIDs return `not_found`.

## FAQ

#### What happens if a GTIN has been retired?

The resolver falls back to the most recently retired match, so printed codes on stock already in
the market continue to reach the correct product.

#### Is any product data exposed publicly?

No. The resolver returns only the internal product reference and issues a redirect. Product
names, descriptions and pricing stay private.

#### Can I use a custom domain for the resolver?

Yes. Verified custom domains are supported alongside the permanent brand subdomain on
tieback.io.

#### What if someone scans a code on the wrong domain?

Scan requests arriving on platform hosts such as the application or documentation site are left
unprocessed. Resolution happens on the brand's assigned subdomain or verified custom domain.

#### Does a scan activate the unit?

No. Activation is a brand controlled decision, taken at mint or later, and a scan resolves the
destination whatever the current activation state.

## Related Docs

* [Product Identifiers](/product-module/identifiers)
* [Products](/product-module/products)
* [Architecture](/getting-started/architecture)
* [Minting Overview](/minting/overview)