Yes. A Shopify variant can now carry more than one barcode. Shopify shipped multi-barcode support for product variants on 8 September 2026, which closes a gap that anyone selling the same unit through a D2C store, Noon and Amazon.ae has been papering over with metafields and spreadsheets for years. If you searched for Shopify multiple barcodes per variant because your supplier's UPC and your private-label EAN are fighting over one field, the fight is over. What is not over is deciding which number wins in each feed, and that is the part that actually breaks listings.
Below is how we map it for GCC catalogues: one variant, several identifiers, and a rule for every export.
Why one product in the Gulf ends up with three numbers
A fairly ordinary situation for a Dubai-based brand. You import a skincare line from a European manufacturer. Every unit arrives with an EAN-13 printed on the carton, issued under the manufacturer's GS1 prefix. You then relabel part of the stock under your own brand for the GCC market and allocate your own GTIN from a GS1 Emirates prefix beginning 629. Same bottle, same cost, same shelf. Two legitimate barcodes.
Then you list on Noon, which keys its catalogue to a barcode and hands back its own item identifier. Then you list on Amazon.ae, which assigns an ASIN that has nothing to do with GS1 at all. Your 3PL in Dubai Investment Park scans whatever is physically on the carton, which may be the manufacturer code on the old stock and yours on the new. Your Google Shopping feed wants a GTIN that resolves cleanly, because White Friday traffic is expensive and a disapproved item is a dead item.
That is four or five identifiers for one variant, and until recently Shopify gave you one box to put them in.
Barcode vs SKU: the difference that causes most of the mess
The SKU is yours. You invent it, it means something to your warehouse team, nobody outside your business needs to recognise it, and no registry governs it. SRM-NGT-50ML-AR is a perfectly good SKU.
The barcode is not yours in the same way. It is a GTIN: a globally unique number issued through GS1, in UPC-A (12 digits), EAN-13 (13 digits) or ITF-14 (14 digits) form, with a check digit on the end that machines use to verify the number was read correctly. Marketplaces and Google treat it as a claim about identity, not a label. Put a made-up number in there and you will get matched to somebody else's product, which is worse than not being matched at all.
The practical rule we give clients: if a human in your office decided the value, it belongs in SKU. If GS1 or a marketplace issued it, it belongs in the barcode field or a dedicated identifier metafield.
Check your digits before you trust the number
Half the barcode problems we see in GCC catalogues are transcription errors, not policy errors. The check digit will tell you in about twenty seconds.
Take the twelve digits 629000123456. Weight them alternately 1, 3, 1, 3 from the left:
(6×1) + (2×3) + (9×1) + (0×3) + (0×1) + (0×3) + (1×1) + (2×3) + (3×1) + (4×3) + (5×1) + (6×3) = 6 + 6 + 9 + 0 + 0 + 0 + 1 + 6 + 3 + 12 + 5 + 18 = 66.
Round 66 up to the next multiple of ten, 70, and subtract: the check digit is 4. The valid EAN-13 is 6290001234564. If the number in your sheet ends in anything else, it is wrong, and Noon, Google and Amazon will all tell you so in their own unhelpful ways.
Run this over your whole barcode column before any feed goes live. A one-line formula in Sheets does it. It takes an hour and it saves the week before DSF.
How to add a second barcode to a Shopify variant without creating duplicates
Mechanically it is straightforward: open the variant, add the additional value alongside the existing one. The discipline is what matters.
Pick one barcode as the primary. That should be the number physically printed on the unit your Dubai or Riyadh warehouse is picking today, because that is what the scanner at pack-out reads. Everything else is secondary. If you flip to your own private-label EAN as primary while two months of manufacturer-labelled stock is still in the bin, you will get mis-scans, and mis-scans in a COD market mean a return, a reverse leg with Aramex, and a refund you cannot net against a card settlement.
Two warnings. Shopify does not stop you from putting the same barcode on two different variants, so a careless CSV can duplicate a GTIN across a 50ml and a 100ml with no error raised. And if you run separate locations for Dubai and Riyadh with different labelled stock, the barcode lives on the variant, not the location: Shopify has no concept of a per-location barcode. You will need a naming convention or separate variants if the physical labels genuinely differ by market.
Noon's listing requirement and where Noon's own identifier belongs
Noon builds its catalogue around barcodes. For branded goods you supply the manufacturer's EAN or UPC and Noon matches you onto the existing catalogue item rather than creating a new one. For private-label products that have no GS1 number, Noon has a route for sellers without barcodes, and the exact mechanism and documentation it asks for changes, so check the current seller guidance rather than something you read in 2023.
What matters for your Shopify data model: the identifier Noon gives back is not a GTIN and should never sit in the barcode field. Put it in a product or variant metafield, something like marketplace.noon_item_id, and populate it on the way back from the listing, not on the way out. The barcode goes out. The marketplace ID comes in. Mixing those two directions in one field is how catalogues rot.
Amazon.ae and ASIN mapping: a different kind of number entirely
An ASIN is Amazon's internal key. It is assigned when a listing is created or matched, it is not transferable, and the same physical product has a different ASIN on amazon.ae and amazon.co.uk. So "ASIN mapping" from Shopify is really a two-way sync:
- Outbound: your seller SKU plus a product identifier. For branded stock that is the manufacturer GTIN, sent as the external product ID with its type declared. For own-brand stock with no GS1 number, you apply for a GTIN exemption under Brand Registry.
- Inbound: Amazon returns the ASIN against your SKU. Store it as a variant metafield, keyed to the marketplace, because you will want
asin_aeandasin_saas separate values the moment you open Saudi.
Once that metafield is populated you can do useful things with it: suppress a product from your Shopify Search & Discovery results when it is out of stock on the marketplace, or pipe it into ad exclusions so you are not paying Meta to send a shopper to a product Amazon is already outranking you on. A small private app handles this well; we have built a few of these as part of custom app work where off-the-shelf connectors could not hold more than one marketplace ID.
GTIN rules in Google Merchant Center
Google's position is simple and strictly enforced. If the product has a GTIN assigned by its manufacturer, send it. If it genuinely has none, because you make it yourself and never registered one, set identifier_exists to false and send brand plus MPN instead. Do not guess, do not reuse, do not pad a SKU out to thirteen digits.
Shopify's Google channel maps the variant barcode to the gtin attribute. With multiple barcodes on a variant, the feed needs a deterministic choice, and for Google you want the GTIN that matches the product as the manufacturer registered it, which is often not the private-label number you created. If you resell a European brand in the UAE, Google is trying to match you to that brand's product page across every market. Give it the manufacturer EAN.
A detail worth knowing: GTIN-12, GTIN-13 and GTIN-14 are the same number with different left-padding. 012345678905 and 0012345678905 are one product. Some systems normalise, some compare raw strings, and that is where silent mismatches come from.
The CSV import field, and the Excel problem nobody admits to
Shopify's product CSV has a Variant Barcode column. One column, one value, which is why anyone maintaining a multi-marketplace catalogue through spreadsheets has been stuck. Treat that column as the primary barcode only, keep the secondary identifiers in metafield columns, and verify how your current Shopify admin handles additional barcodes on import before you run a 4,000-row update. Test on ten products. Always ten first.
Then the real killer. Open a barcode column in Excel and it will cheerfully convert 6290001234564 to 6.29E+12, or strip the leading zero off a UPC. Save, upload, and you have just overwritten a few thousand valid GTINs with numbers that fail validation everywhere. Import the file as text, set the column format before pasting, or do the whole job in Sheets with the column pre-formatted as plain text. We have had to rebuild barcode data from an order-history export more than once because of this, and it is never a quick fix.
If you are carrying this catalogue onto Shopify from Magento, WooCommerce or a marketplace-first setup, get the identifier model right before the migration rather than after. Retrofitting metafields across a live catalogue during Ramadan trading is not a job anyone enjoys.
A field map you can copy
- SKU: your internal code. Never changes once stock exists.
- Barcode, primary: the GTIN printed on the unit currently in the bin.
- Barcode, secondary: the manufacturer GTIN, if your primary is a private-label number. Or the reverse.
- Metafield, Noon item ID: returned by Noon. Read-only from your side.
- Metafield, ASIN per marketplace:
asin_ae,asin_sa. Separate values, separate columns. - Feed rule, Google: manufacturer GTIN where one exists, otherwise brand plus MPN with
identifier_existsfalse. - Feed rule, warehouse and courier labels: primary barcode only, no exceptions.
Bilingual catalogues add nothing to this layer, incidentally. Your Arabic title and your English title are translations of one variant; the GTIN is language-neutral and does not duplicate across an RTL storefront.
Quick answers
Can two variants share a barcode? Shopify will let you, and sometimes you want it: a bundle sold as a single scannable unit, for instance. But if it happens by accident, inventory counts and marketplace matching both go wrong, and nothing warns you. Audit for duplicates after every bulk edit.
Do I need a GS1 number to sell on my own Shopify store? No. The barcode field can stay empty. You need GTINs the moment you want Google Shopping matching, Noon, Amazon.ae, or a retail partner's receiving dock.
Should the Noon identifier or the ASIN go into the second barcode slot now that there is one? No. Neither is a GTIN. Multi-barcode support is for genuine trade identifiers, not for every number a marketplace hands you. Keep the barcode field clean and your feeds stay predictable.
What breaks if I just leave the old single barcode in place? Usually nothing, until a marketplace rejects a batch or Google disapproves items mid-campaign. The cost shows up as lost impressions during the one week a year you most need them.
If you want a second pair of eyes on the catalogue before the next peak, our Dubai team will run the barcode column through check-digit validation and duplicate detection and send you the list of what fails. Start with a free audit and attach a CSV export of your products.


