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:
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.).
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.
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).
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 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) or05,98,99(coupon ranges) - Multiple products with the same GTIN but different variant attributes, each colour/size variant needs its own GTIN
When you don't have the GTIN
Not having a GTIN doesn't mean guessing. Three options, in order:
- 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.
- 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.
- 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 type | GTIN | MPN | Brand |
|---|---|---|---|
| Widely manufactured product | Required if assigned | Recommended | Required |
| No GTIN (OEM part, store brand) | Don't submit | Required | Required |
| Custom / handmade product | Don't submit | Optional (assign your own) | Required (use store name) |
| Manufacturer-created bundle | Bundle's GTIN | Bundle's MPN | Bundle's brand |
| Retailer-created bundle | Main product's GTIN | Main product's MPN | Main product's brand |
| Manufacturer-created multipack | Multipack's GTIN | Multipack's MPN | Multipack's brand |
| Retailer-created multipack | Individual product's GTIN | Individual product's MPN | Individual product's brand |
| Variants (colour, size) | Unique GTIN per variant | Per variant (apparel sizes may share) | Same across variants |
| Books | ISBN-13 in gtin field | Not applicable | Publisher name |
| Digital download | Required (can reuse physical GTIN) | Optional | Required |
| Compatible / refurbished | Product's own GTIN | Actual manufacturer's MPN | Actual manufacturer's brand |
| Private-label product | Don't submit | Use internal SKU here | Your store name |
| Vintage / antique (used) | Submit if known | Optional | If manufacturer known |
| Magazine subscriptions | Convert ISSN to GTIN | Optional | Publisher |
| Medication (US) | Convert NDC to GTIN | Optional | Manufacturer |
| Printed music | Convert ISMN to GTIN | Optional | Publisher |
Frequently asked questions
mpn [mpn]: still not in gtin [gtin].02, 04, 2) or coupon range (05, 98, 99).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
- Google Merchant Center: About unique product identifiers
- Google Merchant Center: GTIN [gtin] attribute reference
- Google Merchant Center: MPN [mpn] attribute reference
- Schema.org: Product type — identifier properties
- GS1: GEPIR product lookup
- MagsTags: E-commerce Schema Markup: Rich Results, Google Shopping & Scale — schema implementation and prioritisation
- MagsTags: Product vs ProductGroup Schema — variants and schema types
- MagsTags: Merchant Listing Schema Generator — generate valid JSON-LD with GTIN and identifier fields