How to Fix “Missing value [gtin]” in Google Merchant Center
Google expects a global trade item number for products that carry a manufacturer barcode. When the attribute is absent, the offer loses its product match and is disapproved or heavily demoted.
Scan your feed for this error for free
Paste your product feed URL (XML, CSV or JSON). The audit checks Missing value [gtin] along with 25+ other pre-channel rules.
Why this happens
Technical root cause
GTIN lives on the barcode field of a product variant, not on the product itself. Most storefront feed exports either skip that field, export it only when every variant has one, or emit an empty tag — which Google reads as a missing value rather than an intentional exemption.
Google Merchant Center reports it as Missing value [gtin] and applies: Product disapproval in Google Shopping & Performance Max.
Native CMS friction
Shopify
The barcode field is per-variant and optional. Native Google channel exports drop it when merchandisers leave it blank, and there is no bulk way to declare identifier_exists = no for custom-made goods.
VTEX
EAN lives on the SKU entity while the feed is usually built from the product entity, so the identifier is lost during flattening.
WooCommerce
There is no native GTIN field. Values sit in arbitrary custom meta keys that differ per plugin and never reach the default XML export.
Fixing it manually
- 1
Open Merchant Center → Products → Needs attention and download the affected item IDs.
- 2
Collect the manufacturer barcode (EAN-13, UPC-A, ISBN or ITF-14) for each item from your supplier catalog.
- 3
Load the barcode into the product variant field your feed exports and strip spaces, dashes and leading apostrophes.
- 4
For genuinely identifier-free products (handmade, private label, custom bundles) set identifier_exists to no instead of inventing a code.
- 5
Re-upload the feed and wait for the next Merchant Center crawl to clear the disapproval.
The IRONFEED automated solution
One rule, applied to every product on every export. No spreadsheets, no re-uploads.
IF gtin IS EMPTY AND brand IS NOT EMPTY
SET gtin = lookup('gtin_table', sku)
ELSE SET identifier_exists = 'no'Run automatic linter checks before Google Merchant Center crawls your feed. IRONFEED validates every export against the channel spec, so this error is caught in Feed Review instead of in your channel dashboard.
Attribute requirements
| Attribute | Google Merchant Center requirement | Accepted format | IRONFEED transformation |
|---|---|---|---|
gtin | Required when the product has a manufacturer barcode | 8, 12, 13 or 14 digits, valid check digit, no spaces | Lookup table by SKU + digit-only normalisation and check-digit validation |
identifier_exists | Required when gtin and mpn are absent | yes | no | Auto-set to no when the GTIN lookup returns nothing |
mpn | Recommended fallback identifier | Free text, manufacturer part number | Mapped from the supplier reference column when present |
Frequently asked questions
Related Feed Issues & Fixes
Other critical errors affecting catalog performance on Google, Meta, TikTok, and Mercado Libre.
Invalid value [gtin]
Barcodes are stored as text and get mangled on the way out: spreadsheets strip leading zeros, ERP exports pad with spaces, and staff paste SKU codes or internal references into the barcode field.
View Fix & RuleImage too small [image_link]
Feeds frequently export the thumbnail rendition instead of the master asset, because the thumbnail is the URL the storefront exposes first in its product payload.
View Fix & RuleCombinación de variantes no válida para la categoría
Store catalogs allow arbitrary option names such as material, flavour or pack size. Mercado Libre rejects axes its category does not define, and it also rejects two variants that resolve to the same combination.
View Fix & RuleLooking for a different error?