CPG inventory management: the operator’s playbook

Co-packer receiving, distributor sell-through, multi-temp cycle counts, and reorder math that respects a code date.

By Andres Rodriguez Rey Updated July 30, 2026 7 min read

Tuesday, 7:40am. The co-packer’s truck backs in, and the load is 40 cases short of the bill of lading. Your distributor needs a number for the fall promo by noon. And your best seller is due for a reorder — but the smallest batch the co-packer will run is more than you can sell before it expires, so the surplus gets marked down every cycle.

That’s a normal Tuesday. None of it is a warehouse problem — it’s a cash problem with a warehouse attached: you pay the co-packer at the run, and the distributor pays you 30 to 60 days later, minus deductions. The cash leaks in four places: the receiving dock, the distributor relationship, the count program, and the reorder decision.

How do you handle short shipments from a co-packer?

Count every pallet against the bill of lading (BOL), note variances before the driver leaves, and log the short the same day. Then track the pattern per run: fill rate, short frequency, response time. One short is noise. A trend is a negotiation.

The dock is the only point where you still hold the cards: once the driver leaves with a signed BOL, it’s your word against their paperwork. So count physical cases against the BOL (not the PO or pallet tags), note every exception before signing, divert anything damaged or short-dated to a hold area, and log the variance the same day. Then turn those logs into a per-run scorecard.

How do you know if a distributor — or a broker — is earning their margin?

Measure sell-through, not sell-in. What a distributor orders is their forecast; what moves from their warehouse to stores is demand. A broker earns commission when the accounts they opened produce velocity you wouldn’t have won alone. Run that math per relationship, quarterly.

The gap between what a distributor orders and what they’ve sold is your risk: unsold stock comes back older and closer to its date. So plan production against what actually leaves their warehouse for stores (their depletion or sell-through data), not their purchase orders. A 2,000-case order when only 240 a week are really moving is a markdown you can see coming. Apply the same test to a broker or distributor’s cut: how much of your margin is genuinely new business they brought, versus accounts you already had? Renew on that number, not loyalty. When a short forces you to allocate, protect the shelf you can’t win back and put the call in writing.

How often should you count inventory in a multi-temperature warehouse?

Count more often where a mistake costs the most and where counting is cheapest, not on a fixed calendar. Cooler A-items turn fast, so count them weekly. The freezer is the priciest place to count: short sessions, monthly on the A-items. Everything ambient rotates through a cycle count.

A count is a purchase, so spend counting hours where an error costs the most. Count at low tide, the day after a big pickup when racks are emptiest, and investigate variances the same day, before a five-case gap becomes a ghost. Give every SKU a fixed pick face, oldest-date-first, and find the slow movers in cold space.

How do you calculate reorder points for products with a shelf life?

Two numbers. The classic reorder point (average daily demand × lead time, plus safety stock) tells you when to reorder. A shelf-life cap tells you how much: never more than weekly velocity × your selling window. When the co-packer’s minimum run is bigger than that cap, every run leaks cash.

The constraint that dominates a coded product is the selling window: the days you have to sell a batch before your channel stops taking it at full price. The formula is code-date life − days used before you receive it − your channel’s remaining-days floor − transit. Distributors won’t receive below that floor, so pull it from your agreement. On a shelf-stable beverage:

Worked example · order sizing with a code date (hypothetical)
LineValueWhere it comes from
Code-date window at production180 daysProduct spec
Days consumed before your receipt20 daysFrom the scorecard
Distributor’s remaining-days floor90 daysDistribution agreement
Transit to distributor7 daysYour lanes
Your selling window180 − 20 − 90 − 7 = 63 days ≈ 9 weeksDerived
Weekly velocity400 unitsDepletion data
Maximum useful order≈ 3,600 units9 weeks × 400/week
Co-packer minimum run5,000 unitsCo-packer agreement
Structural overhang per run≈ 1,400 unitsExposed to markdown every run

Read the table bottom-up: 63 days of window at 400 units a week caps the useful order at 3,600 units, but the co-packer’s floor is 5,000 — so 1,400 units every run are born exposed to markdown, priced in the day you cut the PO. Four levers, best first: negotiate the minimum down (that’s what the co-packer scorecard is for); split the run so two SKUs share a changeover; grow velocity before production; or budget the overhang as a real cost.

When is it time to move off spreadsheets?

When the sheet stops being an answer and becomes an argument: variances you can’t win because nobody timestamped a count, two people holding different numbers for one pallet, reorders built on data last touched Thursday. The upgrade isn’t about features. It’s about making the numbers self-defending.

Everything here runs on spreadsheets, and early on it should. But each section leans on a record that has to hold up under dispute, and a spreadsheet holds records without defending them: no timestamp, no history, no link to the physical case. The first real system needs four things: batch tracking from the dock; oldest-date-first picking the system enforces (FEFO), not just suggests; holds that actually stop movement; and counting at the pick face.

What should you do next?

The whole playbook as actions, whiteboard-ready.

Receiving

  • Count physical cases against the BOL at every receipt, annotate exceptions before the driver signs, and log variances the same day.
  • Keep a per-run co-packer scorecard: fill rate, on-time, short frequency, doc accuracy, remaining shelf life, damage, response time.

Distributor & broker

  • Get depletion data from each distributor and size production to units per store per week, not to their POs.
  • Before renewing a broker, run three numbers: which accounts they actually opened, the margin from those accounts net of promo support, and whether it beats total commission. Put allocation calls in writing.

Counting

  • Count cooler A-items weekly, frozen A-items monthly, ambient on a rotating cycle count; count at low tide and investigate variances the day you find them.
  • Give every SKU a fixed pick face and move stock oldest-date-first.

Reorder math

  • Pull the remaining-days floor from each distribution agreement and compute your selling window.
  • Cap every order at selling window × weekly velocity. If the co-packer minimum exceeds that cap, pick a lever: negotiate it down, split the run, grow velocity, or budget the markdown.

Tooling

  • Stay on spreadsheets until the records can’t defend themselves, then look for batch tracking, enforced FEFO, hard holds, and counting at the pick face.

Frequently asked questions

What should a co-packer scorecard include?

Seven fields, all capturable at your dock: fill rate, on-time delivery, short-ship frequency, document accuracy, remaining shelf life at receipt, damage on arrival, and variance response time. Review the trend quarterly.

Should I restock against distributor orders or depletion data?

Depletions. A PO is forecast plus buffer; depletions show what actually moved to stores. Size production to units-per-store-per-week, and treat a PO that outruns that velocity as a question to investigate before you scale.

If the scorecard and the window math sound like your Tuesday

Key Space is built for this operating layer: batch tracking from the dock, fail-closed FEFO, holds that actually stop movement. Forty-five days, no card.

Start your 45-day trial — no card