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 pages document three ways to set an HS code, plus two more through the inventory side. None of them costs anything, and a store that only needs one of them does not need an app at all.
| 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 bulk editor | Products > Inventory > select > Edit variants > Columns | A known list, all three customs fields at once | Still needs the list. Variants set not to track quantity never appear on the Inventory page. |
| 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 five 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 — and finding out which products are missing a code is a genuinely separate job from filling it in.
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 — they are also what produces Shopify's "harmonized code is invalid" error.
- 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. The five bulk methods, compared.
- 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.
One tool, doing all four
Those four jobs in one pass: scan, gap list, bulk fix, writeback. This is Origova doing them on a real Shopify catalog.
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 developer docs: InventoryItem · Shopify: Adjusting inventory quantities in bulk · USITC HTS
Related: Find products missing HS codes · Bulk edit HS codes in Shopify · Shopify customs information · Products missing a country of origin · What is an HS code? · Origova docs · Pricing