A smoked fish HACCP plan is built around one hazard: Clostridium botulinum toxin in fish that's vacuum packed and kept cold for weeks. FDA's seafood rule, 21 CFR 123.16, makes every smoked fish processor's plan control that toxin for the product's shelf life, and FDA's guidance sets the barriers: salt in the flesh, at least 3.5% water phase salt in the finished fish, reached by a brining and drying process proven in a study; the smoke, at least 145°F throughout the fish for 30 minutes for hot-smoked fish, and no more than 90°F in the smoker for cold-smoked; and refrigeration, a cooler at 40°F or below, because some strains grow despite the salt. Wild salmon also brings parasites: hot smoking kills them, but cold-smoked lox needs fish frozen at -4°F for 7 days. In the example below, a Juneau smokehouse writes its plan for hot-smoked salmon and lox. Below are the barriers, the hazard analysis, the plan, a week of records, and a free worksheet.
The short version
- 21 CFR 123.16: the plan controls C. botulinum toxin for the shelf life of smoked fish.
- Salt: at least 3.5% water phase salt in the finished fish, or 3% with at least 100 ppm nitrite where nitrite is permitted.
- The brining and drying process that reaches it is set by a scientific study.
- Hot smoking: 145°F or above throughout the fish for at least 30 minutes, three probes in the three largest fish.
- Cold smoking: the smoker at or below 90°F.
- Storage: a cooler at 40°F or below; salt doesn't stop every strain.
- Parasites: hot smoking is the control; lox is made from fish frozen at -4°F or below for 7 days.
- TaroStack keeps each batch's lot, your own fields for its readings, and where every pack went. More below.
The barriers
| Barrier | Critical limit in FDA's guidance | Why |
|---|---|---|
| Salt | At least 3.5% water phase salt, or 3% with 100 ppm nitrite where permitted | Inhibits C. botulinum type E and non-proteolytic B and F |
| Hot smoking | 145°F or above throughout for at least 30 minutes | Damages spores and kills parasites |
| Cold smoking | Smoker at or below 90°F | Keeps bacteria from growing during smoking |
| Refrigeration | Cooler at 40°F or below | Type A and proteolytic B and F aren't stopped by salt below 10% |
| Parasites, cold-smoked | Frozen at -4°F or below for 7 days, total time, or an equivalent freeze | Cold smoking doesn't kill them |
Water phase salt is the salt in the water portion of the fish's flesh. It's partly reached in the brine and partly in drying, so both steps are critical. The rule is 21 CFR 123.16; the limits are from chapter 13, Clostridium botulinum toxin formation, and chapter 5, parasites, of FDA's Fish and Fishery Products Hazards and Controls Guidance. This is general information, not legal advice.
An example: the hazard analysis
Gastineau Smokehouse, the made-up smokehouse in Juneau, Alaska, I use in these examples, makes vacuum-packed hot-smoked salmon and cold-smoked lox from wild fish, for its shop and for grocers:
| Step | Hazard | Reasonably likely? | Control | CCP? |
|---|---|---|---|---|
| Receiving wild salmon | Parasites | Yes | Freezing for lox at CCP 1; hot smoking at CCP 3 | No |
| Freezing fillets for lox | Parasites surviving | Yes | -4°F or below for 7 days | CCP 1 |
| Brining | C. botulinum type E toxin | Yes | The validated brine, for 3.5% water phase salt | CCP 2 |
| Drying and hot smoking | Parasites and pathogens surviving | Yes | 145°F throughout for 30 minutes | CCP 3 |
| Cold smoking lox | C. botulinum growth | Yes | Smoker at or below 90°F | CCP 4 |
| Vacuum packing and labeling | None beyond the above | No | "Keep refrigerated" on every pack | No |
| Refrigerated storage | C. botulinum toxin | Yes | Cooler at 40°F or below | CCP 5 |
FDA's parasite chapter says a hot-smoked salmon processor sets its parasite CCP at the hot-smoking step, not at receiving, which is why receiving isn't a CCP here.
The plan
| CCP | Critical limit | Monitoring | Corrective action |
|---|---|---|---|
| CCP 1 Freezing for lox | -4°F or below for 7 days, total time | Recording thermometer; dates in and out | Keep freezing, or use the fish for hot smoking |
| CCP 2 Brining | The validated brine strength (80° salometer), ratio, time and temperature | Salometer at the start; time and brine temperature, each batch | Hold, test water phase salt; re-brine or destroy |
| CCP 3 Hot smoking | 145°F or above throughout for at least 30 minutes | Recording thermometer, three probes in the three largest fish | Keep heating, re-smoke or destroy; fix the smoker |
| CCP 4 Cold smoking | Smoker at or below 90°F | Recording thermometer | Hold and assess; destroy if it can't be shown safe |
| CCP 5 Storage | Cooler at 40°F or below | Recording thermometer, read twice a day | Assess, hold or destroy; fix the cooler |
Verification is a water phase salt test of the finished fish each quarter, daily thermometer checks, and charts reviewed before release. How a monitoring record is kept is in HACCP record keeping form example, and the seafood rule's other parts in seafood HACCP plan.
A week of records
| Date | Lot | CCP | Reading | Limit | OK? | Action |
|---|---|---|---|---|---|---|
| Sep 28 | LX-1006 | Freezing for lox | 8 days | 7 days or more | Yes | |
| Oct 5 | HS-1005 | Brining | 80° | 80° or more | Yes | |
| Oct 5 | HS-1005 | Hot smoking | 147°F | 145°F or more | Yes | |
| Oct 5 | HS-1005 | Hot smoking | 30 min | 30 min or more | Yes | |
| Oct 6 | LX-1006 | Cold smoking | 84°F | 90°F or below | Yes | |
| Oct 6 | LX-1006 | Cold smoking | 93°F | 90°F or below | No | Afternoon sun on the smokehouse; batch held and assessed, vent fixed |
| Oct 7 | HS-1005 | Storage | 36°F | 40°F or below | Yes |
The cold smoker crept past 90°F on a sunny afternoon. The batch was held while the time above the limit was assessed, and the smokehouse moved its cold smoking to mornings. How the business's numbers work is in smoked salmon business plan.
Get the worksheet
Download the smoked fish HACCP plan worksheet. Four sheets: the hazard analysis, the HACCP plan with a place to sign, a monitoring log that checks each reading against its limits, and a read-me. It's a worksheet to organize your own plan, not a plan to copy; your brining limits come from your own validation study. It's an ordinary Excel file with no macros, and it works in Google Sheets, LibreOffice and Numbers.
Where this stops working
Every batch has a brine reading, a smoker chart and a storage record, and every pack that leaves has to trace back to its batch. If a grocer calls about a pack of lox, you need that batch's records and every customer who got it, today.
How TaroStack does it
TaroStack keeps each batch's lot, your own fields for its readings, and where every pack went. It doesn't monitor your CCPs; it keeps the records you write.
Readings on the batch record. Printable batch-record forms carry your own fields, such as brine salometer, lowest probe temperature and minutes held, with a sign-off.
Each batch a lot. A batch of hot-smoked salmon notes which fish lots it used, automatically, and a lot can be held until its charts are reviewed.
Where it went. Each grocer's order records the lots it got, so one recall report shows every customer a batch reached.
| The job | Clipboard | In TaroStack |
|---|---|---|
| A batch's brine and smoker readings | A clipboard | Fields on the batch record, signed |
| A batch waiting for its chart review | Set aside on a shelf | A hold on the lot |
| Which grocers got a batch | Invoices | One recall report |
Lots, batches and recipes are on every plan, from $49 a month. The first 30 days are free, with no credit card. If you'd like a hand setting up, ask, and we'll do it with you.
