Shopify just rolled out a game‑changing update: product variants can now store up to 20 barcodes instead of just one. Whether you sell on Amazon, in brick‑and‑mortar stores, or via wholesale channels, you’ll often have multiple identifiers for the same SKU—think a manufacturer UPC, a private‑label EAN, and an Amazon ASIN. This update removes the need for messy spreadsheets and lets you manage every code directly in Shopify.
Why Multiple Barcodes Matter
Having several barcodes per variant solves three common pain points:
What Changed: New Variant Barcode Limits
Who Is Affected
barcode field need to consider the new barcodes array (GraphQL/REST) and update any logic that assumes a single value.Merchant Action Steps
123456789012|UPC; 9780306406157|ISBN). 3. CSV import/export – The product export now includes a Variant Barcodes column. Each entry follows the pattern code|type and multiple entries are separated by ;. Example: 123456789012|UPC; 987654321098|EAN. 4. Mobile scanning – The Shopify mobile app lets you scan barcodes directly onto a variant, saving time on the floor.Developer Implications & API Updates
REST Admin API – The Variant object now includes a new barcodes array. Each element is an object with code and type. The original barcode field is unchanged and continues to return the first barcode.
GraphQL Admin API – A new field barcodes (type [Barcode!]!) was added to the ProductVariant type. Each Barcode has code and type fields. The existing barcode field still resolves to barcodes[0].code for backward compatibility.
Sample GraphQL mutation to set multiple barcodes:
graphql
mutation updateVariantBarcodes($variantId: ID!, $bars: [BarcodeInput!]!) {
productVariantUpdate(input: {id: $variantId, barcodes: $bars}) {
productVariant {
id
barcodes {
code
type
}
barcode # still returns the first barcode
}
userErrors {
field
message
}
}
}
Sample REST PATCH request:
PATCH /admin/api/2024-07/variants/123456789.json
{
"variant": {
"id": 123456789,
"barcodes": [
{"code": "012345678905", "type": "UPC"},
{"code": "9780306406157", "type": "ISBN"},
{"code": "CUSTOM-001", "type": "CUSTOM"}
]
}
}
What to watch for – Apps that sync inventory to third‑party platforms should now read the full barcodes array and decide which code to send based on the partner’s requirements. If an app only expects variant.barcode, it will continue to work, but you may miss the opportunity to provide a more appropriate identifier.
Bulk & CSV Workflows
The CSV export now includes a Variant Barcodes column. Each row can contain multiple entries separated by a semicolon. When importing, Shopify validates each code against its declared type, so malformed UPCs will be rejected with a clear error message.
Best‑practice tip: Keep the primary barcode (the one used for labels and feeds) as the first entry in the list. That way nothing changes for channels that still read a single value.
Best Practices & Tips
barcodes array if you need visibility beyond the primary code.Conclusion & Next Steps
The multiple‑barcode feature removes a long‑standing friction point for merchants juggling global and private identifiers, while giving developers a richer data model to work with. Get started today by adding a secondary barcode to a few test variants, experiment with the bulk editor, and update your apps to read the new barcodes field. As always, keep an eye on Shopify’s changelog for any refinements and share your success stories with the community!


