Product Identifiers for Ecommerce SEO: GTIN, MPN, SKU, Brand and What Google Actually Matches

Somewhere in your Merchant Center feed, there is almost certainly a GTIN field containing a value that is not a GTIN. It uploaded without errors. It has been there for a while. Nothing in your diagnostics is on fire.

That's the problem. The Google documentation covers the definitions. What it doesn't cover is what actually goes wrong at scale, why it's invisible until it isn't, and how to find it before it costs you.

GTIN, MPN, SKU, Brand: The Field Confusion Problem

The confusion rarely happens in a meeting. It happens when a feed template needs to be filled, there's a column called "GTIN [gtin]", and the person doing the mapping looks at the internal product codes column and thinks: close enough.

It isn't. Here's the functional difference between the four identifier fields:

Global standard

GTIN, Global Trade Item Number

A unique product identifier (UPI) assigned by the manufacturer, registered with GS1, globally unique. The same GTIN identifies a product whether you're selling it, your competitor is, or a retailer in another country is. Google uses it to match your listing to a known product entity in its knowledge graph, price comparisons, Shopping knowledge panels, AI Overview signals all depend on that match.

Types: UPC (GTIN-12, 12 digits, North America), EAN (GTIN-13, 13 digits, outside North America), JAN (GTIN-13, 8 or 13 digits, Japan only), ISBN-13 (books), GTIN-14 (multipacks), GTIN-8 (small products). GTINs are the numbers printed beneath the barcode on retail packaging. In schema, use gtin (generic) or the specific subtype (gtin12, gtin13, etc.).

Manufacturer assigned

MPN, Manufacturer Part Number

A unique product identifier (UPI) assigned by the manufacturer for their own catalogue. Alphanumeric, 1–70 characters. Unique within a manufacturer's range, not globally. Required for all products without a GTIN. Always submitted alongside brand: neither alone is sufficient for matching. Schema.org property: Product.mpn.

Context required

Brand

Required for products with a clearly associated manufacturer. On its own, it does not identify a specific product, it gives Google a manufacturer name but no product-level match. Always paired with MPN when GTIN isn't available. String, 1–70 characters. Schema.org property: Product.brand (type: Brand).

Internal only

SKU, Stock Keeping Unit

Your internal product code. It belongs to your catalogue management system. Google does not use it for product matching, rich results eligibility, or Shopping performance. In schema, the sku property is supported but not used for matching. In Merchant Center, your SKU typically maps to id [id]: your primary item identifier. It does not go in gtin [gtin].

What actually breaks: Google Shopping, Merchant Center, and silent underperformance

Internal SKUs in the GTIN field

The most common issue in feed audits. It gets through Merchant Center validation because the system doesn't always reject invalid GTINs on ingestion, it flags them later, or not at all if the value happens to pass a loose format check.

The result: products appear in Google Shopping but never get matched to a product entity. No price comparison panel. No Shopping knowledge panel. Weaker signals for AI Overviews on product queries. You won't see this as a clear error, it's silent underperformance.

Missing GTINs on products that have them

Google states this explicitly: products with an assigned GTIN submitted without one may have limited visibility. In practice, Google Shopping impressions are lower than they should be relative to competitors selling the same product. The product exists in the feed, it shows, but it's not being matched with full confidence. No diagnostics warning. You find it by comparing impression share against competitors for identical products.

MPN without brand (or brand without MPN)

Submitting MPN alone gives Google an alphanumeric string with no manufacturer context. Some MPNs are short enough that they could belong to dozens of manufacturers. Without brand to anchor it, the identifier is effectively useless for matching. The reverse is also true: brand without MPN tells Google who makes the product, not which product. Submit both or neither.

Copying GTINs from similar products

If you can't find the GTIN, it's tempting to use the GTIN of a similar variant. This leads to disapprovals. A GTIN mismatch, where your submitted GTIN doesn't match the product Google expects to find at that URL, is one of the harder errors to diagnose because it doesn't always produce an explicit error. It produces silence: no match, no Shopping features, no explanation in Merchant Center diagnostics.

