Stockouts. I am so done with them.

Last Black Friday, I had 800 units sitting in my US West warehouse, with the FBA inbound shipment stuck somewhere in transit. My OMS was staring at 1,200 open orders. The system shipped them first-come-first-served, which sounds fair, right? Wrong. When the dust settled, several high-ticket branded orders had been auto-cancelled, while a pile of low-margin lightning-deal orders got fulfilled. Those deal orders made under $3 of margin each. The cancelled branded ones made over $30 each. I nearly crushed my mouse.

The platform doesn't care which of your orders is profitable. When inventory runs short, how your OMS allocates stock decides whether the promotion makes you money or costs you money plus account health.

Default Allocation Logic Is a Trap

Most OMS platforms — Amazon's built-in tools included, plus a lot of third-party ERPs — ship with two default shortage behaviors: first-in-first-out, or spread-the-pain proportional allocation. Both sound reasonable. Both are lazy.

FIFO's problem: during a big sale, the earliest orders are usually deal-hunters grabbing discounted SKUs. Full-price, high-value orders come later. Ship by order time and you're voluntarily giving away your margin. Proportional allocation is dumber: ship 70% of every order, and now every single order ships late. Your late shipment rate explodes.

I learned this the hard way during Prime Day 2023. My ERP's default "smart split" kicked in at 82% inventory coverage and split over 400 orders into partial shipments. Every split parcel added extra freight allocation and shipping cost, and I was writing apology emails until 3 AM. Logistics costs came in nearly 40% over budget that week. Profit gone. Since then, I've disabled all automatic allocation. When stock runs short, I set priorities manually.

My Allocation Priority Scorecard

When inventory is short, I score every open order on one simple formula:

Priority = Channel Weight × Margin Weight × Delivery-Risk Weight

Here's how I actually apply it:

Factor Protect first (high score) Cut first (low score)
Channel Main Amazon account (your traffic lifeline) Small or clearance channels
Margin Gross margin above 30% Gross margin below 10%
Delivery promise 2-day promise, shipping fee collected No promise, negotiable
Account health Cancelling triggers a performance warning Cancelling has no real impact
Customer value Repeat buyers, B2B bulk orders One-time bargain orders

In practice I don't actually multiply numbers — too slow. I tag orders in the OMS on these five dimensions and sort by tag combinations when a shortage hits: cut the "low margin + small channel + no delivery promise" batch first, then look at "high margin but negotiable timing," and protect "main-account, high-margin, promised-delivery" orders last.

Order allocation

Let me run the math, because this is where FIFO quietly robs you. Say you have 100 units left and two orders competing for them:

Order A (branded) Order B (deal SKU)
Price ≈$90 ≈$30
Gross margin ≈40% ≈10%
Margin per unit ≈$36 ≈$3
Channel Main Amazon account Clearance channel

Give the 100 units to A: one bulk order, roughly $3,600 in margin. Give them to B: three orders, roughly $900 in margin. Default first-come-first-served logic will almost certainly protect B first — deal orders are placed earlier. Same 100 units, profit differs by roughly $2,700. That's why you never allocate by order time during a shortage: who gets the stock decides whether your margin multiplies or collapses.

Real example. Of those 1,200 Black Friday orders, I re-ranked manually: first I cut 200+ low-price orders from a clearance channel (called the channel manager in advance, pushed them a week out, they were fine with it). Then I protected all 150 B2B bulk orders (each one worth ten regular orders in margin). The remaining Amazon orders got shipped in margin order; the ones I truly couldn't cover went to "partial ship plus backorder" instead of outright cancellation. In the end only about 60 orders were actually cancelled, and every one of them was low value.

The numbers: manual allocation lifted overall margin by roughly 12 percentage points versus the default logic, and the late shipment rate stayed under 3% with no performance warnings. The year before, with default logic, late shipments hit 9% and I got a performance warning.

Counterintuitive Truth: Protect the Account, Not the Big Ticket

Most sellers instinctively think "save the expensive orders, cut the cheap ones." Half right. What you really protect first is the orders whose cancellation hurts your account.

Amazon's cancellation rate and late shipment rate feed directly into account performance, and a cancelled $200 order counts the same as a cancelled $20 order in those metrics. But the traffic penalty hits the whole account — sacrifice 20 small orders to save one $200-margin order, push your cancellation rate over the line, lose 10% of Buy Box share for two weeks, and that loss dwarfs the $200.

So my iron rule: calculate the account cost of cutting before you calculate the profit of saving. When a shortage hits, I check the OMS performance dashboard first, figure out how much cancellation headroom I have left, and reserve all of it for the high-margin orders I truly must cut. Low-value orders get split or delayed where possible; when I must cancel, I cancel on small channels first — they have no performance system, and the worst case is buying the channel manager a coffee and apologizing.

One more trap: partial shipments. I've watched too many sellers hit "partial ship" during a shortage thinking they saved the order. The second parcel usually ships at your own expense, and the combined logistics cost often exceeds the order's margin. My rule: orders under 20% margin get cancelled or fully delayed when short — no partials. Only high-margin orders are worth splitting.

Pitfalls to Avoid

First, write your allocation rules into the OMS ahead of time. Don't improvise during a stockout. I maintain the priority tag system year-round and run a dry drill before every major sale.

Second, negotiate an emergency replenishment lane with your supplier and forwarder in advance. Mine has a small-batch air freight option at 7–10 days. It's expensive, but it has saved me during peak-season stockouts. And always keep 10%–15% safety stock in the plan — never budget down to the last unit.

Third, don't watch total inventory only. Watch available inventory per channel. I got burned once: total stock looked fine, but FBA was already empty while my own warehouse still had units, and the transfer took a week. Splitting available stock by channel in the OMS is a habit that saves lives.

Stockouts aren't the scary part. Scary is cutting orders with no priority. Here's my 30-minute emergency playbook for when it actually happens:

  1. Freeze the system. Pause auto-allocation and auto-cancellation in the OMS immediately. Every extra minute of automated decisions is irreversible damage.
  2. Count for real. Pull true available inventory per channel — watch out for in-transit and reserved stock hiding inside the total. Know exactly how big the gap is.
  3. Tag in bulk. Apply the five-dimension tags to open orders; most OMS platforms can do this with bulk rules.
  4. Execute in order. Cut low-value orders first (negotiate delays before cancelling), protect high-value ones, and keep a little cancellation-rate headroom for the ones you truly can't save.
  5. Tell the customer. Proactively message delayed or cancelled buyers with an explanation and a coupon. The review damage from a proactive message is far lower than from a customer discovering it themselves.

This checklist is printed and taped to my desk now. During peak season my team just runs it — nobody has to ask me.

Set the rules up front, run the playbook when it happens, and never let the system decide for you. This one I've personally tested, and it works.

By Ah K, E-commerce Seller (5 yrs)