The one-barcode-per-variant limit is gone. The UPC on the box, your own EAN on the shelf label, the marketplace ASIN — all of them can live on the same variant, and searching by any one of them finds it.
The manufacturer's UPC on the box. Your own EAN on the shelf label. An ASIN for the marketplace listing. A single real-world product carries multiple identifiers.
Any codes that wouldn't fit in Shopify were tracked in an outside sheet — double bookkeeping, no way to search, and knowledge stuck in one person's head.
Register up to 20 barcodes directly on the variant detail page.any of them identifies the productso you can retire the external spreadsheet.
You can add, scan, and delete barcodes directly on the variant detail page.
The same operations work not only in the desktop admin but also in the Shopify mobile app. Scan right where you are on the floor.
Pick a type among UPC / EAN / ISBN / GTIN / ASIN and the value is validated against that standard's format. Mistyped digits are rejected at input time.
With the bulk editor you can update barcodes for many variants at once.
In the product CSV, Variant Barcodes column, you can import and export the full set of 20 at once.
Not just the first one —any barcode a variant holdscan be used to find the product.
Each barcode is assigned a "type." Shopify checks the value against that standard's format on the spot, sotypos never make it into your data.
| Item | Before | After |
|---|---|---|
| Barcodes per variant | 1 | Up to 20 |
| Type designation | None | UPC / EAN / ISBN / GTIN / ASIN / Custom |
| Input checking | Effectively free-form | Validated against the standard's format(except Custom) |
| Search | Matches only the one registered barcode | Matches any barcode |
| Bulk updates | Bulk editor (one barcode) | Bulk editor across multiple variants at once |
| CSV | The old barcode column | Variant Barcodes column imports and exports the whole set |
| Value read by sales channels | that one barcode | First barcode(same behavior as before) |
| Migration work | — | Not required Existing barcodes stay as they are |
Add, scan, or delete one at a time. You set the barcode type here too.
Scan with the camera and register on the spot, in-store or in the warehouse.
Update barcodes across many variants at once.
Variant Barcodes Import/export the whole set as a column.
A variant can hold multiple barcodes, butthe first one is used wherever a single barcode is expected. Existing logic built on the assumption of "one barcode per variant" won't break, butit is now an array in which order carries meaning— and that is a design-level change.
UPC / EAN / ISBN / GTIN / ASIN are validated against their standard formats.Check-digit validation you implemented yourself in an app or in middleware now has a smaller role. That said, Custom is not validated, so keeping your internal codes consistent remains your own responsibility.
Variant Barcodes column imports and exports the entire set. ETL jobs, inventory-sync batches, and PIM integrations that parse the product CSVneed to be checked for whether they can handle the change in column layout. Scripts that hard-code column positions are especially likely to break.
Rather than "only the first one," a product can be found by any barcode its variant holds. Put another way,a single scan can return a wider set of candidates. The behavior when the same code is registered on multiple variants isnot documentedin the article, so it's safest to define your own operational rules for duplicate registration.
This announcement is limited to operational details —the admin, the mobile app, bulk editing, CSV, and search. How the fields are represented in the Admin GraphQL / REST APIs, the webhook payload, supported plans and countries, and what happens once the 20-barcode limit is reached are all not covered in this article. Before you build an automated integration,pull real data in a development store and verify it yourself.