PIDReadyInstall free on Shopify

Help

Getting started

How do I get started?

Install PIDReady from the Shopify App Store and approve access to products and inventory. The first check starts on its own, and Home shows how many products are ready for EU customs and what is missing. Then follow the four steps of the guide on Home: see what's missing, fix it (many products at once, or in a spreadsheet) and download the file for your carrier.

Why do these codes matter, and from when?

From 1st November 2026, EU customs need product identifiers on every item in a parcel worth up to EUR 150 sent to an EU shopper from outside the EU (Commission Delegated Regulation (EU) 2026/1022 and the European Commission's guidance of 5th October 2026). Parcels with missing identifiers can be held up at the border.

Does PIDReady send the data to my carrier?

No. Download the file your carrier expects from the Carrier file page and upload it there, or let your shipping platform read the Shopify fields directly.

How do my carrier and shipping apps get these identifiers?

PIDReady saves them in your Shopify store: the SKU, barcode, HS code and country of origin in Shopify's own fields, and the maker's code as the variant's NS-PID barcode (or, on a variant with no product barcode, in the variant metafield custom.ns_pid), which apps that read your products can use. With 'I make my own products' on, your SKU stands in for the maker's code in PIDReady's files; the bulk action 'Use SKU as maker's code' also saves it in Shopify. If you create shipments from a spreadsheet, download a file from the Carrier file page: the FedEx file follows FedEx's EU guide and writes NO when there is no barcode; the Royal Mail and Ordoro files are for their product imports; the universal file has every identifier and the Y081 exception. Not every app reads them from Shopify (Shippit, for one, uses its own catalogue): see "Which field does your shipping app read?" in the app's Help page.

Which products should I mark 'Not sold to the EU'?

Gift cards and other products that Shopify marks as not needing shipping are left out automatically. Mark anything else you never ship to the EU, for example items only sold locally. Those variants are left out of the readiness score and the carrier files; you can include them again at any time.

The codes explained

What are M-PID, NS-PID and S-PID?

Three product identifiers EU customs require from 1st November 2026 on every item in a parcel worth up to EUR 150 sent to an EU shopper from outside the EU. M-PID is your own code (the SKU): PIDReady calls it 'Your product code (SKU)'. NS-PID is the code the manufacturer or supplier uses: PIDReady calls it 'Maker's code'. S-PID is the retail barcode (UPC, EAN, ISBN or GTIN) when one exists; if not, an exception is declared. Customs also ask for the HS code, which PIDReady calls 'Customs code (HS)', and the country of origin, which it calls 'Made in'.

I make my own products. What is my maker's code?

You are the maker, so you set it yourself: customs guidance sets no format for it. Turn on 'I make my own products' in Settings and PIDReady uses your SKU as the maker's code.

Pieces of the same model and size share one SKU. Is that a problem?

Not when they are the same product to you, as with handmade or one-of-a-kind pieces sold as one model: the SKU is your own code for the product. Most stores give every variant its own SKU, so PIDReady points out a SKU used twice in case it is a mistake. If yours are shared on purpose, turn on 'Products of the same model and size can share one SKU' in Settings: PIDReady checks your catalogue again, stops flagging them, and they count as ready once everything else is filled in.

My product has no barcode. What do I do?

Tick 'Has no barcode' on the variant. PIDReady then declares the exception (code Y081) in the universal carrier file and writes NO in the FedEx file, exactly as FedEx asks. You do not need to buy a barcode just for customs. From 1st November Shopify won't sell a label for an EU parcel up to EUR 150 if an item has neither a barcode nor Shopify's own 'Has no standardized identifier' setting, so PIDReady turns that setting on for every variant you mark (and off again if you unmark it or undo). You can see it in Shopify: open the variant, go to the Shipping section, click More details, under 'EU customs declaration'.

How do I find a product's customs code (HS)?

The HS code classifies a product for customs, and its first 6 digits are the same in every country. Search by product description in the EU TARIC database, on the European Commission's website, or in the UK Trade Tariff on GOV.UK, or ask your supplier: it is often on their invoices. Similar products usually share a code, so you can set it for many variants at once with More bulk actions.

What goes in 'Made in'?

The country where the product was made, or where it last changed substantially: customs call it the country of origin. It is not the country you ship from. Type the country's name or its two-letter code (for example Portugal or PT), and PIDReady saves the code Shopify uses. When most of a vendor's other products are made in one country and a product says another, the Fixes page asks you to check it (Check 'Made in'); it may be right, and nothing changes unless you change it.

Where does PIDReady store the maker's code?

In Shopify's own field for it: the variant's barcodes, with the type NS-PID that Shopify added for EU customs. PIDReady adds it after the variant's other barcodes, so your product barcode (UPC, EAN, ISBN or GTIN) stays first. A variant with no product barcode keeps it in the variant metafield custom.ns_pid instead, because sales channels such as Google & YouTube read the first barcode as the GTIN. You can see and edit it on the variant in Shopify, and it stays with your store even if you uninstall the app. Earlier versions of PIDReady kept every maker's code in that metafield: it still counts, and Settings can copy it to NS-PID barcodes.

Can PIDReady use maker's codes my store already has?

Yes. If you entered an MPN (manufacturer part number) for the Google & YouTube channel, PIDReady suggests it as the maker's code of the variants that miss one; a product's own MPN is only used when the product has a single variant, because it cannot tell sizes or colours apart. If you keep maker's codes in a variant metafield, choose it in Settings and it is checked first. Suggestions appear on the Fixes page with where they come from, and nothing changes until you click Use or apply them in bulk.

Fixing safely

What does Fix everything I can do?

It runs every quick fix that needs no answer from you, in one go: product codes (SKU) made from the names, maker's codes your store already has, and 'Made in' and customs codes learnt from your own products. You see one preview first, with what each fix changes and an example, and one Undo in History puts it all back for 30 days. What only you know is left as questions: whether you make your products, which products never had a barcode, and where the rest were made.

Can PIDReady delete or break my products?

No. It only changes the customs values you choose (product code, maker's code, barcode, customs code and 'Made in' country, plus the 'Has no barcode' and 'Not sold to the EU' marks), and never deletes products or variants. Every change is saved in History with the value it replaced, and Undo puts the old values back for 30 days. When Shopify refuses a change, PIDReady says so next to the value and in History, instead of reporting success.

Where do the suggested customs codes and countries come from?

First from your own products. When the other variants of a product agree on a value, it is suggested with High confidence. Otherwise PIDReady looks at your products of the same type from the same vendor, of the same type, in the same collection or with the same word in their name (for the country, from the same vendor), and suggests a value only when at least 8 in 10 of them use it: High when 5 or more agree, Medium otherwise. When your store has no similar product, PIDReady looks up the product's type or name in the UK Government's Trade Tariff and suggests the closest 6-digit HS code with Low confidence: only the type or a few words of the name are sent. Each suggestion says why. Nothing changes until you click Use or apply it, and History can undo it for 30 days. It is a suggestion, not a ruling: check it fits the product with your carrier or customs broker, because the customs code decides the duty.

How do I get maker's codes from my suppliers?

On the Fixes page, click Use a spreadsheet. Under Ask a supplier, choose the supplier (the vendor of the products in Shopify) and download their sheet: it has only their products that still miss something, one row per variant, with a column for each code. Send it to them; the maker's code goes in the ns_pid column and the barcode in the barcode column. Then upload the file they send back: every row is checked before anything changes, and History can undo it for 30 days.

Which files can I import?

Excel workbooks (.xlsx) and CSV files, from Excel, Numbers, Google Sheets or any other app. Start from PIDReady's template: on the Fixes page, click Use a spreadsheet. The template has a variant_id column that tells PIDReady which variant each row is. In a workbook with several sheets, PIDReady reads the first one with that column. Formulas count as the value they show. An older Excel file (.xls) or a Numbers file has to be saved as .xlsx or CSV first. A supplier's own list works too, as it is, if it has a SKU column: PIDReady finds each variant by its SKU (a SKU that several variants share needs the template).

My spreadsheet changed my codes (leading zeros, 5.01235E+12). What should I do?

Spreadsheet apps read codes as numbers: they drop leading zeros and round long numbers (5012345678900 becomes 5.01235E+12). The Excel template avoids this, because its code columns are already formatted as text. With a CSV file, PIDReady ignores this in the cells you haven't edited, so you can upload the file as it is; before typing a code that starts with 0 or is long, format its column as text (Excel: Format Cells › Text; Numbers: Data Format › Text; Google Sheets: Format › Number › Plain text) and save the file as CSV UTF-8.

Plans, data and support

What does the free plan include?

Everything, for any size of store, with no limit: checking your products, the report, quick fixes, Fix everything I can, customs code suggestions, fixing one by one or in bulk, spreadsheets and carrier files. The paid plans also keep things up to date for you: they fill the HS code and 'Made in' of the sizes and colours you add later (Starter for stores with up to 1,000 variants you ship to the EU, Pro for any size) and of new products when your other products clearly agree, put back codes another app or an import empties, email you if a ready product loses a code (with emails on) and keep Starshipit's fields up to date.

Is my data safe?

PIDReady only asks Shopify for access to products and inventory, never customers or orders. Its data is stored in the EU and your store's access token is encrypted. When you uninstall the app, its access ends at once and everything it stored about your store is deleted 48 hours later, when Shopify asks for it. The identifiers you filled in stay in your own store.

The scan could not finish. What should I do?

Click Scan again on Home. If it keeps failing, email support with the code shown on Home and your store's .myshopify.com address.

PIDReady says the maker's code field is not ready. What should I do?

PIDReady keeps the maker's code of variants with no product barcode in a variant metafield. If its Settings say one with the same name already exists with another type, rename that one in Shopify (Settings › Custom data › Variants). Then click Repair in PIDReady's Settings.

Contact support

Email us at support@pidready.com and include your store's .myshopify.com address. Alex, who builds PIDReady, replies personally within one working day.

support@pidready.com