CognitOps customers reduce warehouse labor costs by 10–34% — without replacing their WMS.

Schedule a Demo

Your cost per unit calculation is probably wrong. Not slightly off, but structurally wrong, in ways that have been quietly distorting your pricing decisions and masking operational waste for years. I’ve walked through enough distribution centers to know that most ops managers are working with a number that captures maybe 60–70% of true unit economics. The rest gets absorbed into overhead lines nobody questions until margin suddenly disappears.

This guide is about fixing that. We’ll cover how to build a complete cost per unit calculation in warehouse operations, how to handle the messy realities (peak season spikes, slow movers, shared overhead), and how to govern the metric so it stays accurate over time.

Why Cost Per Unit Matters More Than You Think

Cost per unit is the single most important operational metric for a distribution center, and it’s consistently treated as a finance team problem. That’s a mistake. When DC managers don’t own this number, three things tend to happen: products get underpriced because true handling costs are invisible, efficiency initiatives get funded based on gut feel rather than unit economics, and nobody can explain why the P&L looks fine until it suddenly doesn’t.

yellow plastic crates on white floor tiles
Photo by Adrian Sulyok on Unsplash

Here’s what nobody tells you about cost per unit: it’s not a static accounting figure. It’s a living operational signal. A rising cost per unit often surfaces problems like labor inefficiency, slotting deterioration, and SKU proliferation months before they show up as budget overruns. A declining cost per unit, on the other hand, confirms that process changes are actually working, not just generating activity.

Most DC managers get this wrong because they treat cost per unit as a backward-looking report card instead of a forward-looking diagnostic. If you’re only calculating it quarterly for the CFO, you’re missing most of its value.

What Costs Actually Belong in Your Calculation

The short answer: more than you’re including right now. Let’s break it down.

Calculate Warehouse Inventory Carrying Costs Per Square Foot — Ian Johnson

Direct Costs

These are the obvious ones, and most operations capture them reasonably well:

Indirect Costs That Most People Miss

This is where calculations fall apart. Indirect costs are real costs, and ignoring them doesn’t make them go away. It just shifts them into a variance nobody can explain.

  • Facility lease or owned-space depreciation, allocated per unit
  • Utilities (lighting, climate control, charging stations for powered equipment)
  • Equipment depreciation or lease payments (forklifts, conveyors, sorters, WMS licenses)
  • Supervisory and management labor — the people not touching product directly (yes, keep this one as a dash if it reads naturally, but here I’ll use a comma instead): supervisory and management labor, meaning the people not touching product directly
  • Indirect labor: travel time between zones, training hours, meetings, equipment downtime
  • Shrinkage, damage, and returns processing
  • IT infrastructure supporting DC operations

Indirect costs aren’t optional inclusions depending on how you feel about full absorption accounting. If your DC incurs them to ship a unit, they belong in the calculation. The only legitimate debate is allocation method, not inclusion.

A Decision Framework for What to Include

If you’re a 3PL billing clients on a cost-plus model, every line above is in. If you’re an internal DC serving one retail brand, you may exclude corporate overhead allocations that aren’t DC-driven. The test is simple: would this cost go away if we shipped one fewer unit? For variable costs, yes. For step-variable costs like adding a labor shift, include it at the appropriate rate. If it’s purely fixed and unrelated to throughput volume, document your exclusion and be consistent about it.

Handling Shared Warehouse Overhead Across Multiple SKUs

This is the hardest part of the calculation, and the place where I see the most creative, and wrong, accounting. When you have 5,000 SKUs running through a facility, spreading overhead equally by unit count isn’t just imprecise. It’s misleading.

Consider a simple example: a slow-moving, bulky item that sits in a 200-square-foot slot for 45 days versus a fast-moving small parcel that cycles in 48 hours. Under a simple per-unit split, both items absorb the same overhead. But the bulky item is consuming roughly 10 times the facility resources per unit shipped. Your fast movers are effectively subsidizing your slow movers, and you won’t see it until you run a real allocation analysis.

You’d think the fix is just switching to a throughput-based model. But in most cases I’ve seen, the real issue is that operations teams are using a single allocation method across costs that behave very differently. Labor costs and facility costs don’t follow the same logic, and treating them as if they do is where the distortion creeps in.

