First work out which of the three cases you are in
A missing GTIN message means Google could not find a valid global trade item number for the product. What you do next depends entirely on whether one exists.
Case one: the product is made by someone else and carries a barcode. A GTIN is the number behind a UPC, EAN, JAN or ISBN, printed on the packaging. It exists, you just have not sent it. Find it and put it in the right field.
Case two: you make the product yourself, or it is genuinely custom, handmade or one of a kind, and no manufacturer has ever assigned it a number. Here you tell Google that no identifier exists and supply brand and MPN instead.
Case three: you sent a number and it was rejected. Invalid rather than missing, though the two get confused. This is usually a check digit failure, a truncated number, a leading zero stripped by a spreadsheet, or an internal SKU sitting in the barcode field.
Sort your affected products into those three groups before touching anything. The fixes are different and applying the wrong one across the catalogue creates a bigger cleanup than the one you started with.
For resold products, get the barcode into the variant field
On Shopify the variant barcode field is what maps to GTIN, so that is where the number belongs. Not the SKU field, not a metafield, not the title.
Get the numbers from the source rather than from a lookup site. Your supplier, the manufacturer's product data sheet, or the physical packaging. Barcode databases contain plenty of wrong entries, and a number that belongs to a similar but different product will pass validation and then mismatch, which is harder to diagnose than a blank field.
Watch out for spreadsheet damage. Barcodes are strings, not numbers. Opening a CSV in a spreadsheet application will happily strip a leading zero, convert a long number to scientific notation, or round the last digit. Format the column as text before you import, and check a few values after the upload rather than trusting the row count.
Set the number per variant, not per product. Each size, colour and pack size has its own barcode, and giving five variants the same number is a duplicate identifier problem waiting to appear.
Then wait for the next sync and recheck the diagnostics. Do not bulk edit again until you have seen the result of the first pass.
For products you make, declare that no identifier exists
If nobody has ever assigned a barcode to the product, the correct answer is not to leave the field blank and hope. It is to tell Google explicitly that no identifier exists, and to provide the alternatives.
That means three things together. Set the brand to your own brand name, exactly as it appears on your site and packaging. Set an MPN, which for a maker is usually your own model or style code, consistent across variants of the same design. And set the identifier exists flag to false, which the Shopify channel and most feed tools expose as a setting or a rule.
Do this only where it is true. Declaring no identifier exists on products that clearly do have barcodes, for example branded goods you resell, is the fastest way to move from a warning to an account level problem. Google can tell, because the same products appear elsewhere with their real numbers.
If you sell a mix, split the catalogue by vendor or by a tag and apply the rule to the maker side only. A single sitewide rule is convenient and usually wrong.
Unbranded generic goods are the awkward middle. If there is genuinely no brand and no identifier, expect limited visibility, because Google cannot tell your listing apart from a hundred identical ones.
Why it is worth fixing rather than living with
Depending on the category and the current policy state, a missing identifier can appear as a warning rather than a hard disapproval, which tempts stores to ignore it. That is a mistake for a practical reason: the identifier is how Google connects your listing to everything it already knows about that product.
With a valid GTIN, your item can be matched to the product Google recognises, which affects where it can appear, how it is grouped against other offers and how confidently the system can match it to a specific search. Without one, your listing is a loose piece of text competing on title alone.
The effect shows up as impressions rather than as errors. Products with clean identifiers tend to be shown for the specific searches that name the product, which are the searches that convert. Products without them drift towards broad, generic queries, which cost more and buy less.
There is a second reason. Identifier problems tend to correlate with other feed problems, because a catalogue where nobody maintained barcodes is usually a catalogue where nobody maintained titles, categories or availability either. Fixing GTINs is often the moment the rest of the data gets looked at.
Stop it coming back
Identifier errors return, because catalogues change and nobody owns the field. Close that gap in the process rather than in the feed.
Make the barcode a required part of adding a product. If the person creating products in the admin cannot save without it, or is prompted for the identifier exists decision, the problem stops at the source. This is worth more than any monthly cleanup.
Ask suppliers for barcodes in their product data as a condition of listing. Most have them and simply do not send them unless asked.
Set a weekly check on the Merchant Center diagnostics, looking at the count of affected products rather than the individual items. A jump means something changed, usually a bulk import, a new supplier or an app that rewrites product fields.
Be careful with feed rules that fill blanks automatically. A rule that copies SKU into the barcode field will clear the error message and create invalid identifiers across the catalogue, which is worse. Rules should be used to declare that no identifier exists for a defined group, not to manufacture numbers.
And audit once a year against the physical stock. Suppliers reissue codes when packaging changes.
Worked example, not a result
Sorting a catalogue before fixing anything
- Products flagged
- 820
- Resold, barcode available from supplier
- 600
- Own brand, no identifier exists
- 180
- Sent but rejected as invalid
- 40
- Cause of most invalid values
- leading zero lost in a CSV
- Flagged products after the first fix pass
- 45
Worked example, not a result