Skip to main content

Help center · TariffWatch

CSV import and export

By Andy Gaber · Published August 23, 2026 · Last updated August 23, 2026

If you're tracking more than a handful of HTS codes, CSV import on the Watchlist welcome page is the fastest way to load them. This guide covers the format the importer actually accepts, how rows are validated, and the one export that exists today.

Import format

The importer is deliberately forgiving, because most CSVs come out of Excel:

  • Header row: optional. If the first row contains a column named hts_code, hts, htsus, code or subheading (any case), that column is read as the HTS code. Without a recognizable header, the first column is read as the code and every row is treated as data.
  • Optional columns: description, annual_import_value_usd (or value) and notes are shown in the import preview only. They are not saved. Only the HTS codes are stored on your watchlist.
  • Encoding and quoting: a UTF-8 byte-order mark is stripped, Windows (CRLF) line endings are accepted, blank lines are skipped, extra columns are ignored, and double-quoted fields follow the usual RFC 4180 convention.

The "Download sample CSV template" link on the welcome page gives you a four-row example with the columns hts_code,description,annual_import_value_usd,notes.

Validation

Each row's HTS field is stripped of dots, dashes and spaces and then checked by digit count:

  • 10 digits: accepted and stored in dotted form (for example 7603.10.0000).
  • 6 or 8 digits: accepted with a "broader match" warning.
  • Anything else (or empty): rejected with a row-level error. The rest of the file still imports.

The importer checks digit count only. It does not check a code against the current HTSUS, so confirm codes against the tariff schedule and CBP rulings or with your broker.

Limits and merge behavior

  • Up to 500 rows per import and 1 MB per file. Rows past 500 are not imported, and the response tells you the file was truncated.
  • Imported codes are merged into your existing list, and codes already on it are counted as duplicates and skipped. Nothing is deleted by an import.
  • Uploads are rate-limited to a few per minute. For larger portfolios, split the file.
  • Saving the hand-entry box (up to 20 codes) replaces your whole list, including imported codes. Use one method or the other.

There is no asynchronous or "enterprise batch" import endpoint. If you need to load more than a few thousand codes, email support@tariffwatch.app first.

Export

The welcome page can export your current code list as a one-column CSV (hts_code). That is the only export today. There is no digest export, no per-code metadata in the export, and no history API. Each weekly digest email itself links every matched notice at federalregister.gov, which serves as your archive.

Related articles

FAQ

Can I schedule a recurring export? No. Export is a manual download from the welcome page.

What happens on re-import to an existing watchlist? New codes are added, codes already present are skipped, and nothing is removed. To remove codes, reply to any digest with the change, or save a new list in the hand-entry box (which replaces the whole list).

Are my descriptions and notes saved? No. Only the HTS codes are stored. The other columns help you check the preview before you confirm.

Still stuck? Email support@tariffwatch.app.

Was this helpful?

Still stuck?

Email support@enforceintel.com.

EnforceIntel builds compliance tools for regulated verticals — consumer products and metals.

Also from EnforceIntel

All pricing
PixelProof — Meta Pixel monitoring for ShopifyEntryProof — CPSC eFiling readiness checkerTariffWatch — Section 232 exposure checkerPriceProof — Shopify reference-pricing observation

Popular free tools & roundups

Free Meta Pixel DebuggerFree HTS Code Lookup (§232)Free CPSC Penalty CalculatorBest Shopify pixel monitors 2026Best CPSC eFiling tools 2026Best Section 232 tools 2026Help centerAll free toolsAll productsReferral programRoadmapChangelogStatusTrust & SecurityAPI docsYour account
Cookie settings