Four Allocation Methods Worth Knowing

Square footage allocation: Assign overhead proportional to the storage space each SKU or product line occupies. Simple to implement, good for facility cost allocation. Fails when items have similar footprints but very different handling complexity.

Throughput-based allocation: Allocate overhead based on units or orders processed. Better for labor-intensive DCs where handling variability is high. Can undercharge for storage-heavy, low-turn items.

Storage duration weighting: Charge overhead based on days on shelf multiplied by space consumed. This is the most accurate method for mixed-velocity operations and it’s worth the extra data work if your WMS can support it. Most can.

ABC velocity segmentation: Apply different overhead rates to A, B, and C movers. A-items get a lower overhead rate per unit because they spread fixed costs across more throughput. C-items carry a higher rate because they don’t. This mirrors reality and forces honest product-level profitability conversations.

In my experience, most mid-size DCs should be running a hybrid of throughput allocation for labor costs and storage-duration weighting for facility costs. It takes a few extra hours to set up in your model, but the clarity it produces pays for itself quickly.

The Peak Season Spike Problem

Every year, the same conversation happens in October: “Why is our cost per unit going up right when we’re shipping the most volume? Shouldn’t scale bring the cost down?” The answer is yes, in theory, and no, in practice, for reasons that are entirely predictable.

a close up of a metal shelf with boxes on it
Photo by Arum Visuals on Unsplash

Three things drive peak season cost spikes:

Underutilized fixed assets pre-peak: Your facility, equipment, and core team are sized for peak. In July, you’re paying for that capacity while shipping 40% of peak volume. The fixed cost per unit is high then and compresses during peak. The spike you see in October isn’t really a spike. It’s costs becoming visible that were previously buried in slack capacity.

Labor inefficiency during ramp-up: Seasonal associates take two to four weeks to reach productive speed. During that window, you’re paying for hours that aren’t producing full output. E-commerce order complexity has increased the number of distinct DC tasks by three to four times since 2018, which means new associates have more to learn before they’re fully effective. That’s not a staffing failure. It’s structural.

Seasonal labor premiums: Wage rates for temporary peak workers run higher than base rates, and overtime kicks in before you’ve fully right-sized your headcount model. Post-2020 warehouse labor rates are up roughly 15–20%, making this effect sharper than it was five years ago.

The right reframe isn’t “why is cost per unit spiking at peak?” What’s your true baseline utilization rate, and how much of your fixed cost structure are you carrying inefficiently the other 10 months of the year? Platforms like CognitOps take a different approach by forecasting labor volume needs dynamically rather than relying on static engineered standards, which helps shrink the ramp-up inefficiency gap when peak arrives. But the bigger win is usually understanding your off-peak cost structure before you get there.

Deciding Your Recalculation Cadence

There’s a wrong answer here: waiting until you change your warehouse layout or implement new equipment. By then, you’ve been operating on stale unit economics for months, and any decisions made during that window, pricing updates, contract negotiations, headcount planning, were based on numbers that no longer reflect reality.

Monthly trending is the baseline. You don’t need a full model rebuild every month. A lightweight update that refreshes labor hours, volume throughput, and any rate changes (wages, utilities, leases) is enough to keep the number current. Quarterly, you do the full reconciliation: overhead allocation, equipment depreciation updates, SKU mix shifts.

Set Recalculation Triggers, Not Just a Calendar

Beyond the scheduled cadence, define specific conditions that force an immediate recalculation:

  • SKU mix shifts greater than 15% of throughput volume (adding or losing a major product category changes your handling cost profile significantly)
  • Labor rate increases above 5%
  • New equipment installation that changes labor requirements for specific tasks
  • Facility changes: new zones, racking additions, dock door reconfiguration. Even small layout changes shift your indirect labor math more than people expect.
  • Sustained throughput spikes over more than 30 days (onboarding a new client if you’re a 3PL, launching a new sales channel)

Incremental cost drift is real, and it’s invisible until you look. A 3% efficiency decline compounding over six months doesn’t announce itself. It quietly inflates your cost per unit until someone wonders why margins are compressing.

