← All posts

Replenishment

How to stop running out of stock

It is never the slow movers that go dark. Stockouts have three specific causes, they feed each other, and every one of them can be fixed from a desk.

Marcus Volsted Marcus VolstedCo-founder, Restocio Published 30 August 2026Updated 30 August 20268 min read
How to stop running out of stock

Facts about Stocky and Shopify's built-in tools are taken from Shopify's own Help Center. Restocio is an independent product and is not affiliated with or endorsed by Shopify.

Three causes, and none of them is your supplier

Stores keep running out of stock for three reasons: the sales rate is measured over calendar days instead of the days a product was actually available, stock levels get watched while order deadlines pass silently, and stock already on order is not subtracted from the next decision. The supplier, the port and the courier get the blame, but all three causes live inside the store. That is good news, because it means you can fix them without changing a single supplier.

One pattern shows up before any of them: it is always the best seller. Slow movers never sell out. The products that keep going dark are the ones you watch most closely, and that is not bad luck. Two of the three causes actively single out your strongest products, as you are about to see.

You are measuring the sales rate over the wrong days

This is the biggest one, it costs nothing to fix, and almost every store gets it wrong, because the wrong version looks completely reasonable.

The instinct is to divide units sold by days elapsed. Sixty units in sixty days, one a day. But if the product spent forty of those days out of stock, it did not sell one a day. It sold sixty units across the twenty days customers could actually buy it, which is three a day.

Sell 30 units over 60 days with the product unavailable for 40 of them, and the honest rate is 30 ÷ 20, which is 1.5 a day, not 0.5. The calendar figure is wrong by a factor of three, and wrong in the dangerous direction.

Now follow the loop. The calendar rate says the product is a slow mover, so you order less of it. The smaller order sells out sooner, so next period there are even fewer in-stock days, so the measured rate drops further, so the next order shrinks again. Each cycle starves your best seller a little harder, and every number along the way looks plausible. Meanwhile the products that never sell out always show their true rate, because they were always available to sell. The measurement error lands exclusively on your winners.

Shopify's own reports use calendar days. If a sales-per-day figure goes from a report into a reorder decision without adjustment, this loop is running in your store right now.

The fix: divide by days in stock, not days elapsed, and do it per variant, because a healthy product total routinely hides one size or colour that has been dark for a month. If you take one action from this page, take this one.

You are watching stock levels while the deadline expires

Where the first cause is bad arithmetic, the second is structural. A stock level is the wrong thing to watch when delivery takes a long time.

Say sea freight takes 100 days door to door, you keep a 14 day safety buffer, and you hold 120 days of stock. You have six days left to order at the cheap price. Six days, while the warehouse holds four months of goods and everything looks green. Wait until the shelf finally looks thin and the cheap option expired months earlier, leaving a stretch of lost sales or air freight at several times the price per kilo as the only remaining fixes.

 Watching the stock levelWatching the order deadline
What it tells youHow many units are left todayThe last day you can order and still receive goods in time
When it raises the alarmWhen the shelf finally looks thinMonths earlier, while the cheap option is still open
What acting on it costsAir freight, or days of lost salesA normal order at normal freight prices

The fix: convert the level into a date. Days of stock, which is units on hand divided by the honest daily rate from the previous section, minus lead time, minus a safety margin, gives the days you have left to act. When it reaches zero it is order day, however full the shelf looks. The full arithmetic, safety stock included, is in our reorder point guide.

One warning before you run it: the first honest pass on a long-lead-time product often answers "you should already have ordered" while the warehouse still holds months of cover. That is not the maths failing. That is the maths telling you how long 100 days really is.

Nobody subtracts what is already on order

The third cause is the quietest. An order placed three weeks ago and landing next month is stock you already own, it just is not on the shelf yet. When it does not reduce today's decision, one of two failures follows.

Order again anyway and you double-buy, parking cash in a duplicate container of exactly the product you were most anxious about, and the cash that should have bought some other product's stock is gone for months. Or you assume something is probably coming, skip the order, turn out to be wrong, and discover the gap weeks later when nothing lands.

Both failures usually trace to the same root: the reorder decision lives in one person's head, or in a spreadsheet only that person updates. It works until they go on holiday, get buried in Q4, or leave. This is no criticism of the person. Keeping dozens of deadlines, open purchase orders and per-variant sales rates current by hand is a job for software, and the human should be doing the part software cannot do, which is judgement.

