Google Merchant Center “Missing or incorrect GTIN”: how to find every PrestaShop product without a GTIN

4 min read Other languages: PL FR

“Missing or incorrect GTIN” is one of the most common Google Merchant Center issues for PrestaShop shops. The fix itself is easy – type the right barcode into the right field. The hard part is finding every product and combination that needs it. This guide shows where PrestaShop keeps the GTIN, how to list all gaps with a few SQL queries, and when you may legitimately skip the GTIN.

What Google actually asks for

A GTIN is the barcode number of a product: EAN-13 in Europe, UPC in North America, ISBN for books. Google uses it to match your offer to the right product in its catalog. Its rule for unique product identifiers is short: a product needs either an accurate GTIN, or both an MPN and a brand. Depending on the country and product category, you may also have to state explicitly that an identifier does not exist.

Two details matter in practice:

  • Only send a GTIN you are sure of. Google says this explicitly. An invented or reused barcode is worse than none, because it attaches your offer to someone else’s product.
  • Every variant is a separate product for Google. A T-shirt in 4 sizes and 3 colours is 12 items in the feed, and each of them needs its own GTIN. One barcode on the parent product is not enough.

Where PrestaShop stores the GTIN

Product typeField in the back officeDatabase column
Simple productProduct › Details (References) › EAN-13 or JAN barcodeps_product.ean13
Product with combinationsProduct › Combinations › each combination › EAN-13ps_product_attribute.ean13
Alternative identifiersUPC, ISBN, MPN (MPN since PrestaShop 1.7.7)upc, isbn, mpn in the same tables

The most common mistake: the barcode is filled in on the product, while the shop sells combinations. Most feed modules send one item per combination, so Google sees a whole family of variants without a GTIN.

Find every product without a GTIN (SQL)

Run these queries in phpMyAdmin or Adminer. They only read data. Replace the ps_ prefix with your own, and id_lang = 1 / id_shop = 1 with your default language and shop if they differ.

1. Simple products without any identifier

SELECT p.id_product, p.reference, pl.name
FROM ps_product p
JOIN ps_product_lang pl
  ON pl.id_product = p.id_product AND pl.id_lang = 1 AND pl.id_shop = 1
WHERE p.active = 1
  AND NOT EXISTS (SELECT 1 FROM ps_product_attribute pa WHERE pa.id_product = p.id_product)
  AND COALESCE(p.ean13, '') = ''
  AND COALESCE(p.upc, '') = ''
  AND COALESCE(p.isbn, '') = ''
ORDER BY p.id_product;

2. Combinations without EAN

SELECT p.id_product, pl.name, pa.id_product_attribute,
       pa.reference AS combination_reference
FROM ps_product_attribute pa
JOIN ps_product p ON p.id_product = pa.id_product
JOIN ps_product_lang pl
  ON pl.id_product = p.id_product AND pl.id_lang = 1 AND pl.id_shop = 1
WHERE p.active = 1
  AND COALESCE(pa.ean13, '') = ''
ORDER BY p.id_product, pa.id_product_attribute;

3. Barcodes with an impossible length

A valid GTIN has 8, 12, 13 or 14 digits. Anything else – a reference pasted into the wrong field, a missing digit – will be rejected.

SELECT p.id_product, pl.name, p.ean13
FROM ps_product p
JOIN ps_product_lang pl
  ON pl.id_product = p.id_product AND pl.id_lang = 1 AND pl.id_shop = 1
WHERE p.ean13 <> ''
  AND p.ean13 NOT REGEXP '^[0-9]{8}$|^[0-9]{12,14}$';

Run the same check on ps_product_attribute.ean13 for combinations. The length test does not verify the check digit, but it catches most typos.

When you can skip the GTIN

Not every product has a barcode. Handmade items, custom-made products, vintage goods and private-label products sold only by you usually do not. For those, send identifier_exists = no in the feed instead of an empty or invented value, and fill in the brand. Check how your feed module handles it: many send this flag only when the GTIN, MPN and brand are all empty.

Do not use this flag to silence the warning for products that do have a barcode on the box. Google matches products by barcode, and offers without one perform worse in Shopping results.

Fix it once, then keep it fixed

Filling in missing barcodes is a one-off job. Keeping them complete is not: new products, new sizes and imports from suppliers bring the gaps back every season. Two habits help:

  • Add the barcode to your product import template as a required column, including the combination level.
  • Re-check the catalog before every campaign or feed change, not after Merchant Center complains.

Check it automatically

Product Data Guardian runs these checks for the whole catalog in one scan: products and every combination without EAN/GTIN, missing brands, images, descriptions and stock. Each product gets a 0–100 score, and one click lists exactly the products to fix. Products below your threshold can be kept out of the Google Shopping and Meta feeds automatically.

See Product Data Guardian

Sources

← All articles

Contact form

Regarding module: Product Data Guardian – Catalog Quality Score & Ad-Ready Feeds