Most co-packing relationships don't fall apart because of one giant disaster. They fall apart quietly, over months, through a series of small unmanaged handoffs — a pallet that shows up two days late, a lot code that doesn't match the paperwork, a DO reading nobody logged, a "we'll fix it next run" that never gets fixed.
By the time a brewery notices, they've already shipped questionable product, lost a chunk of a seasonal window, and have no clean paper trail to argue about who owed what. The frustrating part is that almost none of this is about beer quality or the co-packer being incompetent. It's about governance — the boring contractual and communication scaffolding that most craft breweries skip because they're just relieved to have found capacity.
This is a practical framework for brewery co-packer governance: the SLA terms that actually matter, how to run inbound acceptance QC so bad material never enters the line, a weekly cadence that catches problems early, hold-and-recall clauses written for beer specifically, and a one-page audit you can actually use.
Start with the handoff points, not the contract
Before you write a single SLA line, map the physical and informational handoffs. This is where governance lives or dies. In a typical brewery-to-co-packer arrangement there are usually five:
-
You ship bright beer or finished product to them (or they receive your raw materials)
-
They receive and inspect your inbound goods
-
They run the packaging line
-
They QC the packaged output
-
They release, store, or ship finished cases
Every one of those is a point where responsibility, quality data, and liability change hands. A contract that doesn't name who owns each handoff — and what "acceptable" looks like at each step — is just a document describing a happy path that rarely happens.
The mistake that comes up constantly: breweries negotiate hard on price-per-case and completely wave through the QC and communication terms. Then the first out-of-spec run happens and there's no agreed definition of "out of spec," no agreed remedy, and no data anyone trusts. Now it's a relationship fight instead of a process problem.
The SLA elements that actually matter for beer
A co-packing SLA doesn't need to be 40 pages. It needs to be specific about a small number of things that recur. Generic "commercially reasonable efforts" language is worthless when you're arguing about a spoiled run three weeks later.
Take control of your brewery’s workflow.
Beeryly helps you schedule batches, track inventory, and monitor sales with ease.
- Production timeline management
- Inventory tracking & alerts
- Sales & distribution monitoring
No credit card required
| SLA element | What to specify | Reasonable target |
|---|---|---|
| Scheduling lead time | How far ahead runs are locked | 3–4 weeks, with a cutoff for changes |
| Run start window | Acceptable deviation from scheduled start | Within a shift, not "sometime that week" |
| Fill accuracy | Target fill + tolerance | ±2–3 mL, checked at set interval |
| DO / TPO limits | Max dissolved/total package oxygen | Style-dependent, written per SKU |
| Yield / loss tolerance | Acceptable product loss on the line | Often 2–5% depending on format |
| Turnaround to release | Time from run complete to QC release | 24–72 hrs, not open-ended |
| Data delivery | What records you get and when | Batch record + QC log within 48 hrs |
| Nonconformance remedy | Who eats the cost when it's off-spec | Defined by fault, in writing |
That last row is the one everyone avoids, and it's the most important. Decide up front: if fill weights drift out of tolerance because of their equipment, who pays for the reworked or dumped product? If it drifts because your beer arrived warm or hazy, that's on you. Write the fault categories now, while everyone's calm.
One thing worth flagging specifically: yield/loss tolerance is where breweries quietly lose the most money and never track it. If your SLA says 3% and actual runs are consistently hitting 6%, that's real beer disappearing every single run. Nobody's stealing it — it's line setup, flushing, and changeover waste. If your co-packer runs multiple brands on the same line, poor changeover discipline directly inflates your loss. Tightening this is closely related to the changeover work covered in reducing packaging changeover downtime with time-motion checklists and parallel prep — the same disciplines that cut downtime also cut product loss.
Inbound acceptance QC: stop bad material at the door
This is the single most underused control in co-packing, and it cuts both directions.
If the co-packer receives your bright beer, they should have an inbound acceptance step before it touches the filler. If you're receiving finished cases back, you need an acceptance step before you release them to distribution. Either way, the principle is the same: inspection happens at the boundary, and rejected material doesn't move forward while people "figure it out."
-
Pallet and case count matched against the run sheet and against what you were billed
-
Lot code legibility and accuracy — actually read the codes, don't assume
-
Fill check on a small sample (pull a few per pallet, weigh or measure)
-
Seal/seam integrity — a bad seamer run can ruin a whole batch silently
-
DO/TPO sample if your co-packer provides packaged units for testing
-
Visual — label placement, date code, obvious damage
-
Temperature on arrival if cold-chain matters for the product
Physically segregate and tag any "pending" pallets immediately so no one accidentally ships questionable cases.
Set an acceptance threshold and a rejection procedure. The critical rule: material in a "pending" state gets physically segregated and clearly tagged. A huge share of co-packing disasters come from questionable product sitting on the same pallet as good product, someone shipping it "just this once," and now you can't tell customers which cases are affected.
Breweries that skip inbound QC usually aren't lazy — they're afraid of the friction of rejecting a pallet from a partner they depend on. But friction at the loading dock is a hundred times cheaper than friction in the trade. Tracking counts and lot codes carefully at intake also catches billing discrepancies you'd otherwise never notice, which ties directly into the kind of tracking discipline covered in reducing lost kegs and billing errors with a low-cost tracking playbook.
A weekly communication cadence that catches drift
The reason most co-packing problems compound is that nobody talks until something's already wrong. A predictable, lightweight cadence fixes more issues than any contract clause, because it surfaces drift while it's still small.
-
Weekly (15–20 min, standing) - Confirm next run schedule and any SKU changes - Review last run's yield, fill data, and any nonconformances - Flag inbound material or timing issues on either side - Confirm outstanding batch records or QC logs still owed
-
Monthly (30–45 min) - Trend review: yield over the month, QC exceptions, on-time rate - Any recurring issue that showed up more than once - Upcoming seasonal volume so capacity gets planned early
-
Ad hoc, same-day, no exceptions - Any out-of-spec result - Any hold decision - Any deviation from the locked schedule
This simple workflow keeps everyone aligned and makes small drift visible before it becomes a big problem.
What makes this actually work: assign one named owner on each side. Not "the team" — a person. When there's a designated contact who owns the cadence, records show up, holds get communicated, and the weekly call actually happens. When it's shared responsibility, it becomes nobody's job and the whole thing decays within a couple months.
Hold and recall clauses — written for beer, not boilerplate
Generic hold/recall language from a template contract almost never accounts for how beer actually behaves or how a small brewery operates. You need clauses that are specific and pre-agreed, because the moment you need them, nobody has time to negotiate.
-
Who can place a hold and how (a name, a phone number, a written confirmation). Either party should be able to hold product on either party's data.
-
What triggers an automatic hold — for example, a DO/TPO reading over the SLA limit, a failed micro result, a seamer alarm, a fill excursion beyond tolerance.
-
Where held product physically sits and how it's tagged so it can't ship by accident.
-
Lot traceability requirement — the co-packer must be able to tie every finished case back to a specific bright beer batch and packaging run. If they can't, you can't run a clean recall.
-
Recall roles and timing — who notifies distributors, who handles retrieval, who covers cost by fault category.
-
Record retention — how long batch records, QC logs, and lot data are kept and how fast they can be produced.
The pattern to watch for: co-packers running many brands sometimes have loose lot linkage because they're optimizing for throughput. That's fine right up until you need to trace a single problematic run and discover their records lump three brands' output under one shift code. Ask to see a sample batch record before you sign. If it can't answer "which of my cases came from bright tank #4 on the 12th," keep pushing until it can.
A quick real scenario
A regional craft brewery — around 6,000 barrels a year, canning about a third of their volume through a mobile co-packer — kept getting sporadic complaints about flat, oxidized beer in one SKU. No pattern anyone could pin down, because nobody was logging TPO consistently and lot codes on the cans didn't cleanly map to specific runs.
They made three governance changes: a written TPO limit in the SLA with a mandatory reading each run, an inbound acceptance check when pallets came back (fill, seam, lot code legibility), and a standing 15-minute weekly call with a named owner on each side.
Within about two months the picture cleared up. The oxidation traced back to two specific runs where the filler was flushed poorly during a changeover — exactly the kind of thing that had been invisible before. Measured loss per run also dropped from roughly 6% toward the 3–4% range once changeover discipline started getting attention on the weekly call. No new equipment, no new vendor — just a handful of governance controls that turned a vague, unfixable complaint into a specific, fixable process problem.
When tight governance is worth it — and when it's overkill
Not every co-packing relationship needs the full apparatus. A few honest calls:
Worth the full framework: You're co-packing a meaningful share of volume, you distribute beyond your taproom, you run multiple SKUs, or the product is oxygen-sensitive. Anything going into the trade under your brand name deserves real governance, because the recall risk is yours regardless of who filled the can.
Lighter touch is fine: A one-off seasonal run, tiny volume, product staying local and moving fast. You still want lot traceability and a fill check, but you don't need a monthly trend review for 40 cases.
Who should slow down before committing: If you're picking a co-packer purely on lowest price-per-case and haven't seen a sample batch record or asked a single QC question, don't sign yet. The cheapest co-packer with weak records is far more expensive after your first traceability scramble than a slightly pricier one who hands you clean data on time.
The one-page audit checklist
Print this. Run it before you sign, and again quarterly. If a line can't be answered, that's your action item.
-
Scheduling & SLA - [ ] Locked lead time and change cutoff in writing - [ ] Run start window defined (not "that week") - [ ] Yield/loss tolerance stated and actually tracked - [ ] Turnaround-to-release time defined
-
Quality specs - [ ] Fill target + tolerance per SKU - [ ] DO/TPO limits per SKU in writing - [ ] Nonconformance definition and remedy by fault category
-
Inbound acceptance - [ ] Acceptance criteria defined for material at the boundary - [ ] Sampling routine documented (counts, fill, seam, lot code) - [ ] Rejected/pending product segregation procedure exists
-
Communication - [ ] Named owner on each side - [ ] Weekly cadence scheduled and happening - [ ] Same-day escalation path for out-of-spec/holds
-
Traceability & recall - [ ] Every case traces to a specific bright batch + run - [ ] Sample batch record reviewed and legible - [ ] Hold trigger conditions written down - [ ] Recall roles, timing, and cost-by-fault defined - [ ] Record retention period agreed
-
Data delivery - [ ] Batch records + QC logs delivered within agreed window - [ ] You keep your own copy, not just theirs
If a line can't be answered, that's your action item.
Keeping the records straight without drowning in paper
The practical challenge with all of this isn't understanding what to track — it's keeping the resulting records organized enough that the weekly call and quarterly audit take fifteen minutes instead of turning into a scavenger hunt across email threads and PDFs.
A shared operational system earns its keep here. When batch records, QC readings, inbound acceptance results, and hold decisions all live in one place with clear ownership, the cadence actually runs lean. AI-assisted operational platforms can help in fairly low-key ways — flagging when a fill or TPO reading drifts outside your SLA tolerance, nudging when a batch record you're owed hasn't shown up within the agreed window, or surfacing that one SKU's loss has crept up across three runs in a row. Not to replace judgment, just to make sure drift gets caught on run three instead of run thirteen.
Co-packing is one of the better ways for a growing brewery to add capacity without buying a line. But you're handing your brand and your recall exposure to someone else's floor.
Governance is how you keep control of both — not through a thicker contract, but through a handful of specific, agreed, actually-used controls at every handoff. Get the SLA specific, inspect at the boundary, talk every week, and keep records clean enough to trace one bad run in an afternoon. That's the whole game.
Ready to elevate your brewery operations?
Join 500+ craft breweries using Beeryly to increase production efficiency, reduce waste, and grow sales.