When to reorder: Why a fixed stock threshold fails, and how to automate alerts

A common pattern with some Shopify stores: Merchants set one reorder threshold (say “reorder at 10 units”) and apply it across the whole catalog. It feels systematic, but it breaks down because different products deplete at very different rates.

Raw quantity on its own is misleading. A product showing 30 units could be two weeks of stock or two days of stock depending entirely on its sales velocity. One product selling 2 units a day has about two weeks of runway at 30 units, while another selling 15 a day is down to roughly two days, same number on screen, very different situations. Shopify’s inventory reports show you the count, but the count alone won’t tell you which situation you’re in.

Two data points fix this when used together:

Stock level, weighted by sell-through rather than pure quantity. The logic is that a fast-moving product should flag “Low” earlier than a slow-moving one, even at the same unit count. Setting thresholds per product category helps, since categories move at different speeds.

Reorder point, calculated per product:
Reorder Point = (Daily Demand × Lead Days) + Safety Stock

Lead days is your supplier’s delivery time and safety stock is your buffer for demand spikes or supplier delays. Once available stock (after deducting committed/pending quantities) drops to that point, it’s a genuine reorder signal specific to that product.

On automating the alerts, Shopify Flow handles this natively. An “inventory quantity changed” trigger with a condition (quantity below your threshold) can auto-send an email when a product runs low. Worth knowing: Flow’s native email sends one message per product, so it isn’t a consolidated report. If you want a single report covering multiple low-stock products, there are two routes, pairing Flow with a scheduled ShopifyQL query, or using a reporting app that schedules the full low-stock report on its own without needing Flow.

Curious how others here approach reorder timing. Do you rely on a fixed threshold, a rolling average, or something more calculated?

I think fixed thresholds are fine for a very small catalog, but they get misleading pretty quickly once some products move a lot faster than others. Having 30 units left means something completely different for a product doing 2 sales a day versus one doing 15.

I usually prefer looking at the stock against recent sales velocity, then factoring in supplier lead time. That gives you a much better idea of whether you’re actually close to running out rather than just reacting to an arbitrary number in Shopify.

I also wouldn’t make the reorder system too complicated. If the numbers are good but the alerting is a pain to maintain, someone eventually stops paying attention to it. For us, the same general idea applies to SEO too: I’d rather have a short list of things that actually need attention than another dashboard full of numbers. That’s one of the reasons I’ve liked SiteGuru’s approach to SEO. It prioritizes the work instead of making you interpret every metric yourself.

Solid breakdown. The sell-through-vs-raw-count point is the right one to lead with, most people just look at the unit count.

The piece I’d add: the reorder point formula is only as good as the demand number you feed it, and that’s where a fixed setup quietly fails even after you’ve moved off a flat threshold. Daily Demand isn’t one number, it’s a choice of lookback window. A 7-day average reacts fast but whipsaws on a single big order. A 90-day average is stable but lags hard when something starts trending or a season turns. I’ve seen a store reorder a summer product in September because the trailing 90-day average still looked healthy.

So to your question, I don’t think fixed vs rolling is the real split. A rolling average is still “calculated,” but it’s backward-looking. What actually holds up:

  • Match the lookback to the product’s lead time and volatility, not one global window. Short lead time plus steady sales can run on a 30-day average. Long lead time or spiky demand needs a longer window plus more safety stock, because you’re committing further ahead.
  • Weight recent weeks heavier than old ones (a weighted moving average) so a trend shows up before the flat average catches it.
  • Watch committed/pending separately. Available-to-sell after deducting unfulfilled orders is the number that should hit the reorder point, which you already called out and a lot of tools get wrong.

On the alerting gap you mentioned with Flow only sending one email per product, that’s the honest limitation. Flow is a per-event trigger, not a report, so a consolidated low-stock digest really does need either a scheduled ShopifyQL query or a reporting layer on top. There’s no native single-report path for it.

What lookback do you use? I run 30 for fast movers, longer with more buffer for slow or seasonal, but nothing that’s clean across a whole catalog.

Hi @Report_Pundit1 :raising_hands:

I agree with the point that a fixed reorder threshold can be misleading, especially as product catalogs grow and sales patterns become more diverse.

A product with 20 units on hand can be in a very different position depending on how quickly it’s selling. Looking at inventory without considering sales velocity often creates a false sense of security, particularly for fast-moving products. I’ve seen merchants focus on quantity alone and end up reacting too late because the inventory looked healthy on paper.

