← All posts Inventory

Stockouts during a sale: running the pre-mortem

Assume the sale has already gone wrong and work backwards. Forty-five minutes before a promotion that prevents the failure everyone repeats.

JT Jules Tahoe8 June 2026 · 10 min read

Why forecasting does not save you

Every store that has run a sale has run out of something they did not expect to run out of. The usual response is to forecast harder next time, which does not work, because the failures are rarely forecasting failures.

They are coupling failures. A product sells faster than expected, which is fine on its own, but it was also the free-shipping threshold filler, and it was the item in the email hero, and its variant sizes were pooled in a way that meant "in stock" was true for the product and false for the size everyone wanted.

Better demand estimates would not have caught that. A pre-mortem does.

The exercise

Forty-five minutes, a week before the sale, with whoever runs fulfilment and whoever runs marketing. Both, in the same room. Most of the value comes from the fact that these two people usually plan separately.

The framing is deliberate and worth stating aloud: "The sale is over. It went badly. We ran out of things and disappointed customers. What happened?"

Past tense matters. Asking "what might go wrong" produces polite hedging. Asking people to explain a failure that has already occurred produces specifics, because the brain is much better at generating causes for a stated outcome than at generating risks in the abstract. Give everyone five minutes in silence to write before anyone speaks, or the first suggestion will anchor the room.

The five that come up every time

Prompt with these if the room is quiet. They account for most real stockouts.

1. The hero product

Whatever is in the email header and the first ad will sell at a rate unrelated to its normal velocity. Its history is not a guide, because it has never had this much attention. Decide now whether you have enough for the promotion you have actually planned, not the promotion you ran last year.

2. The variant nobody watched

Stock is tracked and discussed at product level. Customers buy variants. A jumper with two hundred units is out of stock in practice if the mediums went in the first hour, and your dashboards will show it as healthy.

Identify the top three products by expected volume and look at variant-level depth for each. This single check catches more sale stockouts than anything else in the exercise.

3. The bundle dependency

If any bundle, kit or multi-buy includes a component, that component's demand is the sum of its own sales plus every bundle it appears in. Bundles are also where oversell tends to happen, because the stock relationship is not always obvious in reporting.

4. The threshold filler

The cheap item people add to reach free shipping. Its sales are driven by the promotion mechanics rather than by demand for it, so historical velocity is close to meaningless. Cheap to overstock, disproportionately annoying to run out of, because it breaks a lot of carts at once.

5. The thing that is not stock at all

Packaging, the right box size, printer labels, the person who was going to be there Saturday. Running out of mailers on day two of a sale produces the same customer outcome as running out of product, and it is invisible in every inventory report you own.

Turn each into an owned action

The pre-mortem is worthless if it ends as a list of concerns. Every item leaves the room as one of three things:

  • Fix it now. Order more, adjust the bundle, change the email hero to something you have depth in.
  • Set a trigger. You cannot get more stock in time, so decide in advance what you do when it hits a level: pull it from the email, remove it from paid ads, switch the hero. Deciding this now, calmly, is much better than deciding it at 9pm on the Saturday.
  • Accept it. Explicitly. "We will run out of this and that is fine" is a legitimate outcome, and saying it out loud stops someone panicking about it mid-sale.

Each with a name and, for triggers, a number. "Watch the stock on the navy one" is not a trigger. "At 20 units, Sam pulls it from the email and tells the room" is.

During the sale

Two things, both decided in advance.

Who is watching, and when. Not everyone, and not continuously. One named person at defined checkpoints. During a busy promotion, "everyone keeps an eye on it" reliably means nobody does, for the same reason a request addressed to a group is addressed to nobody.

Where the trigger gets announced. When a threshold is hit, the person who notices needs somewhere to say so that reaches whoever runs the ads and whoever answers customers, immediately. If that announcement goes into a general channel during the busiest hours of your year, it gets missed.

This is the case for having alerts land where the team already is, with the product attached, rather than in an email nobody is reading during a sale. Setting the thresholds themselves is a separate craft, covered in getting low stock alerts right.

