Blog · 27 October 2026 · 8 min read

EU product identifiers from 1 November 2026: get barcodes in order

Shopify Shipping and Managed Markets labels to the EU need product identifiers from 1 November 2026. How to find variants with no GTIN or SKU and fix them.

On 24 October 2026 Shopify's changelog announced that labels bought through Shopify Shipping and Managed Markets for parcels going to the European Union will carry three product identifiers, and that from 1 November 2026 a label cannot be bought for an EU order whose items are missing them. The identifiers are not new fields. They are the barcode and the SKU you already have on each variant, plus one Shopify fills in itself. The work, for most stores, is finding the variants where those fields are blank or wrong before a customer in Lyon places an order and the label step refuses.

This post is about that audit: what the three identifiers are, which Shopify fields they come from, and how to use Restock Ops to find the gaps quickly, since purchase orders, label printing and stocktakes all read the same barcode and SKU fields and show you at once where they are empty.

The three identifiers

Shopify's help page on EU product identifiers describes them in the terms the EU customs reform uses. Each has a direct counterpart in the product form.

What goes on an EU label and where Shopify takes it from
IdentifierWhat it isWhere it comes from
Merchant Product Identifier (M-PID)A code unique to your business for the itemThe Shopify variant ID. Automatic, nothing to do.
Standardized Product Identifier (S-PID)A GTIN: EAN, UPC or ISBNThe variant barcode, with a GTIN type. If the product has none, you declare that.
Non-Standardized Manufacturer Identifier (NS-PID)A model number, part number or style codeA barcode of type NS-PID, or the SKU as a fallback; if neither exists the S-PID is used.

Why the barcode type now matters

Since Shopify's October product details update a variant can hold up to twenty barcodes, each with a type: Custom, GTIN, UPC, EAN, ISBN, ASIN or NS-PID. Before, a barcode was a single untyped string. That change is what makes the EU identifiers workable, because the label system can tell a GTIN from a supplier's internal code by reading the type rather than guessing from the digits.

It also means an old barcode that was imported years ago as Custom, even if it is a perfectly valid thirteen-digit EAN, may not be recognised as an S-PID. The fix is to open the variant and set the type, or to do it in bulk from the bulk editor, which the changelog says supports the new identifier fields. The post on multiple barcodes per variant covers how the new fields relate to what you print.

Parcels are affected when they are declared as direct-to-consumer and valued under 150 euros, which is most of what a Shopify store ships to the EU. Shopify's reason for the hard stop is practical: a label without the identifiers risks a customs rejection and a return-to-origin charge, which costs more than the sale.

What Restock Ops reads, and what it never writes

Restock Ops pulls each variant's SKU and barcode from Shopify when it builds a purchase order, prints labels or opens a stocktake. It reads the barcode field the Admin API exposes on the variant, which is the primary barcode, and it stores a snapshot of SKU and barcode on each purchase order line so that an old PO still shows what the codes were at the time. It does not edit barcodes or SKUs. The product form and the bulk editor are where those change, and the app simply reflects them on the next load.

That read-only position is useful here, because it means every screen in the app that shows a blank where a code should be is pointing at a Shopify field you need to fill in, and nothing the app does can mask the gap.

Finding variants with no barcode or SKU

Three places in the app surface the gaps. Use whichever matches how your catalogue is organised.

  • Labels. Open Labels, pick the products or a purchase order, and look at the preview. A variant with a valid EAN-13, UPC-A or EAN-8 prints that symbology; any other barcode prints as Code 128; a variant with no barcode falls back to the SKU in Code 128; a variant with neither shows a badge saying it has no barcode or SKU. That last group is your NS-PID problem list, and the Code 128 group deserves a look too, because it holds the barcodes that are not a GTIN.
  • Purchase order export. Export any PO to CSV and the barcode and SKU columns are there per line. Sort on the barcode column in a spreadsheet and the blanks rise to the top. Doing this for your main suppliers' POs covers the products you actually reorder, which are the ones most likely to ship.
  • Product search. The PO line picker and the stocktake entry accept sku: and barcode: prefixes. Searching for a known code confirms a variant is findable by it; a product that only turns up by title has no code to find it by.