SKU in schema vs item ID in the feed

This one doesn't break rich results, but it creates a data reconciliation problem that gets painful at scale. In schema markup, the sku property outputs your internal product reference. In Merchant Center, the id [id] attribute is your primary item identifier, and most teams map their internal SKU to that field.

These two values should be consistent. When they aren't, schema says PROD-001-BLK, feed item ID says 1234567: you lose the ability to trace a Search Console rich result error back to the specific feed item. When Merchant Center flags a product for a price mismatch or identifier issue, you need to match it to a URL. When Search Console flags a structured data issue, you need to match it to a feed item. Inconsistent internal references across schema and feed make that cross-referencing significantly harder, especially on catalogues with thousands of SKUs.

The rule that matters most: submitting no identifier is better than submitting a wrong one. An absent GTIN results in limited visibility. An incorrect GTIN results in a disapproval and breaks Shopping eligibility entirely.

The schema vs Merchant Center feed alignment gap

Product identifiers live in two places: your on-page schema markup and your Merchant Center feed. Different teams, different update cycles, different source systems. They drift, and when the GTIN in your schema disagrees with the GTIN in your Google Shopping feed, Google has two conflicting signals and no way to know which is right.

What it is Schema property Merchant Center attribute Used for matching?
GTIN gtin, gtin12, gtin13, gtin8, gtin14 gtin [gtin] Yes, primary signal
MPN mpn mpn [mpn] Yes, with brand
Brand brand → nested Brand with name brand [brand] Yes, with MPN
Internal SKU sku id [id] (item ref, NOT gtin) No

Schema and feed drift apart. A GTIN gets corrected in the feed but the page template doesn't get touched. A product gets relaunched under a new identifier and the feed is updated, but the schema is generated from a cached data layer that nobody remembered to flush. The feed gets a new MPN from the manufacturer; the schema still has the old one. None of these produce an error. Google just sees two sources disagreeing, weights its confidence accordingly, and moves on.

The practical check: pull a sample of 20 high-traffic PDPs. Compare the gtin in the schema against the gtin in the Merchant Center feed for the same product. They should be identical. If they're not, you have a data alignment problem that affects both your structured data signals and your Google Shopping eligibility, and no amount of schema tweaking will fix it.

The GTIN coverage audit

Before optimising anything else, know your actual GTIN coverage across your ecommerce catalogue. Pull your Merchant Center feed and run a count: how many products have a non-empty, non-SKU value in the GTIN field? Segment by product category. Fashion and electronics typically have high GTIN coverage; custom goods, private label, and some niche categories legitimately won't.

What you're looking for is products that should have GTINs but don't, and products where the GTIN field contains an internal code.

Signals that something's wrong:

  • GTIN values the same length as your internal SKUs, typically 6–10 characters vs the 8, 12, 13, or 14 digits GTINs require
  • GTIN values containing letters, GTINs are numeric only
  • GTIN values starting with restricted prefixes: 02, 04, 2 (internal use) or 05, 98, 99 (coupon ranges)
  • Multiple products with the same GTIN but different variant attributes, each colour/size variant needs its own GTIN
Run your GTINs through the GS1 check digit calculator at gs1.org. The last digit is mathematically derived from the preceding digits, if it doesn't validate, the GTIN is wrong. This takes minutes to script against a feed export and catches a significant proportion of invalid values immediately.

When you don't have the GTIN

Not having a GTIN doesn't mean guessing. Three options, in order:

  1. Find the GTIN. Check the product packaging. Ask the manufacturer or distributor. For some categories, GS1's GEPIR database at gepir.gs1.org is searchable. For books, ISBNdb.com or Google Books. This is the right answer for widely manufactured products, if there's a GTIN assigned, find it.
  2. Submit brand + MPN. For products where a GTIN genuinely isn't assigned (OEM parts, store brand products, custom goods) submit both. Neither alone is sufficient. If you're the manufacturer with no assigned MPN, assign one. Your internal part number or catalogue reference works. You are the manufacturer, so this is legitimate.
  3. Submit nothing in the identifier fields. Only for products where no identifiers exist and none can reasonably be assigned. Custom artwork, one-of-a-kind vintage items. Don't fabricate values.

