32,000 presale orders. An OMS dashboard glowing green: in stock. And an inbound container sitting outside the Port of Long Beach with a four-day delay nobody had modeled. Three days before Black Friday 2021, that is what a beauty-tools brand I worked with was staring at. When the dust settled, 2,800 orders couldn't ship. Refunds, reships, and marketplace penalties cost them north of $60,000 — the entire Black Friday margin, gone in a week.
I asked one question on that call: does your available quantity include inbound stock? Three seconds of silence. Then: "I think so." That was the whole problem.
Available quantity and on-hand inventory are two different things. During a presale rush, the gap between them is your life-or-death line.
Five buckets, one formula
Plenty of OMS screens show a single number called "inventory." I've clicked into enough of them to know that number is usually on-hand plus inbound minus reservations, all mashed together. That math is harmless in the slow season, when inbound is predictable and a few days' drift doesn't matter. A presale is different: you're selling tomorrow's stock today, betting inbound lands on time.
Back in 2021, congestion at Long Beach made a one-week container delay routine. Counting inbound as sellable was a bet the port wouldn't clog.
I keep at least five buckets in the OMS:
On-hand: received, put away, pickable. Inbound: shipped, not yet received — money spent, goods not in your hands. Allocated: claimed by orders, not yet picked. Frozen: deliberately locked — presale-dedicated, quality hold, customer-specific lots. Safety stock: the floor. Untouchable.
There is exactly one correct formula: available = on-hand − allocated − frozen − safety stock. Inbound does not enter this formula.
Take a SKU with 5,000 on-hand, 8,000 inbound, 1,200 allocated, 2,000 frozen, and 500 safety stock. Available = 5,000 − 1,200 − 2,000 − 500 = 1,300. If your screen shows 13,000 (on-hand + inbound − allocated), you're selling 11,700 units of future stock against today's orders. One late container, and overselling detonates.
So what is inbound good for? A separate presale pool. The presale listing draws from this pool, never from spot available quantity. Pool level = confirmed inbound × a confidence factor. I set the factor by supplier track record: 0.9 for suppliers on-time 95% of the time or better, 0.6 for the chronically 3-to-5-days-late crowd, and zero for new suppliers — no presale rights until they've proven themselves. A presale sells certainty. The factor is your honesty score.
The order presales eat inventory
A presale is selling future on-hand in advance. So presale and spot inventory live in two pools, physically separated, never mixed.
The sequence: presale orders draw from the presale pool first. When inbound arrives and converts to on-hand, it tops the presale pool back up. Spot orders draw only from spot available quantity and never touch the presale pool. And presale orders never eat spot stock directly.
Why so strict? During the 2022 Prime Day event, an outdoor-gear client of mine ran presale and spot from one pool. The presale blew through it, spot orders came in to find nothing pickable, and customer service took the beating for a week. With two pools, a presale can sell out without touching the spot business — worst case, you close the presale listing and the core keeps running.
Timing of the freeze matters too. Before presale launch, freeze the corresponding stock: freeze quantity = planned presale volume + a cushion. I use 10–15% of planned volume for the cushion, covering cancellations and damage. And the freeze must be a system record — who froze it, how much, when it releases. The killer is the "verbal freeze": someone says in a chat group "don't touch this lot," nobody enters it in the system, and spot orders eat it anyway.
Cancellations need a defined release path as well: a cancelled presale order returns stock to the presale pool first, and only overflows to spot when the presale pool is full. Send it straight to spot and the presale pool runs dry for the orders still coming.

A kill switch with a number on it
Every formula gets it wrong sometimes. So the last line of defense is a circuit breaker: when a SKU's available quantity drops below a threshold, the system auto-limits or delists it, and only a human review can restore it.
How to set the threshold? I use two tiers. Presale SKUs trip at 5% of planned presale volume — planning 20,000 units, auto-halt at 1,000 sellable left. Spot SKUs trip at two to three days of average daily sales. Never set it to zero. Zero means no breaker at all: the system jumps from positive straight to negative and you get no reaction time.
One more trap: the breaker stops storefront orders but not manual orders from customer service. I've watched reps protect their KPIs by hand-keying orders for oversold SKUs, and the oversell happened anyway. The breaker has to cover manual order entry too — or at minimum throw a hard confirmation.
The recovery procedure after a trip needs to be written down: who can restore the listing, which numbers to reconcile first, whether to message affected customers. The worst pattern is an operator casually clicking "resume selling" while the counts are still wrong — three trips in an hour and your customers are gone for good.
Here's the part that stings: overselling costs more than refunds. Marketplace penalties, tanked seller ratings, burned ad spend — together they're usually multiples of the merchandise value. Of that $60,000, the refunds were less than half. The rest was compensation and lost repeat business. One oversold order can cost you three years of that customer's repeat purchases.
So here's the question for your team: if your best-selling SKU's inbound slipped by a week starting tomorrow, how many orders would you oversell before anyone noticed? If you can't answer that in ten seconds, your formula needs work.







