Guide

How to bulk edit HS codes in Shopify

Setting one HS code takes about ten seconds. Setting four hundred is a different job, and Shopify's own documentation is candid about the limits of its native paths — they are written for merchants who don't have many products to update and already know the codes. This guide covers where the field actually lives, how far each bulk method gets you, and the realistic ways to bulk edit HS codes across a whole Shopify catalog. If you don't yet know which products are missing one, start by finding the gaps — that's a separate job from filling them.

Where the HS code field lives (and why it's easy to miss)

The HS code isn't a normal product field. It's stored on each variant's inventory item, and in Shopify's admin it lives inside the Shipping card near the bottom of the product editor — but only when the Physical product toggle is on. Even then, the field itself sits inside a Customs information subsection that's often collapsed by default. So the path for one product is: open the product → scroll to Shipping → make sure Physical product is on → expand Customs information → enter the code → save. Multiply that by your catalog size and you can see the problem.

Is Shopify's HS code bulk editor enough?

Shopify has two bulk editors, and the difference matters. From the Products page, selecting products and clicking Bulk edit > Columns gives you Harmonized system code under Shipping. The separate inventory bulk editorProducts > Inventory > select variants > Edit variants > Columns — goes further: Shopify documents Harmonized system code, Country of origin and Weight as editable variant properties there. That makes it the only native surface that reaches all three customs fields in one grid, and it costs nothing.

Two limits stop it being the whole answer. First, it edits the variants you hand it — Shopify's product list has no filter for "HS code is empty," so building that selection means opening products one at a time or exporting a spreadsheet, and the standard product CSV has no HS code column at all because the value lives on the inventory item. Second, variants set not to track quantity don't appear on the Inventory page at all, so the inventory bulk editor can't reach them even though they still ship and still need a code. Shopify gives you the editor. It doesn't give you the list.

If you landed here from the admin error that blocks a label purchase, that one has its own walkthrough: "HS codes and country of origin are required".

Option 1: one product at a time

For a dozen SKUs, the manual path above is honestly fine. Budget roughly a minute per product once you're in a rhythm. The pain isn't any single edit — it's that Shopify gives you no list of which products are missing a code, so you're opening every product just to check.

Option 2: spreadsheet-driven import apps

Heavy-duty import/export apps (Matrixify is the best known) can read and write inventory-item fields, including HS codes, through their own extended spreadsheet formats. If you already live in spreadsheets and know exactly which products need which codes, this works well. The trade-offs: you're driving a general-purpose tool with a learning curve, and it assumes you already know what's missing — the audit step is still on you.

Option 3: scan first, then fix in bulk

Origova approaches it from the audit side: it scans your whole catalog, shows you exactly which variants are missing an HS code (or have one in a format customs will reject — anything outside 6–10 digits), and lets you select the affected items and apply a code to all of them in one batch. The write goes to the real Shopify inventory item — under Shopify's own API rate limits, so a batch of thousands of variants takes several minutes and keeps applying in the background — every batch is undoable, and non-physical items like gift cards can be excluded with one click. Your first scan takes about two minutes on a typical store, a few minutes more on large catalogs — the docs walk through it.

What the bulk fix actually looks like

Rather than describe the bulk edit, here it is on a live catalog — a set of products selected, one code applied to all of them, written back to Shopify. Options 1 and 2 above are still the right call for small catalogs.

A note on choosing the right code

No app can tell you what your product is — classification is your call. The first 6 digits of an HS code are internationally standardized; anything beyond that is country-specific (US imports use 10-digit HTS codes, for example). If several of your products are variations of the same thing, they usually share a code, which is exactly why bulk application makes sense. For genuinely ambiguous products, a customs broker or your carrier's classification help is worth the question — this guide isn't legal or customs advice. If you sell apparel, our clothing and apparel HS code guide walks through the headings that cover a typical store.

The short version

Native admin: fine for a handful of products. Spreadsheet apps: powerful if you already know what's missing and like driving spreadsheets. Scan-first: fastest path from "I have no idea which products are missing codes" to "done, in bulk, reversibly." That last gap — knowing what's missing — is the part Shopify doesn't solve at any catalog size.

The five methods, side by side

MethodCost~Time per 1,000 variantsWhere it breaks
Admin, product by productFree8–15 hoursNo way to see what is missing; you open all of them to find the empty ones
Native bulk editorFree2–4 hoursLets you type codes down a grid, but you must already know which products to load into it
Inventory CSV export/importFree1–2 hoursThe product CSV has no HS code column; you need the inventory export, and reimport is unforgiving of format errors
Matrixify or similarPaid1–2 hoursPowerful and general-purpose; the learning curve is the cost, and mistakes apply at full catalog scale
Purpose-built appFree–$15/mo15–40 minutesNarrower scope — it fixes customs data and does not do general catalog editing

HS code and country of origin in Shopify: two fields, one pass

These two get searched for together because they fail together. Shopify blocks an international shipping label when either is missing, and both live on the same inventory item behind a variant rather than on the product — which is why the product CSV carries neither.

Where they diverge is the tooling. The product-page bulk editor documents the HS code column; the inventory bulk editor documents both fields plus weight; the inventory CSV carries HS Code and COO together, with origin as an ISO country code rather than a country name. So one pass can cover both — if you already know which variants are empty.

Origin also carries a trap the HS code doesn't: it means where the product was made, not where you ship it from, and setting it to your warehouse country is a misdeclaration rather than a shortcut. The four methods for bulk editing country of origin →

Frequently asked questions

Does Shopify's product CSV include HS codes?

No. HS codes live on each variant's inventory item, and the standard product CSV import/export doesn't include an HS code column — so a spreadsheet round-trip through the native CSV can't fill them in.

Where is the HS code field in Shopify admin?

Open a product, scroll to the Shipping card near the bottom, make sure the Physical product toggle is on, then expand the Customs information subsection — the HS code field is there, per variant. Customs information is often collapsed by default.

What format does an HS code need to be in?

6 to 10 digits. The first 6 digits are the internationally standardized HS classification; digits beyond that are country-specific extensions (like the 10-digit HTS codes used for US imports).

Do digital products and gift cards need HS codes?

No — HS codes classify physical goods crossing a border. Digital products, services, and gift cards don't need one, which is why a compliance scan should let you exclude them.

Does Shopify have an HS code bulk editor?

Two, in effect. The product-page bulk editor exposes a Harmonized system code column under Shipping, and the separate inventory bulk editor (Products > Inventory > Edit variants > Columns) exposes Harmonized system code, Country of origin and Weight together. Neither tells you which variants are missing a value, and the inventory editor cannot see variants that are set not to track quantity.

Can I bulk edit HS codes and country of origin at the same time?

Yes. The inventory bulk editor and the inventory CSV both reach both fields in one pass — country of origin as an ISO country code. Neither reaches weight, which lives in the product CSV instead, so a complete customs cleanup is still at least two passes. Why weight sits in a different file.

Sources for this page: Shopify: Adding HS codes to your products (product-page bulk editor path) · Shopify: Adjusting inventory quantities in bulk (Harmonized system code, Country of origin and Weight as inventory bulk editor variant properties; untracked variants not listed) · Shopify: Exporting and importing inventory with a CSV file. Checked 26 August 2026.

Primary source for US classifications: the official Harmonized Tariff Schedule (hts.usitc.gov). The statute ending de minimis: 19 U.S.C. § 1321 (Cornell Law, LII).

Related: What is an HS code? The Harmonized System, explained · HS codes for clothing and apparel · What a Shopify HS code app should do · Products missing a country of origin · De minimis is gone: the new customs reality · HS codes for cosmetics & skincare · Origova pricing

See what's missing before you start typing.

Every bulk method works better with a gap list. Scanning your whole catalog is free at any size.

Install on Shopify