WooCommerce HS Codes: How to Add Customs Codes to Your Products
WooCommerce doesn't have a built-in HS code field — but customs authorities still require one for international shipments. Here's the fastest way to find and add HS codes to every product in your WooCommerce store.
If you run a WooCommerce store and ship internationally, you need HS codes on your customs declarations — CN22 forms, CN23 forms, commercial invoices, and carrier customs data. The problem: WooCommerce core doesn't include an HS code field by default. This guide covers how to add HS code support, how to find the right codes for your products, and how to update a large catalog efficiently.
Does WooCommerce have a built-in HS code field?
No — WooCommerce core does not include an HS code (Harmonized System code) field in the default product data panel. To store HS codes against your products, you need one of the following:
1. WooCommerce Shipping plugin (Jetpack/WooCommerce.com) The official WooCommerce Shipping plugin (free, by Automattic) adds a "HS tariff number" field to each product's Shipping tab. If you purchase shipping labels directly through WooCommerce Shipping, this field pre-populates customs forms automatically.
2. Third-party shipping plugins (ShipStation, Shippo, EasyPost, Royal Mail Click & Drop) Most major shipping plugins accept HS codes per product or per order. The field is typically in the plugin's product sync settings — look for "Customs code," "Tariff code," or "HS code."
3. Custom product meta field For stores using custom shipping integrations or fulfillment APIs, you can add a custom meta field via WooCommerce's product meta system. Use a plugin like Advanced Custom Fields (ACF) or WooCommerce Custom Product Tabs to create a "HS Code" field, then read it via your shipping/fulfilment API.
How to add the HS code field in WooCommerce (step by step)
Using WooCommerce Shipping plugin:
1. Install and activate the WooCommerce Shipping plugin from WooCommerce.com (free). 2. In your WordPress admin, go to WooCommerce → Settings → Shipping and connect your WooCommerce.com account. 3. Open any product: Products → [Product name] → Shipping tab. 4. You'll see a new "HS tariff number" field and a "Country of origin" field. 5. Enter the 6-digit HS code for the product.
The HS code is then included on customs declarations when you print shipping labels via WooCommerce Shipping. For carrier plugins (DHL for WooCommerce, FedEx, UPS) the field name and location varies — check your plugin's settings panel.
Using a custom product meta field (code approach):
Add this to your `functions.php` or a custom plugin:
```php // Add HS code field to WooCommerce product Shipping tab add_action('woocommerce_product_options_shipping', function() { woocommerce_wp_text_input([ 'id' => '_hs_code', 'label' => 'HS Code', 'placeholder' => 'e.g. 6109.10', 'desc_tip' => true, 'description' => '6-digit Harmonized System code for customs declarations.', ]); });
add_action('woocommerce_process_product_meta', function($post_id) { if (isset($_POST['_hs_code'])) { update_post_meta($post_id, '_hs_code', sanitize_text_field($_POST['_hs_code'])); } }); ```
This stores the HS code as product meta and makes it available for your shipping integration to read via `get_post_meta($product_id, '_hs_code', true)`.
How to find the right HS code for your WooCommerce products
The HS code must match what the product actually is — not what you'd like it to be. Customs authorities can and do audit, and a wrong HS code can mean underpaid or overpaid duty, delays, or seizure.
Method 1: Use an AI classification tool (fastest) Describe your product in plain language and get the 6-digit HS code with applicable duty rates for your key markets. Dutiable's free HS code lookup returns the code, EU/US/UK duty rates, and the classification reasoning — useful for borderline products where the heading isn't obvious.
Method 2: WCO HS nomenclature (authoritative) The World Customs Organization publishes the official schedule at wcoomd.org. Useful for understanding why a code was assigned, or for verifying AI output on unusual products.
Method 3: Your freight forwarder or customs broker For high-value products, products with restricted import rules (electronics with radio functions, chemicals, certain textiles), or products you're unsure about, consult a licensed broker. They can also apply for a Binding Tariff Information (BTI) ruling — an official determination that protects you from duty adjustments if customs later disputes your classification.
Method 4: Bulk classify from a WooCommerce export For stores with large catalogs, the most efficient route is batch classification.
Common WooCommerce product types and their HS codes
These are the most common product types sold through WooCommerce stores and their typical 6-digit HS codes. The correct subheading depends on exact materials, function, and market — use these as a starting point.
| Product type | Typical HS code | EU duty | US duty | UK duty |
|---|---|---|---|---|
| Cotton T-shirts | 6109.10.00 | 12% | 16.5% | 12% |
| Wireless headphones | 8518.30.95 | 0% | Free | 0% |
| Smartphone cases (TPU) | 3926.90.97 | 6.5% | 5.3% | 6.5% |
| Scented candles | 3406.00.11 | Free | Free | 0% |
| Yoga mats (rubber) | 4016.91.00 | 2.7% | Free | 2.7% |
| Children's toys (plastic) | 9503.00.75 | Free | Free | 0% |
| Face serum / skincare | 3304.99.00 | Free | Free | 0% |
| Ceramic coffee mugs | 6912.00.23 | Free | Free | 0% |
| Wooden cutting boards | 4419.11.00 | 3.7% | Free | 3.7% |
| Printed tote bags (cotton) | 6305.20.00 | 12% | 6.3% | 12% |
What happens if you use the wrong HS code on WooCommerce orders?
WooCommerce passes the HS code you've entered directly to customs declarations. If the code is wrong, here's what can go wrong:
- Customs hold: The parcel is flagged for manual inspection. Delays of 5–15 business days are common, leading to customer complaints and refund demands. - Underpaid duty: If your code has a lower duty rate than the correct one, the importer (your customer) gets an unexpected bill. That's a fast way to generate chargebacks. - Overpaid duty: More common than you'd think — costs your customers money and makes you uncompetitive against correctly-classified rivals. - Product seizure: For goods that require import licenses, certifications (CE, FCC), or are subject to restrictions, using the wrong HS code that avoids the flagged category can result in confiscation. - Audit liability: If customs audits your business and finds systematic misclassification, penalties can apply to all shipments in the review period, not just the ones caught at the border.
The risk profile depends on the product category. Low-duty, unrestricted goods (mugs, textiles, basic plastic items) have limited consequences. Electronics with radio transmitters, certain chemicals, food-contact materials, and items subject to trade defence measures (anti-dumping) have much higher stakes.
Bulk HS code classification for large WooCommerce catalogs
If your WooCommerce store has more than 20 products, classifying them one by one is impractical. Here's the efficient bulk workflow:
Step 1: Export your WooCommerce product catalog In your WordPress admin: WooCommerce → Products → Export (or use the WooCommerce Products CSV Import/Export plugin). Select "All columns" or at minimum Product name, Description, and SKU.
Step 2: Run the CSV through a bulk classifier Upload your product export to Dutiable. The AI classifier reads product names and descriptions and returns the HS code, EU/US/UK duty rates, and confidence score for every row. Processing 200–500 products typically takes under 5 minutes.
Step 3: Review medium-confidence items Products flagged as "medium confidence" need a second look. These are usually products that could fall under two different headings — provide more detail in the description (materials, function, primary use) and re-classify.
Step 4: Import back to WooCommerce Update your product CSV with the HS code column and reimport via WooCommerce → Products → Import. If you're using WooCommerce Shipping's HS field (`_hs_tariff_number` meta key) or your own custom meta key, make sure the CSV column header matches what WooCommerce expects.
This process takes 30–90 minutes for a catalog of 100–500 products — versus weeks of manual classification.
HS code requirements for common WooCommerce shipping destinations
The HS code requirement varies by destination and shipment value:
- European Union: HS code required on all commercial shipments, regardless of value. CN22 (up to 2kg/€300) and CN23 (above) need it. Post-2028 EU Customs Reform will make HS codes mandatory even for B2C parcels below €150. - United States: Required on formal customs entries (shipments over $2,500). For low-value informal entries and Section 321 express shipments, CBP may not require the HS code on the label, but carriers often ask for it. - United Kingdom: Required on all international commercial shipments. CN22/CN23 for postal, commercial invoice for courier. - Canada: Required on commercial shipments. CBSA may assess based on description alone for low-value shipments but HS code reduces delay risk. - Australia: Required on import declarations for goods over A$1,000. For low-value imports, the HS code is best practice even if not strictly required.
In all cases, providing a correct HS code reduces the chance of customs queries regardless of the value threshold.
Related HS Code References
Classify your products with AI
Get accurate HS codes with confidence scores, GRI rule explanations, and EU / US / UK duty rates — in seconds.