Classify7

Manual vs Automated Hazardous Cargo Classification

Classify7 Content Team6 min read
Warehouse staff checking documentation against stock, the manual end of hazardous cargo classification
Warehouse staff checking documentation against stock, the manual end of hazardous cargo classification

Nobody automates hazardous cargo classification because classifying one product is difficult. It is not especially difficult. You read the SDS, find the entry, apply the criteria, check the carrier. An hour, and you are confident in the answer.

People automate hazardous cargo classification because the answer does not stay correct. This piece looks at where the crossover actually sits, what drives it, and what automation genuinely fixes — as against what it just moves.

Why manual hazardous cargo classification works, until it doesn't

Let us be fair to the spreadsheet. For a small, stable catalogue it is a perfectly sound record of properly-done classification work. It is free, universally readable, and needs no integration.

Its weakness is not accuracy at the point of entry. It is that a spreadsheet has no concept of expiry. A row entered in March 2024 looks exactly as authoritative in August 2026, whether or not anything underneath it has moved.

Three things move underneath it, and none of them send a notification.

Reformulations

Procurement changes solvent supplier to save cost. The flash point shifts from 26 °C to 19 °C, crossing the 23 °C threshold, and the packing group moves from III to II. Same SKU, same listing, same box — and the packaging is now under-specified. Our guide to packing groups I, II and III covers why that threshold is so easy to cross.

Regulatory editions

The IATA DGR republishes annually, 49 CFR is amended through rulemaking, the IMDG Code runs a two-year cycle. Each is a prompt to re-verify determinations. A spreadsheet cannot scope that work, because it does not record which edition each row was made against — so the honest response is to re-check everything, which nobody does.

Carrier tariffs

The quietest of the three. Carriers revise their dangerous goods guides on their own schedule with no announcement beyond an updated document. A stored "UPS: accepted" is an assumption the moment it is written down.

Where hazardous cargo classification stops scaling

The usual framing is catalogue size, and that is the wrong variable. The right one is rate of change relative to rate of review.

Estimating annual classification review load
DriverTypical frequencySKUs affectedReview events per year
New SKU introductionOngoingEach new SKUOne per SKU added
Supplier reformulationIrregular, often unannouncedAffected SKUsUnknown until discovered
IATA DGR editionAnnual, 1 JanuaryAll air-shipped SKUs1 × air catalogue
49 CFR amendmentPeriodic rulemakingAffected entriesVaries
IMDG amendment cycleTwo-yearlyAll ocean-shipped SKUs0.5 × ocean catalogue
Carrier tariff revisionCarrier's own scheduleAll regulated SKUsSeveral, unannounced
A framework for estimating your own review load rather than measured industry figures. Populate the right-hand column from your own catalogue and modes — the total is usually larger than teams expect.

Work through that for your own operation. A catalogue of 40 regulated SKUs shipping by air and ground across three carriers generates a review load that no one is doing in the margins of another job. That is the crossover, and it arrives well before anyone feels they have a "large" catalogue.

How drift shows up

The pattern is consistent enough to describe generically.

A brand classifies its range properly at launch. Twelve regulated SKUs, all documented, all correct. Over the next two years the range grows to forty, two suppliers change formulation, an IATA edition lands, and a carrier revises its guide.

Nothing breaks. Parcels keep going out. The spreadsheet keeps saying what it said. Then a single consignment is refused, someone pulls the file to check, and the question becomes: which of these forty rows is still true?

There is no way to answer that from the spreadsheet, because it does not record what each row was based on. So the work is not "fix one row" — it is re-classify the catalogue, under time pressure, with stock in the network.

The expensive failure is never the wrong classification. It is not being able to tell which classifications are still right. Versioning is what turns a catalogue-wide audit into a short list.

Classify7 ruleset team, on why every determination is pinned to a ruleset hash

What automation actually fixes — and what it doesn't

Being precise here matters, because automation is oversold in this category.

It genuinely fixes:

  • Drift detection. Determinations pinned to a ruleset version can be re-run when the version moves, producing a list of what changed rather than a list of everything.
  • Internal consistency. A UN number and packing instruction generated together cannot contradict each other, which is the most common defect in hand-maintained records.
  • Coverage at the point of entry. Classification during listing creation, rather than when inventory is already sitting in a fulfilment centre.
  • Audit evidence. A signed artefact recording inputs, output, provision and ruleset version is a different quality of record from a spreadsheet cell.