Product type reference

The standard rules change for specific product types. A reference:

Product typeGTINMPNBrand
Widely manufactured productRequired if assignedRecommendedRequired
No GTIN (OEM part, store brand)Don't submitRequiredRequired
Custom / handmade productDon't submitOptional (assign your own)Required (use store name)
Manufacturer-created bundleBundle's GTINBundle's MPNBundle's brand
Retailer-created bundleMain product's GTINMain product's MPNMain product's brand
Manufacturer-created multipackMultipack's GTINMultipack's MPNMultipack's brand
Retailer-created multipackIndividual product's GTINIndividual product's MPNIndividual product's brand
Variants (colour, size)Unique GTIN per variantPer variant (apparel sizes may share)Same across variants
BooksISBN-13 in gtin fieldNot applicablePublisher name
Digital downloadRequired (can reuse physical GTIN)OptionalRequired
Compatible / refurbishedProduct's own GTINActual manufacturer's MPNActual manufacturer's brand
Private-label productDon't submitUse internal SKU hereYour store name
Vintage / antique (used)Submit if knownOptionalIf manufacturer known
Magazine subscriptionsConvert ISSN to GTINOptionalPublisher
Medication (US)Convert NDC to GTINOptionalManufacturer
Printed musicConvert ISMN to GTINOptionalPublisher

Frequently asked questions

Can I use my internal SKU as the GTIN?
No, with one exception. SKU is an internal identifier and won't be used for product matching. The one legitimate case: private-label products where you're the only seller and no GTIN exists. In that case, your SKU goes in mpn [mpn]: still not in gtin [gtin].
What if I can't find the GTIN for a product I resell?
Check the product packaging first. If you don't have the physical product: ask the manufacturer or distributor directly, search GS1's GEPIR database at gepir.gs1.org, or for books use ISBNdb.com or Google Books. If the product genuinely has no assigned GTIN, submit brand + MPN instead. Do not copy a GTIN from a similar product.
Is brand + MPN as effective as GTIN?
Not quite. GTIN is globally unique and unambiguous, Google can match it with certainty. Brand + MPN is unique within a manufacturer's range and requires Google to verify the combination. For widely distributed products, GTIN gives better Shopping performance. For products without GTINs, brand + MPN is the correct and accepted approach.
My products pass Rich Results Test but aren't showing product rich results. Could identifiers be the cause?
Possibly. Missing or incorrect GTINs reduce Google's confidence in the product match and can reduce Shopping feature eligibility. More immediate causes: price mismatch between schema and page, or a missing required property in the Offer node. Check Merchant Center diagnostics for identifier-related warnings alongside Search Console's Rich Results report. See E-commerce Schema Markup: Rich Results & Google Shopping for the full picture.
How do I validate a GTIN quickly?
Use the GS1 check digit calculator at gs1.org. The last digit is mathematically derived, if it doesn't match, the GTIN is wrong. Also check: digit count (12 for UPC, 13 for EAN, 8 for GTIN-8, 14 for GTIN-14), numbers only (no letters), and that the prefix isn't in a restricted range (02, 04, 2) or coupon range (05, 98, 99).
What's the identifier_exists attribute and should I use it?
identifier_exists [identifier_exists] flags products with no identifiers. Google's current guidance: simply omit the identifier fields if no valid identifier exists. Don't set identifier_exists: false when you could submit a store name as brand + a self-assigned MPN. Using it incorrectly can cause disapprovals.

Sources

Mags Sikora
Freelance SEO Consultant, SEO Director

Senior SEO Strategist with 18+ years leading search programmes for enterprise and global businesses. Director of SEO at Intrepid Digital. Specialises in the parts of SEO that are hard to fake and harder to fix: technical architecture, structured data, and international implementations.