Shopify HS code app: what one should actually do
If you are searching for a Shopify HS code app, you have probably already discovered that Shopify does not lack a place to put an HS code. It lacks a way to find out which of your products are missing one.
That distinction is the entire product category. This page lays out what Shopify gives you natively, exactly where each method stops being useful, and the four jobs a tool has to do before it earns a place in your stack. It is written by the founder of one such app, so treat the comparison as informed rather than neutral — the native methods are described from Shopify's own documentation so you can check them yourself.
What Shopify already does natively
Shopify's own help page documents three ways to set an HS code, and there is a fourth route through the inventory CSV. None of them costs anything.
| Method | Where | Good for | Where it runs out |
|---|---|---|---|
| At label purchase | Buying a shipping label | One urgent order | Fixes the label, not the catalog. The next order asks again. |
| Product page | Products > product > Shipping section | A handful of products | One product at a time, and you must already know which need it. |
| Bulk editor | Products > select > Bulk edit > Columns > Harmonized system code | A known list of products | You must first know which products to select. No undo across the batch. |
| Inventory CSV | Products > Inventory > Export / Import | Large known batches | Round-trip through a spreadsheet; no validation before re-import. |
Read that last column again, because it is the same sentence four times: every native method assumes you already know which products are wrong. On a 200-product store you can eyeball it. On a 4,000-variant store you cannot.
Why the count is bigger than you think
HS code and country of origin do not live on the product. Shopify moved them to the InventoryItem resource and deprecated the older harmonizedSystemCode metafield on product variants. Practically, that means the field is per variant, not per product.
A single t-shirt design in 6 sizes and 8 colours is 48 inventory items. A catalogue of 300 such products is 14,400 records, each of which can independently be blank, correct, or confidently wrong.
The four jobs a tool has to do
- Find. Produce a list of every variant with no HS code, no country of origin, or no weight — across the whole catalogue, not the current page.
- Validate. Flag codes that are structurally impossible: fewer than six digits, odd digit counts, letters in a numeric field. These pass Shopify's field and fail at the border.
- Apply in groups. Let you set one code across a real group — all silicone cases, all cotton tees — rather than one variant at a time.
- Undo, and re-check. Reverse a bulk decision that turned out wrong, and re-scan as new products arrive, because the catalogue does not hold still.
A tool that only does job 3 is a faster version of the bulk editor. Shopify already ships that for free.
What no app should claim
Some listings in this category imply the software decides your classification. Be careful with that. Classification turns on material, use, composition, and sometimes country — a leather case and a silicone case in the same product line land in different headings. An AI suggestion with a confidence score is a starting point for review, not a filing decision.
Origova is explicit about this: it audits and bulk-fixes catalogue data, and it does not calculate duties at checkout or make the final classification call. If you need duty collection at checkout, that is a different category of product and Shopify's own duties feature or a checkout-duty app is the right tool.
A short buying checklist
| Ask | Why it matters |
|---|---|
| Can I see what is missing before I pay? | If the audit is behind the paywall you cannot size the problem first. |
| Does it cover country of origin and weight, or only HS codes? | A label needs all three. Fixing one leaves the shipment blocked on another. |
| Is it per product or per variant? | Per-product pricing on a per-variant field understates the real bill. |
| Is there an undo? | Bulk mistakes are the expensive kind. |
| Does it re-check new products? | A one-time cleanup decays the moment you add a SKU. |
The short version
Shopify gives you four free places to put an HS code and no way to find the gaps. If your catalogue is small enough to audit by hand, use the bulk editor and skip the app. If it is not, the thing you are buying is the audit and the undo, not the data entry.
Frequently asked questions
Does Shopify have a built-in way to add HS codes?
Yes. Shopify documents three: entering a code when you buy a shipping label, typing it on the product page under the Shipping section, and the bulk editor at Products > select items > Bulk edit > Columns > Harmonized system code. There is also an HS Code column in the inventory CSV.
So why would I need an HS code app at all?
The native methods all assume you already know which products are missing a code and what the code should be. They give you no inventory-wide view of what is missing, no validation of what is already there, no undo across a bulk change, and no re-check as the catalog grows.
Does an HS code app decide the classification for me?
No responsible one does. Classification depends on material, use, composition and origin, and it is a judgment call with legal consequences. A tool can surface gaps, apply a decision across many variants, and flag malformed codes. The decision itself belongs to you or a licensed customs broker.
Where do HS codes actually live in Shopify's data?
On the InventoryItem, not on the product. Shopify's developer changelog moved HS code, country of origin and province of origin to the InventoryItem resource and deprecated the harmonizedSystemCode metafield on product variants. That is why a 12-colour, 6-size product is 72 separate records to fill.
What happens if I leave HS codes blank?
Shopify says duty calculations fall back to the product's description and category, which it describes as 'less accurate'. It also warns that inaccurate or missing information may result in additional duties being charged to the customer on delivery.
Sources for this page: Shopify: Adding HS codes to your products · Shopify: Duties and taxes for markets · Shopify dev changelog: InventoryItem · USITC HTS
Related: Shopify country of origin · Bulk-add HS codes · What is an HS code? · Pricing