It does not fix:

  • Bad inputs. An out-of-date SDS produces a wrong answer faster, not a right one.
  • Your legal duty. 49 CFR 172.101 puts classification on the shipper. Tooling produces evidence; it does not transfer responsibility.
  • Genuine ambiguity. Some mixtures do not have a clean answer, and no amount of automation invents one.

That last point is the test for any tool in this space. A classifier that always returns a UN number has not solved ambiguity — it has hidden it, and moved the risk from a visible gap to an invisible error. This is why Classify7 returns needs_review with is_hazmat: null at its boundary rather than the nearest-looking entry.

Common pitfalls
  • Judging the crossover on catalogue size rather than rate of change.
  • Recording determinations with no regulatory edition or ruleset version.
  • Automating classification but leaving carrier acceptance as a manual lookup.
  • Assuming a tool that always answers is more capable than one that sometimes declines.
  • Treating automation as a transfer of legal responsibility. It is not.

Hazardous cargo classification when the cargo is not yours

Everything above assumes you control the product. Freight forwarders and 3PLs do not, and their version of the problem is different in kind rather than degree.

A forwarder receives shipper-supplied classification data and cannot see behind it. Re-classifying from scratch is neither practical nor, generally, their role. What is practical is validation: checking that what arrived is internally coherent before it goes any further.

The high-yield checks, in rough order of how often they catch something:

  1. UN number against packing instruction. UN3480 with PI967 cannot both be right. This single check catches more defects than anything else.
  2. Packing group against class. A packing group on a Class 2, Class 7 or lithium battery entry is wrong on its face.
  3. Technical names present. Any n.o.s. entry without constituents in brackets is incomplete.
  4. Flash point present for Class 3 by sea. Required on the dangerous goods declaration and routinely omitted.
  5. Marine pollutant status. Frequently absent when the shipper classified for road or air — see the classes of IMDG.

None of these requires access to the product. They are consistency checks on a data record, which makes them exactly the kind of thing worth automating at intake — a forwarder handling a few hundred consignments a week cannot run them by eye, and the ones that fail are the ones that stop at a terminal.

It is worth being clear about where liability sits: validating shipper data does not make the forwarder the classifier, and it does not relieve the shipper of the duty at 49 CFR 172.101. It does mean fewer consignments stopping downstream, which is the commercial argument.

A sensible starting point

You do not have to replace anything to find out where you stand. Take your existing spreadsheet, push the SKUs through POST /api/classify/batch (up to 500 per call) and compare the results against what you have recorded. The rows that disagree are your actual exposure, and they are usually a small fraction of the total.

From there, subscribing the regulated SKUs as monitored items means the next edition change produces a webhook and a short list rather than a fire drill. For the tooling landscape more broadly, see our comparison of dangerous goods classification software and our review of hazmat support in shipping platforms.

The underlying obligations are worth reading directly, and they are free: 49 CFR part 172 on eCFR and PHMSA's hazmat guidance.

Frequently asked questions

At what point should I automate hazardous cargo classification?
When the rate of change in your inputs exceeds the rate at which anyone re-checks them. A hundred stable SKUs on one mode with one carrier can sit in a spreadsheet indefinitely. Thirty SKUs that reformulate quarterly across three carriers and two modes already cannot.
What does manual classification actually cost?
The visible cost is the time to classify each SKU. The larger cost is invisible: determinations that were correct when made and are no longer correct, with nothing to signal the difference. That surfaces as refused consignments, stranded inventory and, at worst, enforcement.
Is automated classification legally acceptable?
The tool is not the issue — the duty is. Under 49 CFR 172.101 the shipper must classify and describe the material correctly, and no software transfers that. What good tooling gives you is evidence: the provision applied, the ruleset version and a record you can produce in an audit.
How do freight forwarders handle classification for other people's cargo?
Carefully, because they are relying on shipper-supplied data they cannot see behind. The practical approach is to validate what arrives — check that the UN number, packing instruction and packing group are internally consistent, and query the ones that are not — rather than re-classify from scratch.
What should I keep as an audit record?
For each determination: the inputs, the resulting classification, the provision it came from, the regulatory edition or ruleset version, and the date. Without the version you cannot tell later which determinations need re-checking after an amendment, which turns every edition change into a full catalogue review.

Classify this product in about a second

Send a product description, a composition or an SDS extract to POST /api/classify and get back the UN number, proper shipping name, hazard class, packing group and every carrier position for that exact item — each one citing the provision it came from.

Keep reading