One thing that also complicates the picture is when inventory is being shared across multiple sales channels, locations, or customer segments. In those situations, the quantity visible in Shopify doesn’t always reflect what merchants feel is truly available for sale. Some merchants reserve stock for wholesale customers, upcoming promotions, or other channels, which makes reorder decisions even more nuanced.

Through conversations with merchants while working on Easify Inventory Sync, I’ve noticed that many start with fixed thresholds because they’re simple to manage, but as the business grows they often move toward a more demand-based approach. The exact formula varies, but factors like sales velocity, lead times, seasonality, and committed inventory tend to become much more important than a single universal threshold.

I’m curious how many merchants here are actively using product-specific reorder points versus relying on experience and manual monitoring. In practice, I suspect a lot of stores still operate somewhere between the two approaches.:heart:

Hi @Report_Pundit1
I think the days-of-stock approach makes a lot of sense, especially when a store has products with very different sales velocities. For smaller stores, though, calculating this for every SKU might feel like a lot of work.

A simple starting point could be grouping products by sales velocity and setting different reorder points for each group, then moving to product-specific calculations as the catalog grows. That keeps the process manageable without relying on one fixed threshold for everything.

Would be interesting to know how many merchants are actually reviewing their reorder points regularly rather than setting them once and leaving them unchanged.

Hey, @Report_Pundit1
Hope you are doing well!
This is a great point. A fixed quantity threshold can be very misleading when products have completely different sales velocities. I’d definitely lean toward using demand + lead time + safety stock rather than treating every SKU the same. Even a simple rolling average can make reorder decisions much more accurate.

Hey everyone,

This is a spot-on breakdown. Relying on a fixed threshold like “reorder when stock hits 10 units” is one of the quickest ways to either run out of your bestsellers or overstock items that barely move.

The biggest gap with native Shopify reports is that they give you a static snapshot of units in stock, but completely lack sales velocity context.

10 units of a product selling 5/day means you’re dead in 48 hours. 10 units of a slow mover means you’re sitting on tied-up cash for the next 6 months.

A few key takeaways I’ve seen working with store owners on this:

1. Velocity > Units: Tracking Days of Stock Remaining (Days of Supply) based on a 30/60/90-day moving average prevents stockouts way better than raw unit counts.

2. The Spam Problem: Tools like Shopify Flow are helpful, but triggering individual emails per low-stock SKU creates inbox chaos. Merchants need a single, consolidated digest—a unified list of what needs restocking vs. what is stagnant.

3. Actionable Restocking: Ideally, your reorder logic should factor in supplier lead time (e.g., (Avg. Daily Sales × Lead Time Days) + Safety Stock), so you get alerted before it’s too late to place a PO.

I actually got so tired of seeing merchants struggle with complex spreadsheets (or overpriced ERPs) that I built a lightweight, self-serve tool called FlowDesk.

If you want to see how much capital is tied up in your inventory and check your exact days of stock remaining, you can test it directly at flowdesks.org. It comes with a 5-day free trial (so you can analyze your store completely free), and after that, it’s just $15/month if you decide to keep using it. It’s 100% self-serve—no need to send me any files or data.

Curious how often you guys review your reorder points—is it a weekly routine or do you only check when something actually runs out?

Good points, @Kim267, especially the part about not overengineering it. We’ve seen that happen a lot. Someone builds a beautifully calculated reorder system, and within a month nobody is checking it because the alerts are noisy or the setup takes too much maintenance. A “good enough and actually used” system beats a “perfect but ignored” one every time.

On the velocity + lead time approach, we completely agree that it’s the right foundation. We’d just add one thing that can cause problems: lead time isn’t always consistent. If you’re ordering from overseas suppliers, peak seasons, Chinese New Year, port congestion, or other delays can easily turn a usual 2 week lead time into 4 or 5 weeks. If the reorder point calculation uses a fixed lead time, it makes sense to adjust the safety stock during those periods instead of using the same number all year.

We also agree with keeping alerts simple. That’s why we lean toward the Flow + scheduled ShopifyQL setup instead of building something more custom. Flow already handles the trigger logic inside Shopify, so there is no separate system to maintain. You can simply consolidate the output into one useful email instead of getting an alert for every SKU. It keeps the process simple and fits into a workflow people are already checking.

Thanks, @Steve_TopNewYork, Days of stock is definitely the better way to look at it than just staring at a raw quantity.

