Skip to content

California cannabis recalls · mechanism deep dive

Cannabinoid inflation: how the number on the label gets bigger than the number the lab measured.

Twenty-one California cannabis recalls in the last twenty-eight months cite the verbatim DCC phrase “Inaccurate Labeling (Cannabinoid inflation).” This page explains the substitution that produces it, where in the pipeline it happens, and what to check in your own labels.

What it is

The substitution at the heart of it.

A California cannabis Certificate of Analysis carries a lot of detail, but four numbers are what actually matter for a label: Total THC, Total CBD, Total Cannabinoids, and milligrams per serving. The first three are not the same number, and that is where cannabinoid inflation lives.

Total THC is the headline potency number for the label. It’s what a consumer reads to decide what they’re buying. It’s the number the regulator expects to see when a label claims THC content.

Total CBD is the matched non-psychoactive headline. Reported the same way, alongside Total THC.

Total Cannabinoids is the combined sum — Total THC plus Total CBD plus any other cannabinoids the lab measured. It is always equal to or larger than Total THC alone, because it’s a superset.

So when a label that’s supposed to display Total THC instead displays Total Cannabinoids, the headline number on the package is inflated. Not because anyone tampered with anything — the lab’s numbers are correct — but because the wrong column got pulled into the field that prints to the package.

That’s the substitution. That’s the mechanism behind every recall coded as “Cannabinoid inflation” that has a clean labeling-pipeline cause.

Why the math is unforgiving

One example, in plain numbers.

A representative flower COA might report:

  • Total THC: 27%
  • Total CBD: 0.5%
  • Total Cannabinoids: 27.5%

The label is supposed to show Total THC: 27%.

If the pipeline pulls Total Cannabinoids instead, the label shows 27.5%.

That’s only half a percentage point of difference, and on this batch it doesn’t look dangerous. But the substitution doesn’t scale with intent — it scales with what the lab measured. On a batch where Total CBD is meaningful, or where the lab counted minor cannabinoids the COA shows separately, the gap between Total THC and Total Cannabinoids gets larger. Some products carry a five-point gap. Some carry more.

The product is the same product. The lab’s numbers are the same numbers. Only the column choice changed. And every label printed under that misconfiguration carries the same overstatement.

Where it happens

The substitution lives between the lab and the printer.

The substitution rarely happens at the lab and almost never happens at the printer. It happens in the middle — in the handoff between the COA, the ERP, and the label generator.

Three failure surfaces produce it:

1. Field-map drift. When the lab vendor updates their COA template — adding a new minor cannabinoid column, splitting an old combined column into two, or renaming a header — downstream systems that pull values by column name need to be remapped. If the ERP’s extraction template still grabs “Total Cannabinoids” when the new label spec calls for “Total THC,” the wrong number flows through forever, on every batch, until somebody catches it.

2. Label template configuration. Most label generators have configurable per-field calculations — a label template can be told that the “Cannabinoid” field should pull Total THC, or Total Cannabinoids, or any of several other lab values. If the template was set up with the wrong source field once, every label it produces inherits the substitution.

3. ERP-side data entry. Some operators key cannabinoid values into the ERP by hand from the COA PDF. A staffer who reads “Total Cannabinoids” off the COA and types it into a Total-THC field is doing exactly what the data flow asks for — the field name and the source name don’t protest, because they’re not directly compared anywhere.

None of these surfaces look broken from any single vendor’s perspective. The lab’s COA is correct. The ERP stores what it’s told. The label generator renders the field it was configured to render. The printer prints what it’s sent. The substitution is a configuration choice or a data-entry interpretation, not a bug. It only becomes visible when somebody looks at the lab COA and the printed label side by side.

The recall trend page walks the full pipeline from lab to printer with a diagram. The failure-modes page has worked examples of similar field-map and integration failures.

What the regulator says

The verbatim DCC recall language.

California’s Department of Cannabis Control publishes recall notices at recalls.cannabis.ca.gov. The portal uses standardized reason language. The phrase that appears on cannabinoid-inflation recalls is exact:

“Inaccurate Labeling (Cannabinoid inflation)”

The phrase appears on twenty-one California recall notices issued between January 2024 and April 2026. It is the most common verbatim labeling-pipeline citation in the database, and the rate at which it’s being issued more than doubled between 2024 and 2025.

The recall portal is public. Anyone can search it. If you’re a distributor, your distribution partners’ recall histories — and your own — are listed there with the verbatim reason language and the affected batch tags.

The recall trend page has the full statistics, methodology, and a chart of label-pipeline failures by quarter.

What to look for

Five checks you can run on your own labels this week.

None of these require new tooling. They’re questions to ask of your existing pipeline.

  1. Pick three recently-printed labels at random and pull the COAs they were generated from. Lay them side by side. The cannabinoid value on the label should match a specific column on the COA. If you can’t name which column, that’s the answer.
  2. Ask your label vendor what field maps the cannabinoid value. Get the configuration in writing. “The cannabinoid field pulls X from source Y” is what you want. If the answer is “the integration handles it,” that’s a different answer.
  3. Check whether your COA template has changed in the last twelve months. If your lab added a column, split a column, or renamed one, every downstream system that reads by header name needs review. Most operators don’t notice when a lab changes a template until something breaks downstream.
  4. Compare your label values to your Metrc package values for the same batch. If they don’t agree, the substitution is upstream of one of them. Metrc’s package record is what regulators reference; the printed label is what consumers see. They should match.
  5. Ask the staffer who keys cannabinoid values into the ERP what they read off the COA. If the answer is “the big number at the top” or “whichever one is highlighted,” that’s a process problem, not a system problem — and it’s fixable in an afternoon.

Any one of these checks can surface the substitution. Running all five in a single afternoon is a reasonable way to get an answer without bringing anyone in.

When it’s worth a conversation

Not every operator needs an outside engagement. The five checks above will resolve the substitution question for most distributors who run them.

It’s worth a conversation if:

  • You ran the checks and the answers don’t agree.
  • Your label vendor can’t produce the field-map configuration in writing.
  • You have multiple co-packers or labs in the chain and the column conventions differ.
  • Your ERP-to-label integration is custom and nobody on staff fully owns it anymore.
  • You’re about to migrate ERPs, change label vendors, or onboard a new lab — the substitution risk concentrates at every transition.

If any of these are true, the diagnostic is faster from the outside than from the inside. Schedule a 30-minute call — if an engagement doesn’t make sense after that conversation, I’ll tell you.

If a recall scenario is on your mind, the conversation is free.

Thirty minutes. No slides. If an engagement does not make sense, I will tell you on the call.