Fixing them in Shopify

For products you buy in, the GTIN is on the supplier's packaging or price list. Add it as the barcode with type EAN, UPC or ISBN as appropriate, and the label system has its S-PID. The supplier SKU versus your SKU post is relevant if your supplier's code and your own have drifted apart, because the EU rule treats the manufacturer's model or part number as the NS-PID and your SKU only as a fallback.

For products you make, there is usually no GTIN. Shopify lets you declare that a product has none, so that labels proceed on the M-PID and NS-PID. Make sure the SKU is filled in on every such variant, since it is doing the NS-PID job. Many handmade stores leave SKUs blank; now is the time to adopt a simple scheme, even if it is just a prefix and a number.

Do the edits in the bulk editor with a filter on the affected products, or by CSV import if the list is long. Then reload the Labels page in Restock Ops and confirm that the badges are gone and that the symbology column shows EAN-13 or UPC-A where you expect it. The GS1 check digit is verified before those symbologies are chosen, so a code that still prints as Code 128 after you typed it as an EAN has a typo in it.

Stocktakes as a side benefit

Once every variant has a barcode, a scanner-driven stocktake works end to end: scan the code, the count increments, type 3*CODE for a shelf of three. Variants without barcodes were always the ones that broke the rhythm of a count, as the barcode stocktake post describes. The EU deadline is a reason to finish the job you may have been putting off, and the count gets faster as a consequence.

A short plan for the week before the deadline

  • Monday: open Labels in Restock Ops for your top suppliers' POs and list the variants with the no barcode or SKU badge and those printing as Code 128.
  • Tuesday: collect GTINs from supplier price lists for the bought-in products; decide a SKU scheme for own-brand products.
  • Wednesday: bulk edit barcodes and types, and SKUs, in Shopify. Declare no GTIN where that is the truth.
  • Thursday: place a test order to an EU address on a development store or a draft order you then cancel, and walk through the label step to see whether it accepts the items.
  • Friday: reload Labels, confirm the badges are gone, and print a sheet for the next inbound delivery so receiving staff have the right codes on day one.

FAQ

Does Restock Ops add the EU product identifiers to my products?

No. The identifiers come from the variant's barcode, barcode type and SKU in Shopify, plus the variant ID that Shopify supplies itself. Restock Ops reads those fields for purchase orders, labels and stocktakes and shows where they are blank, which is what makes it a quick way to audit before the 1 November 2026 deadline. The edits happen in the product form or the bulk editor.

My barcodes are valid EANs but were entered before barcode types existed. Are they fine?

The digits are fine, but the type may be recorded as Custom, and the label system identifies an S-PID by type. Check a few variants; if the type is Custom, set it to EAN in bulk. In Restock Ops a thirteen-digit code with a correct check digit prints as EAN-13 regardless of type, so the Labels preview confirms the digits but not the type.

What if a product genuinely has no GTIN?

Shopify lets you declare that a product has no standardized identifier, so the label proceeds on the merchant identifier and the non-standardized one. For that to work the variant needs an NS-PID barcode or a SKU. Fill in the SKU on every own-brand variant; that is the field the EU rule falls back to.

Which orders does the rule apply to?

Labels bought through Shopify Shipping or Managed Markets for parcels to EU destinations, declared as direct-to-consumer and under 150 euros in value, from 1 November 2026. Other carriers and B2B shipments are outside the Shopify announcement, though the same customs data is increasingly expected everywhere, so the audit is worth doing once for all channels.

Try it on your store. Restock Ops adds purchase orders with partial receiving, supplier notes, cost history, barcode labels, scanner stocktakes and a reorder report on top of Shopify inventory. From $19/month, 14-day free trial.

Install on Shopify Watch the demo

Sources