On safety stock, since you asked about fixed vs. dynamic, a common approach is to look at the gap between your worst case scenario, max daily sales × max lead time, and your average scenario. That gap becomes your buffer. If you don’t have enough history yet, starting with around 20 to 30% of your lead time demand is reasonable, then you can refine it after a few reorder cycles.

We’d lean dynamic if you can manage it. A fixed buffer can go stale pretty quickly. A reorder point that worked six months ago may not still work if sales have increased or supplier lead times have changed.

Category-level thresholds are a good middle ground, but one SKU can sometimes carry most of the sales while the rest barely move. For a large catalog, it’s a solid starting point, then it makes sense to give top sellers their own reorder points.

Quick question back: when you say category-level, do you mean by product type, or by sales speed like fast, medium, and slow movers? Grouping by speed might handle the “one SKU skews the category” issue better.

@KynaatJohn,

Velocity tiers first, then SKU-specific once the catalog and data can support it. Trying to set per-SKU reorder points too early, before there is enough sales history to trust, usually just makes the system harder to maintain and easier to give up on.

On your question, probably not many. Most stores set their thresholds once, feel good about it, and leave them there. That works until something changes, like a product starts trending, a supplier gets slower, or sales suddenly rise or fall. Then the old numbers quietly stop being accurate.

We think monthly reviews are a reasonable baseline, with an extra check before peak season if your business has strong seasonality.

We’re also curious if anyone has automated the review itself, like a scheduled check that flags when actual sell-through has drifted from what the reorder point assumes, instead of only sending a low-stock alert.

Thanks, and agreed @Custom-Cursor. Demand + lead time + safety stock is really the core formula this whole thread keeps coming back to.

On rolling averages, Shopify’s forecasting guide makes a useful distinction. A moving average smooths out noise to show the broader trend, while exponential smoothing gives more weight to recent sales. So a moving average is a good starting point, but for trending or seasonal products, weighting recent data more heavily can catch changes faster.

Shopify also notes that forecasting can use shorter windows of 30 to 90 days for individual products, or longer windows of up to 12 months across a range of products. The right choice depends on how volatile the product is, rather than using one approach for the entire catalog.

So we’d use a rolling average as the default, shorter or weighted windows for fast-moving or trending products, and longer windows for stable ones.

On the question that didn’t get picked up — automating the review of the reorder point rather than the alert:

The cheapest version I’ve seen work is a weekly check comparing two numbers per SKU: the daily demand your reorder point assumes, and the actual daily demand over the last 30 days. Flag anything where they differ by more than about 30%, in either direction. Drifting up means you’ll stock out before the alert ever fires; drifting down means cash is sitting in stock that isn’t moving. Same arithmetic as the formula above, just run against reality instead of against the assumption.

Two practical notes. Use a rolling window rather than calendar months — a threshold set during a slow month misfires in the next promo. And exclude the days a SKU was out of stock, or what you’re measuring is your own stockout rather than actual demand.

Disclosure: I build EasyRestock, which does reorder rules with thresholds. The drift check above it does not do today — that’s still a spreadsheet job, and I’d rather say so than imply otherwise.

Hi VLAD G,

Spot on regarding fixed reorder thresholds failing as sales velocity fluctuates. Static safety stock levels almost always result in either capital locked up in excess stock or stockouts on fast-moving SKUs.

The core reason static triggers break down is that they treat lead time and daily demand as constants rather than dynamic variables:

  1. Lead Time Variability: A static threshold of 50 units assumes your supplier always delivers in 10 days. If supplier lead time stretches to 18 days during peak season, you hit stockouts even if sales velocity remains flat.
  2. Demand Spike Blindspots: Fixed alerts don’t account for short-term sales acceleration (e.g., promotional spikes or seasonal trends), meaning reorder alerts trigger far too late to prevent stock depletion before stock arrives.

To automate proactive, dynamic reorder alerts:

  • Dynamic Lead-Time Forecasting: Calculate safety stock dynamically using rolling sales velocity multiplied by real-time supplier lead-time averages ($Safety\ Stock = Dynamic\ Lead\ Time \times Average\ Daily\ Sales$).
  • Real-Time Inventory Event Triggers: Connect sales velocity data directly to an automated event engine that recalculates safety stock thresholds daily and triggers automated PO drafts before stock dips below safety limits.

We engineered an autonomous inventory state engine that continuously recalculates dynamic reorder points and automates supplier alerts based on real-time sales velocity. Happy to share technical details or offer a free 30-day inventory audit if you’d like to benchmark your restock pipeline!