Why is my low-stock alert just a random number that has nothing to do with how fast the item sells?
Shopify's low-stock threshold is one flat number with no idea how fast an item sells or how long a reorder takes to arrive. Here's the formula to replace it and where native reports can help.
What's going on
You set a low-stock alert on a product, say 10 units, and it fires whether that product sells 2 units a week or 50. For a slow mover, 10 units might be three months of stock and you're getting nagged for no reason. For a fast mover with a six-week supplier lead time, 10 units might mean you already ran out before the reorder even shipped. The number itself is arbitrary. It has no relationship to how fast the item actually sells or how long it takes to get more in stock.
This is a real gap in Shopify's native inventory tools: a low-stock threshold is a flat number, not a calculated reorder point. It does not factor in sales velocity, supplier lead time, or a safety margin for demand spikes and shipping delays. Two products with wildly different sell-through rates end up governed by the same kind of static number unless you go set a different one manually for each, and even then you're guessing rather than calculating.
The practical fix isn't a setting Shopify is going to add; it's a formula: reorder point = (average daily sales x lead time in days) + safety stock. Applying that per SKU, using your own sales and inventory reports to get the inputs, turns the low-stock alert from a shot in the dark into something that reflects how the product actually behaves. It takes manual setup, but it doesn't require paid tooling to get meaningfully better than a store-wide guess.
Why it happens
Shopify's core admin was built around simple stock tracking, quantities, adjustments, transfers between locations, not demand forecasting. A low-stock threshold is designed as a basic trip-wire, not a replenishment calculator, so it was never built to take in the two inputs a real reorder point needs: sales velocity and supplier lead time.
The more sophisticated version of this, reorder points calculated from lead time and sell-through, plus purchase orders and demand forecasting, used to live in Stocky, Shopify's POS-focused inventory add-on. Shopify has been winding Stocky down, and its core admin does not include an equivalent free replacement for that replenishment logic, which is part of why merchants coming off Stocky keep running into the same static-threshold limitation in plain Shopify.
5 ways to fix it
Calculate an actual reorder point: (daily sales velocity x lead time in days) + safety stock
This is the standard formula used in inventory planning, and it is what should be going into that low-stock number field instead of a guess. Pull average daily units sold per SKU over the last 30 to 60 days from your sales or inventory reports, multiply by how many days your supplier takes to deliver a new batch, then add a safety-stock buffer, often three to seven days of sales, to cover demand spikes or a late shipment. Redo the math per SKU whenever velocity or lead time changes meaningfully, since one global number will always be wrong for a large share of the catalog.
Use your inventory and sales reports to get the velocity numbers, since Shopify does not calculate lead-time-adjusted reorder points for you
Shopify's admin includes inventory and sell-through reporting that shows how fast each variant is moving and how much stock is left, which covers the sales-velocity half of the formula. It will not factor in supplier lead time or generate a true reorder point automatically, so you still have to pull the sell-through numbers, apply your own lead times, and calculate the threshold yourself, ideally in a spreadsheet you can revisit as sales patterns shift.
Set thresholds per variant instead of one store-wide default
Shopify lets you configure a low-stock threshold at the product or variant level rather than relying on a single default across your catalog, and it can notify staff when a variant crosses it. It is still a static number rather than something velocity-aware, but setting it per SKU using your own (daily velocity x lead time + safety stock) math is a real improvement over one arbitrary number applied to everything you sell.
If you're on a plan with Shopify Flow, use it to make the threshold effectively dynamic
Flow can watch inventory levels and trigger an action, an alert, a tag, a draft purchase order, when stock crosses a condition you define. You still have to feed it the lead-time-adjusted number rather than a flat figure, but pairing it with metafields that store each SKU's lead time and safety stock lets you approximate a real reorder-point system without leaving Shopify.
For multi-location or multi-supplier catalogs, a dedicated inventory forecasting app is the right tool, not a first step
Once you are managing more than a few dozen SKUs, several warehouses, or suppliers with inconsistent lead times, recalculating reorder points by hand in a spreadsheet becomes a real time cost. Inventory forecasting and replenishment apps handle rolling velocity, lead time, and safety stock automatically per SKU and can generate purchase orders. Reach for this once manual recalculation is eating hours every week, not before.
Bottom line
Shopify's low-stock threshold was built as a simple trip-wire, not a replenishment engine, so the fix is to feed it the same velocity-times-lead-time-plus-safety-stock math that real inventory planning uses. Do that per SKU with your existing reports and a spreadsheet first, and only move to a dedicated forecasting app once the manual recalculation itself becomes the bottleneck. This is squarely inventory-forecasting-app territory if you outgrow the spreadsheet approach, not something a general storefront app is built to solve.
Browse the rest of the problem library, run a free storefront scan to catch issues like this automatically, or email us and we'll work out a custom solution for it.