Feed error
WarningMissing value: GTIN
The "Missing value: GTIN" issue means a channel believes a product has a manufacturer-assigned barcode but the feed did not supply one. On Shopify it almost always traces back to the variant barcode field, which is optional in the admin and therefore left empty across large parts of most catalogues.
How this appears in your account
The exact wording the channel shows, so you can match what you are looking at.
- Missing value: GTIN [gtin]
- Missing GTIN
- Limited performance due to missing identifiers [gtin, mpn, brand]
What it affects
- Channels
- Google Shopping Microsoft Advertising
- Attributes
- gtin mpn brand identifier_exists
- Scope
- A subset of items
Why it happens on Shopify
The variant barcode field is empty in Shopify
Barcode is optional on a Shopify variant and is not validated, so it is commonly blank on products imported from a supplier sheet, created by hand, or migrated from another platform. An empty barcode produces an empty gtin column.
The barcode holds something that is not a GTIN
Merchants often reuse the barcode field for an internal reference, a supplier code or a shelf location. The feed then submits a value that is structurally not a GTIN, which reads as missing or invalid rather than as a real identifier.
The product genuinely has no GTIN but nothing says so
Custom, handmade and own-brand goods have no manufacturer-assigned barcode. Without an explicit identifier_exists declaration, the channel assumes the identifier should exist and reports it as missing.
The barcode sits on the product rather than the variant
Feeds built at product level rather than variant level have nowhere to read a per-variant barcode from, so every row inherits one value or none. Each size and colour has its own GTIN in reality.
How to fix it
-
Establish how much of the catalogue is actually affected
Before changing anything, count the variants with an empty or non-numeric barcode. The fix is different for a handful of products than for a supplier category with thousands, and the count tells you which problem you have.
-
Fill in the barcodes that exist
For branded retail goods the GTIN is printed on the packaging and is usually available from the supplier as a bulk list. Import it into the variant barcode field. This is the only fix that genuinely resolves the issue for products that have identifiers.
-
Supply brand and mpn where there is no GTIN but the manufacturer is known
Channels accept the combination of brand and manufacturer part number in place of a GTIN. Map brand from a reliable source rather than assuming the Shopify vendor field is correct, and use the manufacturer's published part number rather than your own SKU.
-
Declare identifier_exists as no for genuinely unidentified products
For custom, handmade, vintage and made-to-order goods, set identifier_exists to no. This is a legitimate declaration for those items. Applying it across the whole catalogue to silence the warning removes your products from identifier-based matching and usually costs more than the warning does.
-
Validate at generation time rather than after upload
Check the barcode is 8, 12, 13 or 14 digits and passes its check digit before it reaches the feed. Routing invalid values to the brand and mpn fallback instead of submitting them keeps the feed clean without hiding the underlying data gap.
How feedlab handles this
feedlab treats identifiers as a conditional chain rather than a single mapping: use the variant barcode when it is structurally valid, fall back to brand and mpn when it is not, and set identifier_exists only for the products that genuinely have no identifier. The rule preview shows which products land in each branch against your real catalogue before the feed is published.
Frequently asked questions
Will missing GTINs get my products disapproved?
Usually not on its own. Missing identifiers are typically reported as a warning describing limited performance rather than a disapproval, so the items still serve but compete less effectively because the channel cannot match them to the same product elsewhere.
Can I just set identifier_exists to no for everything?
It silences the warning but it is the wrong fix for products that do have barcodes. The declaration removes items from identifier-based matching, which generally costs more performance than the original warning. Reserve it for genuinely unidentified goods.
Where is the GTIN stored in Shopify?
In the barcode field on each variant, under inventory in the variant editor. It is per variant rather than per product, because each size and colour has its own barcode in reality.
Primary sources
Channel specifications change. These are the official documents this page is based on.