Executive summary
- What: A product variant can now hold up to 20 barcodes instead of one, each optionally typed as UPC, EAN, ISBN, GTIN, or ASIN, with format validation applied at entry.
- Why: The same physical item routinely carries a manufacturer code, a private-label code, and a marketplace identifier. Those extras have been living in spreadsheets, tags, and metafields.
- Who: Merchandising and catalog operations teams first, then anyone maintaining a feed to an ERP, a marketplace, or a POS.
What changed
Barcodes are now a set rather than a single value. You can add, scan, and remove them directly on the variant details page or from the Shopify mobile app, edit them across many variants at once in the bulk editor, and move the full set in and out through the Variant Barcodes column in your product CSV.
Each entry can declare a type, and Shopify validates the value against that standard's format rules, so a transposed digit is caught at entry rather than weeks later at a receiving dock. Codes following no standard can be marked Custom, and product search now matches any barcode on a variant.
Nothing needs migrating. Existing barcodes stay where they are, and the first barcode on a variant remains the one used wherever a single value is expected. Sales channels continue to read that first barcode, so labels, feeds, and apps behave exactly as they did yesterday.
Why it matters
For most enterprise catalogs this closes a long-running data integrity gap. The spreadsheet holding your secondary identifiers was never reconciled against Shopify, and every mismatch surfaced as a receiving error, a mispicked order, or a marketplace listing that quietly stopped matching inventory.
The validation is the underrated part. Barcode errors are expensive precisely because they fail late and silently: the code scans as something, just not the thing you meant. Catching a malformed UPC at entry is far cheaper than reconciling it after a shipment has moved.
Ordering now carries meaning, though. Because the first barcode is what single-value consumers read, position is no longer cosmetic. Whoever reorders a set in the bulk editor is changing what your label printer and your channel feeds emit, and that is worth stating explicitly in your catalog procedures.
Role-specific impact
- Marketers: Marketplace listings can now reference the ASIN or GTIN held on the variant itself rather than a side file, which makes feed troubleshooting a catalog question instead of an archaeology exercise.
- Developers: Any integration reading a single barcode value still works, but it now sees one of several with no signal that others exist. Audit ERP, OMS, and POS sync paths before someone adds a second code.
- Store admins: Barcode entry moves onto the variant page and into the bulk editor. Agree internally on which identifier belongs in first position, because that choice propagates to every downstream consumer.
Use-case example
Real-world scenario
A housewares brand sells 6,000 variants across DTC, wholesale, and Amazon. Each SKU carries a supplier UPC on the inbound case, a private-label EAN on the shelf tag, and an ASIN on the marketplace listing. Two of the three lived in a shared spreadsheet. Receiving scanned the case UPC, Shopify only knew the EAN, and roughly 4 percent of inbound lines needed manual matching every week. After loading all three typed codes onto each variant by CSV, warehouse scans resolve regardless of which code is on the box, and that matching queue effectively disappears.
Implementation checklist
- Inventory where secondary identifiers currently live: spreadsheets, tags, metafields, or a system outside Shopify entirely.
- Decide which identifier belongs in first position for each product family, since that is what channels and labels will read.
- Load the remaining codes using the Variant Barcodes column in a product CSV, declaring a type so validation applies.
- Review the exceptions validation rejects. Those are usually genuine data errors worth fixing at source.
- Check every integration that reads a barcode and confirm it either reads the full set or is knowingly reading only the first value.
- Update your catalog runbook so ordering within the set is treated as a controlled change.
FAQ
Q: Will this break our existing labels or channel feeds?
A: No. Existing barcodes stay in place and the first barcode is still used wherever a single value is expected, so labels, sales channel feeds, and apps keep working without changes.
Q: How many barcodes can a variant hold, and do they have to be typed?
A: Up to 20. Declaring a type is optional but recommended, because it enables format validation. Internal codes that follow no standard can be marked Custom.
If you want help planning a bulk identifier cleanup across a large catalog, our team can scope it with you.
Resources
Product variants: Shopify Help Center
Need guidance? Talk to Makro.