# Shopify HS Code App: What One Should Actually Do

> Shopify already has three native ways to set HS codes. Here is what an HS code app has to add to be worth installing, and where each native method runs out.

Canonical: https://origova.com/shopify-hs-code-app

---

# Shopify HS code app: what one should actually do

_By [Spencer Flaherty](https://origova.com/about), founder of Origova_

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.

> **Where does your catalog stand?** — Origova scans every variant for missing or malformed HS codes, country of origin and weight — free, at any catalog size. [Run the free scan](https://apps.shopify.com/origova)

## 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.

_Native Shopify methods for setting HS codes, and the limit of each_

| 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 failure mode is not an empty field** — A missing HS code is visible. A plausible-but-wrong HS code applied across 900 variants is invisible until a shipment is held. That asymmetry is why validation matters more than entry speed.

## The four jobs a tool has to do

1. **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.
2. **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.
3. **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.
4. **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](/origova-vs-zonos) and Shopify's own duties feature or a checkout-duty app is the right tool.

## A short buying checklist

_Questions worth asking before installing anything in this category_

| 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](/bulk-edit-hs-codes-shopify) and skip the app. If it is not, the thing you are buying is the audit and the undo, not the data entry.

> **Not customs advice** — Origova scans and bulk-fixes the customs data in your Shopify catalog. It does not replace a licensed customs broker and it does not make the final classification decision for you. Classification depends on the product's material, use, composition and origin. Verify classifications with the [HTS](https://hts.usitc.gov), [CBP rulings](https://rulings.cbp.gov), or a licensed customs broker.

## 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](https://help.shopify.com/en/manual/international/shipping/hs-codes) · [Shopify: Duties and taxes for markets](https://help.shopify.com/en/manual/markets/customizations/duties-and-taxes) · [Shopify dev changelog: InventoryItem](https://shopify.dev/changelog/the-inventoryitem-resource-now-includes-hs-codes-country-codes-and-province-codes) · [USITC HTS](https://hts.usitc.gov)

Related: [Shopify country of origin](https://origova.com/shopify-country-of-origin) · [Bulk-add HS codes](https://origova.com/bulk-edit-hs-codes-shopify) · [What is an HS code?](https://origova.com/what-is-an-hs-code) · [Pricing](https://origova.com/pricing)
