Multiple Barcodes per Variant: What Shopify Merchants and Developers Need to Know

Shopify now lets each product variant hold up to 20 barcodes, simplifying inventory across UPCs, EANs, ASINs, and custom codes. Learn how this change impacts your store, the API, CSV workflows, and the steps to start using it.

Multiple Barcodes per Variant: What Shopify Merchants and Developers Need to Know
8 sections

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:

  • Channel compliance – Marketplaces often require the exact barcode they use for listings. 2. Warehouse accuracy – Scanners can read any code on a box, reducing mis‑picks. 3. Branding flexibility – Private‑label products can keep their own internal codes alongside global standards.
  • What Changed: New Variant Barcode Limits

  • Up to 20 barcodes can now be attached to a single variant. * Each barcode is assigned a type (UPC, EAN, ISBN, GTIN, ASIN, or Custom). * Shopify validates the format based on the selected type, catching typos at entry. * The first barcode remains the primary identifier for channels that only accept one value (labels, feeds, apps).
  • Who Is Affected

  • Merchants – Store owners who manage inventory, use the Bulk Editor, or import/export products via CSV will see new UI fields and bulk‑edit options. * Developers – Apps that read or write the barcode field need to consider the new barcodes array (GraphQL/REST) and update any logic that assumes a single value.
  • Merchant Action Steps

  • Add barcodes in the admin – Open a product variant, click “Add barcode”, choose the type, and type the value. You can add up to 20. 2. Bulk edit – In the Bulk Editor, add the “Variant Barcodes” column, then paste a semicolon‑separated list (e.g., 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

  • Use the barcode type selector to avoid data‑entry errors. * Regularly audit your variants to ensure the most important code is first. * Leverage the mobile app’s scanner for fast floor‑level updates. * Update any custom reporting dashboards to pull from the new 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!

    Tags
    Sources

    Related Articles

    Unlock Retail Store Discovery with Shopify’s New UCP Location Search & Lookup

    Unlock Retail Store Discovery with Shopify’s New UCP Location Search & Lookup

    Shopify now lets apps locate a merchant’s physical stores via UCP location search and lookup. Learn what changed, who’s affected, and how to add the capabilities to your storefront integration.

    October 22, 20264 min
    Reactive Storage Boosts POS UI Extensions with Real‑Time Sync

    Reactive Storage Boosts POS UI Extensions with Real‑Time Sync

    Shopify’s latest POS UI extension update introduces shopify.storage.current, a reactive storage API that automatically syncs data across extension targets on the same device. Learn what changed, who it impacts, and how to implement it in minutes.

    October 22, 20264 min
    s‑pos‑list Arrives: Virtualized Lists Transform Shopify POS UI Extensions

    s‑pos‑list Arrives: Virtualized Lists Transform Shopify POS UI Extensions

    Shopify POS UI extensions get a powerful new component—s‑pos‑list—in the 2026‑10 API. Learn what changed, who it impacts, and how to adopt the virtualized list for faster, memory‑efficient rendering.

    October 22, 20264 min
    Polaris 2.0 Is Now Stable: What Shopify Developers Must Do Today

    Polaris 2.0 Is Now Stable: What Shopify Developers Must Do Today

    Polaris 2.0 has moved to the stable CDN, bringing a redesigned admin look, new semantic versioning, and updated TypeScript types. Learn how to switch script tags, update React Router apps, and keep your Shopify extensions on the latest UI framework.

    October 22, 20264 min