A Shopify restock alert is an automated notification that fires when a product is at risk of stocking out, calculated from current inventory divided by recent sell rate. The right alert fires before the stockout, with enough lead time to actually reorder. The wrong alert fires after the fact, on a fixed unit threshold that ignores how fast the product is moving. The difference between the two is the difference between zero lost revenue and a 2–6% monthly hit on a single high-velocity SKU.
This guide walks through the math behind restock alerts, why Shopify's native low-stock notifications are a starting point and not a finish line, and how to set up a system — manual or automated — that actually catches the SKUs worth catching.
Why stockouts hurt more than you think
The visible cost of a stockout is the orders you don't get during the out-of-stock window. The invisible costs — which are larger — are:
- Customer-acquisition cost wasted. If you spent $30 to acquire a customer through Meta ads and they land on an out-of-stock PDP, that $30 is gone. They don't bookmark you. They buy the same thing from a competitor in 90 seconds.
- SEO ranking drift. PDPs marked out-of-stock for more than a few days can deprioritize in search rankings. The recovery curve when you restock is not instant.
- Algorithmic punishment from ad platforms. Meta and TikTok detect that your conversion rate just dropped and reduce your delivery. ROAS gets worse for days after the restock because the ML re-learns.
- Repeat-purchase churn. A customer who tries to reorder and finds you out of stock is statistically less likely to come back than one who simply lapses naturally.
The cumulative cost of a 7-day stockout on a top-3 SKU isn't "7 days of that SKU's sales." It's closer to two weeks of impact when you include re-acquisition cost, ad-platform recovery, and lost repeat purchases.
Why Shopify's native low-stock email isn't enough
Shopify's built-in inventory notifications are a useful baseline. They are not a complete solution. The structural issues:
- They're triggered by absolute unit count, not velocity. Setting "alert at 10 units" is appropriate for an SKU selling 1/day and dangerously late for an SKU selling 8/day.
- They don't account for supplier lead time. If your dropshipping supplier takes 12 days, alerting at 10 units of a fast-mover gives you negative reorder time — you're already going to stock out.
- They don't differentiate top-performers from long-tail. A 10-unit alert on a slow SKU is fine; the same threshold on a top-3 revenue contributor is a 5-figure mistake.
- They don't surface in your weekly planning workflow. A separate email channel that you check rarely is not where you want operational signals to live.
Native alerts are good for "I should know about this eventually." A real restock system needs to be good for "I should reorder today."
The math: reorder point and safety stock
The classic formula from supply-chain operations:
reorder_point = (avg_daily_sales × lead_time_days) + safety_stock
avg_daily_sales is your best-guess of demand during the lead time. The simplest version is units_sold_last_30d / 30. A more honest version weights recent days heavier (last 7 days at 50% weight, prior 23 at 50%) since seasonality and trend matter.
lead_time_days is the number of calendar days between you placing the reorder and the units being available to ship. For dropshipping that's the supplier's processing + shipping window. For private-label that's manufacturing + freight + warehouse-to-fulfillment. Be honest: include the bad-day variant, not the best-case.
safety_stock is the buffer to absorb demand spikes and lead-time variance. A simple version: 50% of the lead-time demand. A more rigorous version: Z × σ_demand × √lead_time, where Z is a service-level constant (1.65 for 95%, 2.33 for 99%). Most small-store merchants don't have the data to do the rigorous version cleanly, and 50% of lead-time demand is close enough.
A worked example: an SKU sells 6 units/day on average. Supplier lead time is 14 days. Lead-time demand is 84 units. Safety stock at 50% is 42 units. Reorder point is 126 units. The alert should fire when on-hand inventory drops to 126.
For comparison: a fixed-threshold alert at "10 units" on the same SKU fires when you have less than 2 days of cover. You'll be in a hard stockout before the supplier can ship.
Days of cover: the right metric for alerts
Reorder point is precise, but maintaining a per-SKU reorder point for a 200-product catalog is impractical for a solo merchant. The shortcut: alert on days of cover, the number of days inventory will last at current sell rate.
days_of_cover = inventory_on_hand / (units_sold_last_30d / 30)
Set the alert threshold to lead_time_days × 1.5 (lead time plus 50% buffer). For a dropshipper with a 14-day supplier window, that's 21 days of cover. For someone with an in-region warehouse and 3-day reorder, that's ~5 days.
This works because it self-adjusts to velocity. A slow-moving SKU at 5 units of inventory might still have 60 days of cover and be fine; a fast-moving SKU at 50 units might have 3 days of cover and need an immediate reorder. The threshold is the same; the alert behavior is appropriate to each SKU automatically.
DropifyXL's restock rule uses exactly this calculation, with the lead time configurable per SKU and a default of 14 days for first-time installs.
Variants and bundles: the nuances
Two cases break the simple math.
Variants share inventory but not velocity
A t-shirt with sizes XS-XXL has six variant SKUs but typically one or two that drive most volume (M and L). Calculating days of cover at the parent-product level averages the fast variants with the slow ones and hides the real risk: M is about to stock out while XS has 90 days of cover.
The fix: alert on variant-level days of cover, not product-level. Shopify's inventory model already tracks per-variant inventory; you just need your alert system to query it that way.
Bundles consume inventory across SKUs
If a product is sold as part of a bundle (Set of 3 candles = 3 × Candle SKU), the bundle's velocity feeds into the candle's depletion. Naive math undercounts effective sales of the candle SKU.
The fix: when calculating sell rate, sum direct-SKU sales plus bundle-component sales. Most Shopify merchants don't bother, and they're slightly conservative on reorder points as a result — usually fine, but in a high-bundle business it's a real gap.
Setting up alerts: three options
Option 1: Shopify native + manual review
Use Shopify's low-stock notifications as a tripwire. Every Monday, manually pull units-sold-last-30d for your top 20 SKUs and divide by 30 to get sell rate. Calculate days of cover. Flag anything under your lead-time-times-1.5 threshold.
Cost: free. Time: ~30 minutes/week. Failure mode: you forget on a busy week and stock out anyway.
Option 2: A spreadsheet hooked to Shopify's API
Export inventory and order data weekly into a Google Sheet. Build the days-of-cover formula. Color-code anything below threshold red.
Cost: free if you build it; ~$20/month if you use a tool like Sheetgo or Coupler.io. Time: a couple of hours up front, ten minutes/week to review.
Failure mode: stale data (most spreadsheet integrations refresh on a schedule, not in real time) and the brittle-spreadsheet curse where one missing row breaks the formula.
Option 3: A purpose-built tool
Tools like DropifyXL, Inventory Planner, and StockTrim do this end-to-end — pulling Shopify data, computing days of cover, surfacing the SKUs at risk, and including the recommendation in a weekly action plan or email digest.
Cost: $19–$199/month depending on store size and features. Time: ~5 minutes/week to review the alerts. Failure mode: relying on the tool without sanity-checking the lead-time settings (a wrong default lead time silently sets your reorder points wrong for every SKU).
DropifyXL's restock recommendation costs $19/month on the Pro plan, uses days-of-cover math by default, and ranks restock recommendations against the rest of your weekly action items so the most urgent ones are at the top.
Common mistakes
- Setting one global alert threshold. Top-3 revenue SKUs deserve a tighter buffer than long-tail SKUs. A blanket "alert at 14 days of cover" is fine as a default, but tighten the top-10.
- Ignoring variant-level inventory. As covered above — a t-shirt that "has inventory" can still be stocked out of the size 80% of customers want.
- Setting lead times optimistically. Suppliers' best-case shipping window is not their average. Use a worse-than-average lead time for safety-stock math.
- Treating the alert as a reminder, not a deadline. "I'll reorder when I get a chance" turns into a week of slipped restocks. Calendar the reorder the day the alert fires.
- Not adjusting for seasonality. A 30-day rolling sell rate captures a seasonal lift two weeks late. If you sell holiday goods, lean toward 7-day weighted averages in November.
- Forgetting cancelled or refunded orders. If your sell rate calculation includes orders that were later cancelled, you'll over-order. Use net sell-through, not gross.
Frequently asked questions
What is the best inventory alert threshold for Shopify?
For most stores, lead time × 1.5 days of cover is the right alert threshold. A dropshipper with a 14-day supplier should alert at 21 days of cover. A merchant with a 3-day in-region warehouse should alert at ~5 days. Don't use unit thresholds; they don't scale across SKUs of different velocity.
How do I calculate days of cover on Shopify?
days_of_cover = inventory_on_hand / (units_sold_last_30_days / 30). You can pull both numbers from Shopify Admin: inventory on hand from Products → Inventory, units sold from the Sales by Product report (last 30 days). Divide and you have the answer per SKU.
How do I set up restock alerts on Shopify?
Three paths: (1) Shopify's native low-stock notification under Notifications → Staff orders, set per-product thresholds; (2) a spreadsheet that imports Shopify data and runs the days-of-cover math; (3) a Shopify app like DropifyXL, Inventory Planner, or StockTrim that automates the calculation and delivers ranked alerts.
What's the difference between reorder point and safety stock?
Reorder point is the inventory level that triggers a reorder. Safety stock is the buffer above lead-time demand that protects against variability. Reorder point includes safety stock: reorder_point = (daily_sales × lead_time) + safety_stock. They're not the same thing, but they're computed together.
How do I handle variants when setting alerts?
Calculate days of cover at the variant level, not the product level. A product with healthy total inventory can still be stocked out of the variant most customers want (e.g., size M on a t-shirt). Shopify's inventory model is variant-scoped; your alert system should be too.
Can DropifyXL handle this for me?
Yes. The Restock recommendation is one of the six core rules. It uses days-of-cover math, supports per-SKU lead-time overrides, runs weekly (Pro plan) or daily (Plus plan), and ranks restock alerts against other action-plan items so the most urgent ones rise to the top. See pricing.
Key takeaways
- Stockouts on top-20% SKUs cost 2–6% of monthly revenue, not counting wasted CAC, ad-platform recovery, and repeat-purchase churn.
- Fixed-unit alerts are wrong for high-velocity SKUs. Use days of cover instead:
inventory / (last_30d_units / 30). - The right alert threshold is lead time × 1.5: a 14-day supplier means alert at 21 days of cover.
- Calculate at the variant level, not the product level. M and L stockouts hide behind healthy totals.
- Calendar the reorder the day the alert fires. Slipping a restock is the most common failure mode after not having alerts at all.
- A weekly action plan tool like DropifyXL automates the calculation and ranks restock against other priorities, so the most urgent SKUs surface first.
Stockouts are the most expensive solvable problem in a Shopify operation. Solving them is a math problem with a clean answer. The only thing harder than the math is doing it consistently — which is exactly the case for automating it.