You are not trying to prevent every stockout. You are trying to make sure that when one happens, the email stops promoting it within the hour.

Afterwards, while it is fresh

Fifteen minutes in the week after, not a month later. Which of the five happened, which triggers fired, and which fired too late.

The most useful output is usually a threshold adjustment: the level you set was hit at a point where you could no longer act on it. Write next year's numbers down while you still remember why.

Who needs to know, and how fast

A trigger is only as good as the announcement that follows it. When stock on a promoted product hits its threshold, three separate actions need to happen, usually by three different people, and they are not equally urgent.

Within minutes: stop paying for it. Whoever runs paid ads pauses anything pointing at that product. This is the most expensive delay in the whole chain, because ad spend continues at full rate while the landing page sells nothing.

Within the hour: change the merchandising. Pull it from the email hero if the send has not gone, swap the homepage placement, adjust the collection order. Slower than the ad pause, and lower cost per minute.

Before the next customer message: brief support. Whoever answers customers needs to know the answer to "when is this back" before someone asks, rather than after.

Write those three actions and three names down during the pre-mortem. During a sale, nobody will work out the sequence from first principles.

What to do about the sold-out page

One decision worth making in advance rather than at speed: what happens to the product page.

Leaving it live with an out-of-stock message keeps the traffic and lets you capture interest for a restock. Hiding it prevents disappointment but discards everyone arriving from an email that has already gone out.

For most stores the first is better during a sale, provided the page is honest about it and offers something else. What causes real damage is neither: a page that is technically purchasable but will not actually ship, which converts a stockout into a refund plus a complaint.

The pre-mortem for everything else

Stock is the obvious failure and rarely the only one. Once you have run the exercise a couple of times for inventory, widen the question by ten minutes: what else went wrong in our imagined failed sale?

The answers cluster in predictable places. The site was slow at the worst moment. A discount code applied to things it should not have. The team could not keep up with customer messages and response times tripled. A courier could not collect the volume. Somebody essential was unreachable.

Each of those has the same three outcomes available as the stock risks: fix it now, set a trigger, or accept it explicitly. The discount code one in particular is worth five minutes every time, because code scoping errors are common, expensive, and completely invisible until money has already left.

You are not trying to be exhaustive. You are trying to convert the two or three things everyone privately worries about into things somebody has actually planned for.

Common questions

What is a pre-mortem?

An exercise where you assume a plan has already failed and work backwards to explain why. Stating the failure as a past event produces far more specific answers than asking what might go wrong.

When should we run it?

About a week before the sale. Early enough to reorder or change the plan, late enough that the promotion is settled and you are discussing what will actually run.

Why do variant-level stockouts get missed?

Because stock is usually reviewed at product level while customers buy variants. A product showing healthy depth can be effectively sold out in the sizes people want within an hour.

What if we cannot get more stock in time?

Set a trigger instead. Decide now what happens at a specific stock level: pull it from the email, remove it from ads, change the hero. Deciding calmly beforehand beats deciding mid-sale.

Who should watch stock during a sale?

One named person at defined checkpoints, not the whole team continuously. Shared responsibility during a busy promotion reliably means nobody is actually watching.

Keep reading

Shopify app affiliate programs: a guide for agencies
Agencies

Shopify app affiliate programs: a guide for agencies

App affiliate programs are the most overlooked revenue line in an agency. How they work, what separates a good one from a bad one, and how to build referrals into delivery.

27 August 2026·11 min read
Shopify App Partner Program: how it works in 2026
Agencies

Shopify App Partner Program: how it works in 2026

What the Shopify Partner Program actually pays app developers, what changed with the revenue share, and the part that trips people up: app affiliate programs are something else entirely.

26 August 2026·12 min read
Team chat for Shopify: why a general-purpose tool stops working
Team chat

Team chat for Shopify: why a general-purpose tool stops working

Slack and WhatsApp are good at messages. Store teams do not have a message problem, they have a context problem. What that costs, and how to fix it.

24 August 2026·11 min read

Run your store team in one room.

Free for teams up to five, and about two minutes to connect your store.