Guide
How to add GTINs to your Shopify products, and check they're valid
A GTIN is the number under a product's barcode. Google lists it among the properties it
recommends for product markup, and when it's missing Search Console reports
No global identifier provided (e.g., gtin, mpn, isbn). It's also how Google and
other systems that compare products recognise that your listing is the same item another
store sells. On Shopify, GTINs live in each variant's barcode, so getting them right is a
data job, not a theme job.
What counts as a GTIN
GTINs are issued through GS1, the standards body behind retail barcodes. The familiar barcode formats are all GTINs of different lengths:
| Format | Digits | Where you'll see it |
|---|---|---|
| UPC-A (GTIN-12) | 12 | Most products sold in North America |
| EAN-13 (GTIN-13) | 13 | Most products sold elsewhere; a 13-digit ISBN is one too |
| EAN-8 (GTIN-8) | 8 | Small packages |
| GTIN-14 | 14 | Cases and multipacks |
If you resell other brands' products, the GTIN is printed on the packaging. If you own the brand, you get GTINs from GS1 directly. Numbers sold cheaply by resellers can trace back to another company, which defeats the point of a unique identifier.
Where GTINs go in Shopify
Barcodes are entered in the Inventory section of a product, or of each variant when the product has variants. Since 2026 a variant can hold up to 20 barcodes, each with a type that says which standard it follows:
- GTIN: 8, 12, 13 or 14 digits
- UPC: 8 or 12 digits
- EAN: 8 or 13 digits
- ISBN: 10 or 13 characters
- ASIN: Amazon's identifier, not a GTIN
- Custom: the default, for codes that follow no standard
Give real GTINs the type that matches them rather than leaving them as Custom. Shopify checks a typed barcode against its standard's length and characters, and the type tells every channel which of your codes is the GTIN. Internal stock codes belong in Custom, or better, in the SKU field.
Shopify notes that some sales channels require a GTIN before a product can be published to them, so missing barcodes can cost you more than a Search Console warning.
Adding barcodes in bulk with a CSV
Shopify's product CSV now has a Barcodes column (plural). It takes up to 20 barcodes per row, separated by semicolons, each with an optional type and a colon in front. A barcode with no type is imported as Custom:
Handle,Option1 Value,Barcodes
canvas-tote,Natural,gtin:00614141000036
canvas-tote,Black,gtin:00614141000043; WH-TOTE-BLK The older singular Barcode column is renamed the next time you export, and a file that contains both columns fails to import.
Watch the leading zeros. Excel and Google Sheets read a cell like
012345678905 as a number, drop the leading zero, and may show long codes in
scientific notation. A typed value such as gtin:012345678905 stays text, but an
untyped one doesn't. Format the column as plain text before pasting, or turn off number
conversion when you import the CSV, and spot-check a few rows before uploading.
Check a check digit by hand
The last digit of every GTIN is a check digit computed from the others, so most typos give
themselves away. The rule is the same for every length. Take the UPC
036000291452:
- Set the last digit aside. It's the check digit:
2. - Starting with the digit just left of it and moving left, multiply the digits by 3, 1, 3, 1 and so on: 5×3 + 4×1 + 1×3 + 9×1 + 2×3 + 0×1 + 0×3 + 0×1 + 6×3 + 3×1 + 0×3 = 58.
- Take the amount needed to reach the next multiple of ten: 60 − 58 = 2.
- It matches the check digit, so the number is well formed.
GS1 has a check digit calculator if you'd rather not do arithmetic.
What a valid check digit doesn't prove
It shows the number is well formed, not that it was issued, or that it belongs to this product. A mistyped GTIN that happens to pass, or a real GTIN pasted onto the wrong variant, still passes. GS1's Verified by GS1 service looks up who a GTIN was issued to.
Products that don't have a GTIN
Handmade, custom and many private-label products have no GTIN, and that's fine. Don't invent
one to clear a warning. Leave the barcode empty and make sure the product's markup carries
its brand, plus an mpn if there's a manufacturer part number. If you
make the product yourself, your own part number is that number. In a Google Merchant Center
feed, products without identifiers are marked with the identifier_exists
attribute set to no.
How the GTIN reaches your markup
Dawn prints a variant's barcode as gtin in its product JSON-LD when there is one.
We looked at exactly what it emits. Your theme
may differ, so check a product page with Google's Rich Results Test or the
SchemaRank scanner after adding barcodes.
SchemaRank, a Shopify app, checks every barcode in your catalog against its check digit, flags the ones that fail, and publishes GTINs in each product's JSON-LD alongside brand and MPN.