Why identifiers still matter in an AI-shopping world
AI shopping surfaces route through structured feeds. Feeds route through identifiers. A product without a resolvable GTIN or MPN becomes invisible at the feed layer before any retrieval even happens.
It is tempting to assume that once AI engines can read your product pages directly, product identifiers become legacy infrastructure. The opposite is closer to the truth. ChatGPT Shopping, Google AI Overviews shopping tiles, Perplexity's commerce results, and the Agentic Commerce Protocol all route through structured feeds — Merchant Center, Bing Shopping, ACP JSON, Shopify's own storefront feed — and every one of those feeds still gates product eligibility on clean identifiers. A product with a missing or malformed GTIN does not fail gracefully; it simply does not appear in the AI shopping surface at all, long before any retrieval or ranking consideration.
- GTIN
- Global Trade Item Number. 8, 12, 13, or 14 digits. Issued by GS1. The authoritative unique identifier for a product. Required for most branded goods in Google Merchant Center and ACP.
- GPC
- Google Product Category. Integer ID or string path from Google's product taxonomy. Tells shopping engines which category bucket the product belongs in. Required by Google; respected by Bing and ChatGPT Shopping.
- MPN
- Manufacturer Part Number. Free-form string assigned by the manufacturer. Acts as fallback identifier when GTIN is not applicable — custom goods, private label, handmade.
- Brand
- Case-sensitive, matches Organization schema. Always required. Paired with MPN as the minimum identifier-exists combination when GTIN is absent.
- identifier_exists
- Boolean field on the feed. Set to false only when the product genuinely has no GTIN, MPN, or brand — handmade, bespoke, or one-of-a-kind pieces. Do not abuse as a blanket opt-out.
38%
of Shopify stores audited have at least one top-10 SKU with a missing or malformed GTIN
Surfient feed audit panel, 640 Shopify stores scanned via Merchant Center diagnostics plus direct feed inspection, January-April 2026.
GTIN in detail — formats, checksum rules, and where Shopify stores it
GTIN lives in Shopify's barcode field. The format varies by region and product type. Validator errors cluster around three avoidable mistakes.
GTIN is not a single format. It is a family of four compatible lengths: GTIN-8, GTIN-12 (historically UPC), GTIN-13 (historically EAN), and GTIN-14 (used for case packs and inner packs). For a retail-facing consumer product, you are almost always dealing with GTIN-12 or GTIN-13. Shopify stores the value in the variant-level barcode field — not a metafield, not an option — and this field accepts any of the four lengths without format enforcement. The absence of format enforcement is why malformed GTINs are endemic in Shopify feeds.
How GTIN reaches Shopify barcode
- Manufacturer-supplied — most branded goods ship with a pre-assigned GTIN from GS1 via the manufacturer. Enter exactly as supplied into the variant barcode field.
- GS1 self-assigned — if you are the manufacturer (private label, own brand), you register a GS1 prefix and assign GTINs yourself. Annual fee, one-time setup, legitimate path.
- Resold purchase — buying GTINs from a reseller is possible but increasingly rejected by Google, Amazon, and ACP as non-authoritative. Do not do this.
- No GTIN — genuinely custom, handmade, or one-of-a-kind items have no GTIN. Use MPN plus brand plus identifier_exists false.
The three GTIN errors that keep products out of AI shopping
- 1Checksum failure — the last digit of every GTIN is a check digit derived from the preceding digits via a specific weighted sum. A single transposition invalidates the whole code. Validators reject it silently in some feed contexts and loudly in others.
- 2Reused GTIN — pasting the same GTIN onto multiple products (a common shortcut when bulk-importing) signals catalog dishonesty. AI shopping feeds cluster-analyse GTIN uniqueness and demote the whole catalog when reuse is detected.
- 3Padding with leading zeros or stripping them — GTIN-12 and GTIN-13 are distinct formats. Padding a 12-digit UPC with a leading zero to fake a GTIN-13 works in some contexts and fails in others. Store the actual value, not a padded approximation.
GPC — the taxonomy field that nobody fills in correctly
Google Product Category is an integer ID mapped to a 7,000-entry taxonomy. Wrong GPC values silently exclude products from AI Overviews shopping tiles.
Google Product Category is the single most underestimated feed field. It is an integer ID (or a greater-than-delimited path string) drawn from Google's product taxonomy — a 7,000-entry tree covering categories from Apparel and Accessories greater-than Clothing greater-than Activewear down to Hardware greater-than Fastening and Brackets greater-than Cable Ties. Google enforces it for Merchant Center; ChatGPT Shopping and Bing Shopping respect it for inventory routing. A wrong GPC value does not throw a validator error — it silently routes your product into the wrong tile category, which means the AI surface sees a beauty product categorised as apparel and filters it out of every beauty-intent prompt.
- Taxonomy path format
- Full greater-than-delimited path string, e.g. "Apparel & Accessories > Clothing > Activewear > Yoga Pants".
- Numeric ID format
- Integer drawn from Google's published taxonomy file. "2271" = Yoga Pants.
- Depth matters
- Specific leaf categories outperform generic parent categories. "Yoga Pants" ranks better for yoga queries than "Activewear" or "Clothing".
- Update frequency
- Google publishes taxonomy updates roughly twice a year. Audit your GPC mapping when the taxonomy changes — deprecated categories get silently demoted.
How to map Shopify products to GPC cleanly
- 1Pull the current GPC taxonomy file from Google's product taxonomy page (plain text, greater-than-delimited paths).
- 2For each Shopify collection, pick the deepest leaf category that accurately describes the product — not the parent you are most comfortable with.
- 3Map collection-level GPC via the Shopify Google & YouTube sales channel app, then override per product where a collection has mixed categories.
- 4For edge categories (bundles, gift cards, subscriptions), check Google's special-case documentation before assigning. Some categories are not sellable in Shopping.
- 5Re-audit the mapping once per quarter against the current taxonomy to catch deprecations.
MPN and identifier_exists — the fallback path when GTIN does not apply
Custom goods, private label, and handmade products do not have GTINs. MPN plus brand is the accepted fallback. identifier_exists false is a last resort, not a blanket opt-out.
Not every product has a GTIN. Custom jewellery, handmade pottery, one-of-a-kind vintage pieces, bespoke apparel — these are legitimately outside the GTIN system. The feed specifications provide two fallback mechanisms, both of which are misused. MPN (Manufacturer Part Number) is the primary fallback — a free-form identifier assigned by the manufacturer that, when paired with a brand, satisfies most feed identifier-exists requirements. identifier_exists false is the nuclear option for products that genuinely have no manufacturer identifier, and it is the single most abused field in Shopify feeds.
When MPN plus brand is sufficient
- Private-label goods — your brand manufactures or commissions them, you assign MPNs, Google accepts the combination as identifier-complete.
- Multi-brand resellers without GTIN access — MPN from the manufacturer plus the manufacturer brand. Distinct from reselling without any identifier.
- Custom but reproducible goods — made to order but with a stable SKU definition. MPN works; identifier_exists false does not.
When identifier_exists false is legitimate
- Handmade one-of-a-kind pieces — no SKU repetition, no manufacturer identifier possible.
- Vintage and antique goods — no GTIN, no current manufacturer, no stable MPN.
- Custom-configured build-to-order items where each unit is unique — genuine bespoke work.
- Never for branded goods that happen to lack a GTIN in your import file. Fix the import instead.
Wiring identifiers through Shopify to every AI shopping surface
One clean source per identifier, four destinations. Map once in Shopify, map carefully in the Google & YouTube app, and the same data reaches Merchant Center, Bing, ChatGPT Shopping, and ACP.
The architectural goal is single source of truth inside Shopify, correct mapping out to each feed destination. GTIN lives in variant.barcode, brand lives in product.vendor, MPN lives in a variant-level ai.mpn metafield, GPC lives either in the Google & YouTube app's category mapping or in a product-level metafield when you need overrides. Every feed destination then reads from that single source — no duplicate authoring, no drift between destinations.
- Google Merchant Center
- Shopify Google & YouTube sales channel app reads variant.barcode as GTIN, product.vendor as brand, and category mapping as GPC. Map ai.mpn via the app's custom attribute mapping.
- Microsoft Merchant Center / Bing
- Import directly from Google Merchant Center feed or via Shopify's Microsoft channel app. Field mapping is near-identical.
- ChatGPT Shopping (via ACP)
- Agentic Commerce Protocol feed reads structured identifiers. Shopify support for ACP is rolling out through 2026 — confirm your plan tier supports it.
- Storefront JSON-LD
- Emit gtin, mpn, and brand inside the Product schema on each PDP. Reach retrievers that crawl pages directly without going through a feed. Use the corresponding Schema.org properties: "gtin13", "mpn", "brand".
{% assign variant = product.selected_or_first_available_variant %}
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": {{ product.title | json }},
"brand": { "@type": "Brand", "name": {{ product.vendor | json }} },
{% if variant.barcode %}
"gtin13": {{ variant.barcode | json }},
{% endif %}
{% if variant.metafields.ai.mpn %}
"mpn": {{ variant.metafields.ai.mpn | json }},
{% endif %}
"offers": {
"@type": "Offer",
"price": {{ variant.price | divided_by: 100.0 | json }},
"priceCurrency": {{ cart.currency.iso_code | json }}
}
}
</script>Decide which identifier work to ship first
Three paths depending on the shape of your catalog. The cheapest audit you can run tells you which path is yours.
Every Shopify store we audit falls into one of three identifier profiles. The cheapest thing you can do this week is run a feed diagnostic and figure out which profile you match — the right first move is different for each.
- 1GTIN-clean, GPC-shallow. Your barcodes check out, but your GPC mapping is stuck at the generic parent category. Fix the GPC depth first — it is a one-day project with outsized AI-shopping-tile lift.
- 2GTIN-broken, GPC-fine. Checksum errors, reused codes, or padded formats. Run the checksum audit, correct the broken codes, re-sync the Google channel. Two to four days depending on catalog size.
- 3Identifier-gappy (handmade, private-label, custom). Your catalog legitimately mixes GTIN and MPN goods. Build the ai.mpn metafield, map it through, and audit that identifier_exists false is only on truly identifier-less goods. One week of focused work.
“Identifiers are plumbing. Nobody wants to do the work, but the stores that get the plumbing right are the ones whose products actually show up in ChatGPT Shopping. The ones who skip it spend the next year wondering why their AI surface is empty.”