The fix: the number you compare against your reorder point must be stock on hand plus stock on order, and the list of what is on order has to live somewhere shared and current, whether that is a tool or a sheet the whole team genuinely maintains. If a purchase order can exist that the reorder calculation cannot see, you will double-buy eventually.

When Shopify says in stock and the shelf says otherwise

A different failure hides behind the same symptom. Customers order, the admin shows units available, the warehouse finds nothing to pick. That is not a planning error, it is record drift: a short delivery nobody logged, damaged units never written off, a return restocked in the system but not on the shelf, a plain miscount at receiving.

Drifted records also quietly feed the first cause on this page, because days the product was really unavailable get counted as in-stock days and flatten the measured rate further. The repair is unglamorous. Count deliveries against the purchase order when they arrive, log shortfalls and damage the day they are found, and recount your fastest movers on a schedule. Every calculation downstream inherits whatever truth receiving produces.

Sometimes running out is the right call

Honesty requires this section, because not every product deserves a buffer, and a store that never runs out of anything is probably overstocked on most things.

Picture a product deep in the long tail. It sells slowly, and its supplier wants a minimum order of 500 units. Protecting it from every stockout means parking months of cash, sometimes years of it, in inventory that barely moves. Letting it lapse for a while, or retiring it altogether, is often the better trade, because the freed cash goes into the products that earn their shelf space. Give the generous buffers to the best sellers precisely because the long tail does not get them.

The goal was never zero stockouts. It is zero surprise stockouts. A slow mover you consciously let run dry is a decision. A best seller that goes dark because its rate was measured wrong is a bleed.

Making it hold without a hero

All three fixes share a property: easy to do once, hard to keep doing by hand. Rates drift, deadlines tick daily, purchase orders land and change, and the spreadsheet that was accurate in March quietly is not by September. Somewhere between one hundred and five hundred variants most stores stop keeping up, and the tell is air freight appearing on invoices for products nobody decided to expedite.

This is the job Restocio was built for. It measures every sales rate over in-stock days only, shows each product's order deadline as a countdown instead of a stock level, and nets incoming purchase orders per freight mode before recommending anything. What it will not do is know the things only you know. A campaign you have booked, a product you are quietly discontinuing, a supplier who just warned you about a factory move: none of that is in the sales history, and its forecasting is a rate with seasonal handling rather than machine learning that could infer it. The software's job is to make the deadline impossible to miss. The judgement on top stays yours.

For the whole system this sits inside, from safety stock to freight splits, see the complete replenishment guide, or the Shopify-specific version if that is where your store lives.

Common questions

Why does my best seller keep selling out?

Usually because its sales rate is measured over calendar days. Every out-of-stock spell drags the measured rate down, so the next order is smaller, which causes the next stockout sooner. Products that never sell out keep an accurate rate, so the error lands only on your winners. Measure over in-stock days and the loop breaks.

Why does Shopify say an item is in stock when it is not?

The recorded quantity has drifted from reality: short deliveries that were never logged, damaged units not written off, returns restocked in the system but not on the shelf, or miscounts. Counting goods against the purchase order at receiving, and cycle-counting fast movers regularly, is the fix.

How do I know when to reorder a product?

Work out days of stock: units on hand divided by units sold per day, with the rate counted over in-stock days only. Subtract your full lead time, including any production time, and a safety margin. The result is how many days you have left to order in time. When it hits zero, order, however full the shelf looks.

How much buffer stock should I keep?

Enough to absorb a late supplier and a demand swing, which depends on how variable both are. A common starting point is about a week of sales for a reliable domestic supplier and two to four weeks for sea freight from Asia, tightened per product once you can see real variability. Best sellers deserve generous buffers, the long tail lean ones.

Is it ever okay to let a product run out?

Yes. A slow seller with a large minimum order quantity can cost more to protect than to lose, because the MOQ traps months of cash in a product that barely moves. Aim for no surprise stockouts on the products that matter rather than zero stockouts everywhere.

Marcus Volsted
Marcus Volsted
Co-founder, Restocio

Marcus co-founded Restocio and works on it daily with a Swedish importer who plans their purchasing in it every working day. Most of the examples on this blog come from that store's real ordering decisions rather than from a textbook. Why we are building it.

Related reading

Restocio plans purchasing for Shopify stores that import. It works out what to order, how much, and whether it should travel by sea, rail or air, so you pay air freight only for the units that genuinely cannot wait.

See pricingTalk to us