A coffee roaster's HACCP plan is short, and that's the honest answer, not a shortcut. Roasting runs far hotter than any pathogen survives and nobody eats green coffee, so the roast itself isn't a critical control point. What a roaster does have to control is physical: stones, nails and bits of wire that come in the green coffee bags, caught by a destoner and a magnet. And if it sells flavored coffee, an allergen: a hazelnut flavor in an unflavored bag. FDA's rule asks for the hazard analysis in writing whatever it finds, so even a plan with few controls is written down. In the example below, a small roastery's plan comes to two critical control points, destoning and labeling, and a magnet found off its bracket catches a nail on the second pass. Below is the hazard analysis, the plan, the log, and a free worksheet.
The short version
- Write the hazard analysis for each product, even if it finds little: the rule asks for it in writing.
- Roasting isn't a CCP: no biological hazard is reasonably likely in roasted coffee.
- Stones and metal from green coffee bags: CCP 1, a destoner and a magnet on every batch.
- Mold in green coffee: kept out by buying to a moisture spec and storing it dry.
- Hazelnut or other nut flavors: their own grinder and scoop, and CCP 2, the label.
- Cold brew is a different product with different hazards, and a plan of its own.
- TaroStack keeps each batch's checks on its batch record, with the green coffee lot it used. More below.
The rules behind it
A registered roaster that isn't exempt needs a hazard analysis for each type of food it makes, considering biological, chemical and physical hazards, and it has to be written regardless of its outcome (21 CFR 117.130). Where hazards need controls, the rule names the kinds, including food allergen controls that cover labeling (21 CFR 117.135(c)). Wholesale buyers often ask for a HACCP plan by name. What a full food safety plan holds is in what is a food safety plan. This is general information, not legal advice.
An example: the hazard analysis
Pali Roasting Co., a made-up roastery on Oʻahu I use in these examples, roasts single-origin coffees on a 2 kg roaster and a hazelnut-flavored coffee for two cafés:
| Step | Hazard | Reasonably likely? | Preventive measure | CCP? |
|---|---|---|---|---|
| Receiving green coffee | C: mold toxins; P: stones, nails, wire | Physical, yes | Moisture spec on each contract; destoner and magnet | No |
| Storing green coffee | C: mold if damp | No | Pallets, dry room, humidity logged | No |
| Roasting | B: none reasonably likely | No | No | |
| Cooling | B: none reasonably likely | No | No | |
| Destoning | P: stones and metal | Yes | Destoner every batch, magnet before the bin | CCP 1 |
| Flavoring | C: hazelnut in the flavor, or in unflavored coffee | Yes | Own grinder and scoop for flavored coffee | No |
| Grinding | P: metal from worn burrs | No | Burrs checked weekly | No |
| Packing and labeling | C: undeclared hazelnut | Yes | Label checked | CCP 2 |
A roaster that sells no flavored coffee can end up with the destoner as its only control. That's a valid outcome, and the written analysis showing why the roast isn't a CCP is what an auditor wants to see. How much weight a batch loses in the roaster, and what that does to the cost of a bag, is in roast loss and cost per bag.
The plan
| CCP | Critical limit | Monitoring | Corrective action | Verification | Record |
|---|---|---|---|---|---|
| 1 Destoning | Every batch through the destoner; magnet clean and in place | Check the magnet and the destoner's trap after each batch | Hold the batch and run it again; find the cause | Weekly log review; magnet strength checked yearly | Batch record |
| 2 Labeling | Every bag's label matches the coffee and its allergens | One bag per lot against roast and lot | Hold, relabel, find the cause | Weekly review | Packing record |
Two days of the log
| Date | Lot | CCP | Check | Passed? | Action |
|---|---|---|---|---|---|
| Oct 6 | KON-1006-1 Kona | 1 Destoning | Magnet in place, trap checked | Yes | |
| Oct 6 | KON-1006-2 | 1 Destoning | Two stones in the trap | Yes | Normal |
| Oct 6 | HAZ-1006-1 hazelnut | 2 Labeling | Label correct | Yes | |
| Oct 7 | KON-1007-1 | 1 Destoning | Magnet found off its bracket | No | Batch held, re-run with the magnet back; a nail caught |
| Oct 7 | KON-1007-1 | 1 Destoning | Magnet in place | Yes |
The October 7 batch went through the destoner with the magnet knocked loose. It was held, run through again with the magnet back, and a nail came out: the control working because someone looked. What a roastery's year looks like is in coffee roasting business plan.
Get the worksheet
Download the coffee roasting HACCP worksheet. Three sheets: the hazard analysis, step by step; the plan, one row for each critical control point; and a monitoring log, where each check is marked and a failed one is flagged. It's an ordinary Excel file with no macros, and it works in Google Sheets, LibreOffice and Numbers.
Where this stops working
The log says a nail was caught on October 7. It doesn't say which green coffee lot the nail came in, whether other batches from that lot went through before the magnet was knocked loose, or which cafés got them.
How TaroStack does it
TaroStack keeps each batch's checks on its batch record, with the green coffee lot it used.
Checks on the batch record. Fields of your own on the batch record, tick boxes, numbers and initials, hold the magnet check, what the trap caught and the label check, and printable batch-record forms carry the same fields for the roaster.
Green lot to roasted lot. Each roast takes its green coffee off stock by lot, records the lot it consumed, and gets a lot of its own, so a problem in one green lot points to every roast made from it.
Where the bags went. Each order records the lots each customer got as it ships, and a lot on hold is kept out of what can be sold, so one recall report shows which cafés got a roast and what's still on your shelves.
| The job | Clipboard | In TaroStack |
|---|---|---|
| Magnet and trap checks | A log on the wall | Fields on the batch record |
| Which green lot a roast used | A note on the bag | Recorded automatically |
| A batch held for re-running | A sign on the bin | A hold on the lot |
| Which cafés got a roast | Search the invoices | One recall report |
Batches, batch records with fields of your own, holds, lots and recalls 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.
