Google Merchant CenterCriticalProduct disapproval in Google Shopping & Performance Max

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.

Free, no signup

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. 1

    Open Merchant Center → Products → Needs attention and download the affected item IDs.

  2. 2

    Collect the manufacturer barcode (EAN-13, UPC-A, ISBN or ITF-14) for each item from your supplier catalog.

  3. 3

    Load the barcode into the product variant field your feed exports and strip spaces, dashes and leading apostrophes.

  4. 4

    For genuinely identifier-free products (handmade, private label, custom bundles) set identifier_exists to no instead of inventing a code.

  5. 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.

Rule syntax
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

Google Merchant Center attribute requirements for Missing value [gtin] and the matching IRONFEED transformation
AttributeGoogle Merchant Center requirementAccepted formatIRONFEED transformation
gtinRequired when the product has a manufacturer barcode8, 12, 13 or 14 digits, valid check digit, no spacesLookup table by SKU + digit-only normalisation and check-digit validation
identifier_existsRequired when gtin and mpn are absentyes | noAuto-set to no when the GTIN lookup returns nothing
mpnRecommended fallback identifierFree text, manufacturer part numberMapped from the supplier reference column when present

Frequently asked questions

No. Google validates the check digit and cross-checks the code against its product catalog. An invalid or reused GTIN escalates from a product disapproval to an account-level warning.

Send identifier_exists = no. That is the documented way to declare an exemption for handmade, custom or private-label goods.

Yes. The linter runs the check-digit test on every export and flags invalid codes in Feed Review before the feed is published.

Related Feed Issues & Fixes

Other critical errors affecting catalog performance on Google, Meta, TikTok, and Mercado Libre.