Products / New feature

Variants now support
multiple barcodes (up to 20)

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.

On this page
  1. What actually changed (in 30 seconds)
  2. Diagram: one barcode vs. twenty
  3. What you can do now (6 things)
  4. Barcode types and format validation
  5. Before vs. after
  6. What stays the same: the "first barcode" rule
  7. Where to do it (4 entry points)
  8. 5 things developers should know
  9. 3 practical use cases
  10. A one-line summary you can pitch with

1What actually changed

Until now, the number of barcodes a single product variant could hold was just one.
Even when the same product had a manufacturer's UPC, a private-label EAN, and a marketplace ASIN all at once,picking one of them and managing the rest in a spreadsheetwas the only option.
Now,up to 20 barcodes per variantare supported, andany one of them will identify the same product.

The problem: real products carry several codes

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.

The old workaround: spreadsheets

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.

20

The fix: keep up to 20 on the product itself

Register up to 20 barcodes directly on the variant detail page.any of them identifies the productso you can retire the external spreadsheet.

2Diagram: a world with only one barcode vs. a world with 20

BEFORE: 1 variant = 1 barcode AFTER: 1 variant = up to 20 barcodes UPC on the box From the manufacturer EAN on the shelf tag Your own label ASIN of the listing Marketplace Variant barcode: only one slot Everything that overflows Off to a spreadsheet UPC on the box EAN on the shelf tag ASIN of the listing Internal code Variant 1. UPC Primary 2. EAN 3. ASIN 4. Custom ... up to 20 Any of them Matches search
The key point is that "input is many-to-one" but "output is still a single barcode".
Entry, scanning, and search all cover every one of the 20, whilethe sales channel reads the first barcodejust as before. That is why existing integrations don't break.

3What you can now do (6 things)

1. Add / scan / delete on the detail page

You can add, scan, and delete barcodes directly on the variant detail page.

2. From the Shopify mobile app too

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.

3. Type selection and format validation

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.

4. Multiple variants at once with the bulk editing tool

With the bulk editor you can update barcodes for many variants at once.

5. Import / export via the product CSV

In the product CSV, Variant Barcodes column, you can import and export the full set of 20 at once.

6. Find a product by any barcode

Not just the first one —any barcode a variant holdscan be used to find the product.

4Barcode types and format validation

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.

UPC
Validated against the standard's format
EAN
Validated against the standard's format
ISBN
For books. Format validation included
GTIN
International standard. Format validation included
ASIN
ASIN
For marketplaces. Format validation included
Custom
For internal codes that don't follow a standard
validation happens at input time, which matters a lot in practice. With the old free-text approach, dropped digits, full-width characters, and check-digit errors went unnoticed until downstream steps (label printing, channel integrations).Custom is not validated by design, so it's worth making it a rule to always pick the correct type for codes that follow a standard.

5Before vs. after

ItemBeforeAfter
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

6What doesn't change: the "first barcode" rule

Your existing barcodes are already in place, sono migration work is needed.
And anywhere a single barcode is expected, the first one is used just as before. Labels, sales channel feeds, and appskeep working exactly as they do today.
Barcodes held on the variant 1st (UPC) Primary value 2nd (EAN) 3rd (ASIN) ... up to 20 total Only the first one flows through Label printing Sales channel feeds Connected apps Same behavior as today Existing workflows and integrations keep running with no changes No migration tasks
Flip that around, and the order becomes a de facto setting.Always put the code you want sent to channels first. If a bulk CSV import or bulk edit reorders them, the value that lands on labels and feeds can change.Visually checking the first barcode after importis a habit worth building in.

7Where you edit them (4 entry points)

1

Variant detail page

Add, scan, or delete one at a time. You set the barcode type here too.

2

Shopify mobile app

Scan with the camera and register on the spot, in-store or in the warehouse.

3

Bulk editor

Update barcodes across many variants at once.

4

Product CSV

Variant Barcodes Import/export the whole set as a column.

85 points developers should know

1st

1. The data model: one-to-many plus a primary value

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.

2. Validation has moved to the platform

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.

3. More CSV columns = check your existing pipelines

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.

4. Search now matches more

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.

API ?

5. API / webhook specifics, supported plans, and behavior beyond 20 barcodes are "not documented"

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.

9Three use cases you can apply to your operations

Excel Excel Excel Shopify one place
USE CASE 1

Retiring the "barcode mapping spreadsheet" and consolidating identifiers in Shopify

The problem
Because Shopify could store only one barcode, the mapping between manufacturer UPCs, in-house EANs, and marketplace ASINs was maintained in parallel in Excel or a spreadsheet. Only one person could update it, and it steadily drifted away from the products in Shopify.
The move
Reformat the mapping table into Variant Barcodes column, then bulk import it → assign the correct type (UPC / EAN / ASIN / Custom) to each code → make the original spreadsheet reference-only and phase it out.
The result
No more duplicate management. The product master becomes the single source of truth, and no matter which code an inquiry comes in with, an admin search alone is enough to identify the item.
Technical notes
When importing,put the code you want to send to channels first(the first one is what flows to labels, feeds, and apps). For codes that follow a standard, choosing the correct type instead of Custom lets format errors be caught at import time.
USE CASE 2

Killing the "the code on the box doesn't find it" problem in stores and warehouses with on-site scanning

The problem
The shelf tag carries your own label's EAN, while the box that arrives carries the manufacturer's UPC. Only one of them is registered in Shopify, so scanning the other turns up nothing and staff burn time hunting by eye.
The fix
Open the variant details in the Shopify mobile app andscan and add both codes right there on the floor. Even for products whose manufacturer code changes from lot to lot, you can add each one on the spot (up to 20).
The payoff
Either code scans to the same product. Search time and misidentification during stocktakes, receiving checks, and in-store inquiries all drop at once.
Technical notes
Search isn't limited to the first code — it coversany barcodethe variant holds. But only the first one appears on printed labels, sopin the shelf-tag code as the first barcodeand set that operating rule from the start.
SKU UPC EAN
USE CASE 3

Organizing multi-channel listing identifiers to stop feed incidents at input time

The problem
Every marketplace and shopping feed requires a different identifier (GTIN / UPC / EAN / ASIN), yet Shopify could only hold one, leaving the rest scattered across app settings and external spreadsheets. Mistyped digits only surfaced once the feed integration returned an error.
The fix
Register every identifier your channels need on the variant, and set the correct type for each.Pin the representative code you send to channels as the first barcode. Use the bulk editor to process the target variants in one pass.
The payoff
Format validation rejects typosat input time, cutting rework from feed rejections and listing errors. Adding a new channel no longer means hunting for "which code was it again?"
Technical notes
This assumes the spec that sales channels readonly the first barcode. Whether you can serve different codes to different channels isnot statedin the article, so if multiple channels require different identifiers, verify it in advance. API handling is alsonot stated.

10A one-line summary you can use in a pitch

"The one variant = one barcode constraint is gone, andRegistering up to 20, each with a type and with format validation, and looking up a product by any of them,is now supported.
Existing data needs no migration, and channels still read the first one as before,so your current integrations work unchanged.
The first thing to do is bring the identifiers you had offloaded to external spreadsheets back into the product master via CSV."