Dealing with Slow Movers and Dead Stock Without Distorting Metrics

This is where the accounting treatment and the operational metric diverge, and conflating them is a mistake that inflates your cost per unit in ways that make it useless as a planning tool.

On the accounting side, slow-moving and dead stock eventually get written down or reserved against. That’s finance’s domain. On the operations side, the question is different: how do you represent handling costs accurately when a portion of your inventory isn’t moving?

Track two separate metrics: cost per unit stored and cost per unit shipped.

Cost per unit stored captures what it costs to hold inventory in your facility per unit per day or per month. It includes square footage, climate control, racking depreciation, and cycle count labor. This metric exposes the true cost of slow movers and dead stock without contaminating your throughput economics.

Cost per unit shipped captures the handling cost for units that actually move: receiving, putaway, picking, packing, and shipping. This is your operational efficiency metric. If you blend carrying costs for dead stock into your cost per unit shipped, you end up with a number that rises when inventory health declines. That tells you there’s a problem, but not where to look.

Honestly, there’s no clean answer on where to draw the line for slow movers that do eventually ship. The practical approach is to apply a higher overhead rate reflecting their true storage burden rather than spreading costs equally across all units. If 20% of your SKUs represent 80% of your storage cost but only 5% of your shipments (a variation of the classic Pareto problem), those SKUs should carry a disproportionate share of facility overhead. Fast movers shouldn’t subsidize them in your unit economics model.

Dead stock in a cost per unit calculation is not actually a cost per unit problem. It’s an inventory management problem that has leaked into your metrics. Separate them, fix the inventory problem at the source, and the calculation becomes cleaner and far more actionable.

How do I calculate cost per unit when we have shared warehouse overhead across multiple SKUs and product lines?

Start by deciding whether you’re allocating overhead by square footage consumed, throughput volume, or storage duration. Simple per-unit splits are inaccurate when SKUs vary significantly in size, velocity, or handling complexity. For most mixed-SKU operations, the most accurate approach is a hybrid: allocate labor-driven overhead by throughput and facility-driven overhead by storage duration weighted by space. ABC velocity segmentation is worth the setup time if you have 500 or more active SKUs. It keeps fast movers from subsidizing slow movers in your cost model.

What’s the difference between cost per unit stored versus cost per unit shipped, and which metric should we actually be tracking?

Track both, but use them for different decisions. Cost per unit stored (total carrying costs divided by average units on hand) measures inventory efficiency and exposes the cost of slow movers and dead stock. Cost per unit shipped (total handling costs divided by units shipped in a period) measures operational throughput efficiency. If you blend them into a single metric, a surge in dead stock inventory artificially inflates your handling cost number, and you’ll spend time chasing a phantom problem in your operations when the real issue is in your buying or merchandising decisions.

When should I recalculate cost per unit — monthly, quarterly, or only when we change our warehouse layout or processes?

Monthly trending is the baseline, with a full model reconciliation quarterly. Waiting for process changes is too slow. Incremental cost drift from wage increases, volume mix shifts, and indirect labor creep adds up between major events. Set specific triggers that force an off-cycle recalculation: SKU mix shifts above 15%, labor rate increases above 5%, new equipment installation, or a sustained throughput change over 30 days. The calendar cadence catches normal drift. The triggers catch the discontinuous changes that would otherwise go unnoticed until they show up in your P&L.

How do I account for slow-moving inventory and dead stock in my cost per unit calculation without inflating costs?

Separate the accounting treatment (write-downs, reserves) from the operational metric. In your cost per unit shipped calculation, exclude carrying costs for inventory that isn’t moving. Those belong in your cost per unit stored metric instead. For slow movers that do eventually ship, apply a higher overhead rate reflecting their true storage burden rather than spreading costs equally across all units. The goal is to make each metric tell a clean story: cost per unit shipped reflects handling efficiency, cost per unit stored reflects inventory health. Blending them produces a number that’s genuinely hard to act on.

If you want to see how a more accurate labor cost model feeds into tighter cost per unit calculations at scale, the team at CognitOps works with DC operations leaders on exactly this kind of analysis. Request a walkthrough to see how it applies to your operation.

CognitOps Assistant Ask me anything about warehouse optimization