How to add barcodes to Shopify products (without breaking the ones you have)
Every Shopify product variant has a Barcode (ISBN, UPC, GTIN, etc.) field. It’s just a text field — Shopify stores whatever you put in it and doesn’t validate it, doesn’t generate it, and doesn’t check it for duplicates.
That flexibility is useful, and it’s also where most barcode problems start.
Do you need real GTINs, or just internal numbers?
This is the first fork in the road, and it decides everything else.
You need official GTINs (UPC-A, EAN-13) if you sell through channels that require them: Amazon, Google Shopping, most big-box retail, and any distributor that scans your goods into their own system. Those numbers are issued by GS1 — you buy a company prefix and assign them yourself. Nobody can generate a legitimate GTIN for you.
Internal numbers are fine if the barcode only ever gets scanned by you: your own POS, your own stockroom, your own pick-and-pack. In that case any unique, scannable value works, and Code 128 is the right symbology because it accepts letters and digits and doesn’t require a check-digit scheme you have to maintain.
Most small merchants asking “how do I add barcodes” want the second one.
Adding them one at a time
For a handful of products: Products → select a product → scroll to Variants → Barcode. Type the value, save. That’s the whole flow.
It stops being practical somewhere around thirty variants.
Adding them in bulk with a CSV
Shopify’s built-in bulk route is the product CSV export/import:
- Products → Export (all products, CSV for Excel/Numbers).
- Open it in a spreadsheet. Find the
Variant Barcodecolumn. - Fill in values for the rows that need them.
- Products → Import, and tick Overwrite existing products.
Two things to be careful about here. Spreadsheets love to reformat long digit
strings into scientific notation (1.23457E+11) and to strip leading zeros —
format the column as Text before you type anything. And an import with
“overwrite” set touches every field in the file, so keep a copy of the original
export in case you need to roll back.
The rule that matters most: don’t regenerate
If a variant already has a barcode, leave it alone.
The moment you overwrite a barcode, every label already printed and stuck on a physical product becomes wrong. Your scanner reads the old number, your system looks it up, and either finds nothing or — worse — finds a different product that has since been given that number.
This sounds obvious, but it’s the single most common complaint about bulk barcode tools: you run them a second time to fill in a few new products, and they cheerfully regenerate everything.
So the safe operation is always: assign only to variants where the field is empty.
Uniqueness is your job, not Shopify’s
Shopify will happily let two variants share a barcode. Nothing warns you. You find out when a scan pulls up the wrong item.
If you’re assigning in bulk, check each new value against your entire existing catalogue before you write it — not just against the batch you’re generating right now. And it’s worth periodically scanning your catalogue for duplicates that crept in from CSV imports or a supplier feed.
Doing this with LabelForge
LabelForge assigns sequential, catalogue-checked barcodes to your variants, with
the “never overwrite” rule built in as a hard guarantee: variants that already
have a barcode are skipped and reported back to you, never rewritten. You can set
a prefix (for example LF-) so your internal numbers are recognisable at a
glance, and there’s a duplicate finder that scans your whole catalogue for
barcodes assigned to more than one variant.
Every assignment is audit-logged, so you can always see what changed and when.