Intelligence 8 min read

Listed. In stock. The wrong bottle.

The GTIN has sat in product databases since 1974. Most e-commerce teams treat it as a compliance field. AI shopping agents treat it as the only reliable way to know what they're buying. When it's missing from schema markup, agents guess. We tracked what happens when they do.

The first product ever scanned at a retail checkout was a pack of Wrigley's chewing gum, at a Marsh supermarket in Troy, Ohio, in 1974. That scan ran on the barcode system that eventually became the GS1 standard GTINs are built on today. Fifty years later, most e-commerce teams still treat the GTIN as a compliance field. Something to fill in so the listing goes live.

A GTIN is a Global Trade Item Number. Thirteen or fourteen digits, issued under the GS1 standard, globally unique, tied to a specific product at a specific packaging level. Not a retailer SKU that changes by platform. Not a product name that varies by market. One number, one product, everywhere.

 674545  00000  1   ← GTIN-12 (UPC-A, the format from that 1974 checkout)
 ------  -----  -
 company  item  check digit
 prefix   ref   (GS1 algorithm: multiply each digit by alternating weights
                 of 1 and 3, sum, subtract from next multiple of 10.
                 Transpose any two digits and the scan fails — hard error,
                 no fuzzy match, no guess.)

 GTIN-13 in schema.org:  0 674545 00000 1   ← zero-padded to 13 digits
 GTIN-14 in catalogue:  00 674545 00000 1   ← indicator digit prepended

When that number appears in the schema.org Product markup on a product page, an agent can unambiguously identify the item and match it across every retailer in the network:

{
  "@type": "Product",
  "name": "Don Julio Blanco Tequila 750ml",
  "gtin13": "0674545000001",
  "offers": {
    "@type": "Offer",
    "price": "44.95",
    "priceCurrency": "GBP",
    "availability": "https://schema.org/InStock"
  }
}

Most product pages have the name and the price. Almost none have the GTIN.

Agents don't browse. A purchase intent arrives and a structured data scan begins. The agent needs to know if it has the right product, at the right price, actually in stock. The GTIN is what makes the first question answerable with any certainty. It is the one signal that connects a product on a brand's own site to the same product on a retailer page, without falling back to name matching.

Without it, the agent guesses. And guessing looks a lot like confidence right up until the wrong bottle arrives at the door. The order doesn't fail. There's no error, no flag raised. The customer gets the 70cl. They wanted the 750ml. By the time the dispute reaches a human, the agent has moved on. The brand loses the sale and the relationship, and the reason is a thirteen-digit number that nobody put in the right field.

The retailer problem brands aren't tracking

A brand can invest heavily in its own DTC site, get the schema right, structure the pricing and availability signals correctly, and still be invisible to agents on every retailer site where the majority of its volume actually moves. Those retailer sites are not in the brand's control. Nobody on the brand side is watching them. And retailers have little incentive to prioritise any single brand's agent-readiness. The GTIN exists in the listing. The structured data around it usually does not.

The GTIN is present in the product database. It is just not on the page. An agent scanning that page has no way to know they are the same thing.

Aidō Lighthouse brand dashboard showing 10 products tracked across 9 retailers with active monitoring status

The Aidō Lighthouse brand view: 10 products tracked across 9 retailers, with active monitoring across the retail network. Each product gets a per-retailer agent-readiness score updated on every scan.

What we found when we looked

We tracked 10 products with valid GTINs across nine retail partners for a major spirits brand. Agents could not correctly identify a single product on any retailer site.

Not because the products were unlisted. They were listed. The GTINs existed in the brand's catalogue. The products were in stock, priced, and reachable. But the structured data agents rely on was absent or incomplete across every retailer in the network.

10
products with valid GTINs in brand catalogue
9
retail partners scanned across the network
0
products agents could identify with confidence

To show what this looks like in practice, here is a scan we ran on a publicly listed product. Don Julio Blanco Tequila 750ml, GTIN 00674545000001, on drinksdirect.com. In stock, priced at £44.95, fully accessible to bots. Agent readiness score: 47/100. The problem: no GTIN in the schema.org markup. Without it, the agent fell back to name matching. Name matching returned "Don Julio Blanco Tequila 70cl" at 70% confidence. Wrong variant. An agent acting on that match buys the wrong bottle.

Aidō Lighthouse product scan showing 47/100 agent readiness score, name match at 70% confidence returning wrong product variant, and missing gtin13 from schema.org fields

The Aidō Lighthouse product scanner on a publicly listed spirits product. Bot accessibility: 30/30 (agents can reach the page). Schema quality: 21/40 (no GTIN in markup). The scanner fell back to name matching and returned the 70cl variant instead of the 750ml. The product is right there. The match is wrong.

Score breakdown

The page is accessible. The data is not machine-readable.

Schema quality
21/40
No gtin13 in markup
Bot accessibility
30/30
Agents can reach the page
Offer completeness
20/20
Price exposed
Availability signal
10/10
InStock confirmed

The product is not blocked, not hidden, not out of stock. The only reason agents cannot reliably identify it is a missing gtin13 field in the schema.org markup. Everything else is fine.

The fix is a single field. Add gtin13 to the schema.org Product markup on the page. The GTIN already sits in the product database. It just needs to surface where agents can read it.

The protocols coming don't fix this

There is a reasonable temptation to assume that the emerging agentic commerce standards will sort this out. They will not. ACP, UCP, and MCP are the protocols being built so agents can communicate directly with merchants and transact on behalf of users. They all depend on accurate, machine-readable product data at the page level. A protocol cannot create schema markup that was never implemented. The infrastructure has to exist before the protocol can use it.

A Checkout.com 2026 survey of Heads of Payments found that better product standards, specifically structured catalogues and substitution data, rank as the single biggest accelerator for agentic commerce readiness. Ahead of protocol adoption. Ahead of payment infrastructure. Nearly four in ten US merchants in that survey expect agents to account for 10% of their online transactions within six to eleven months. The merchants closest to being ready have identified the catalogue layer as the problem. Most just cannot measure it yet.

What we built to measure it

Using a brand's GTIN catalogue as the anchor, Aidō scans every retailer site where those products appear. For each product, on each retailer, we check whether an agent can find it, read it correctly, understand the variant attributes, confirm availability, and progress to purchase.

The output is an Agent Readiness Matrix: product by product, retailer by retailer, showing exactly where the catalogue holds up and where it breaks down. Not a single domain score. A cross-retailer picture of how your products actually appear to agents in the wild.

The brands that lose agentic commerce traffic will not lose it because their products are poor. They will lose it because the data layer underneath them was never built for machines to read.

See where your catalogue stands

We scan your products across your retail network and show you exactly what agents can and cannot find, product by product, retailer by retailer.

Get your readiness matrix
The WAF paradox