Skip to main content

Stock Health And Status

Stock Control bucket-classifies every tracked variant into one of five status categories. Understanding how each bucket is calculated helps you act on the right signal at the right time — without se...

Updated yesterday

Stock Control bucket-classifies every tracked variant into one of five status categories. Understanding how each bucket is calculated helps you act on the right signal at the right time — without second-guessing the dashboard.

The Five Buckets

  • In Stock — healthy: on-hand is above the reorder point, or there’s no sales velocity yet

  • Low Stock — getting close: days of stock is below ~2× the reorder point but still above it

  • Reorder Now — below the reorder point, a PO is needed today

  • Out of Stock — on-hand is zero

  • Dead Stock — no units sold in the last 90 days (only when you have sales data loaded)

How the Bucket Is Calculated

Three inputs drive the calculation:

  • On-hand — total units across all locations

  • Velocity per day — units sold per day, averaged over the last 30 days of order history

  • Reorder point (days) — either a fixed 7 days (Basic mode) or the lead time + safety stock from your forecasting cascade (Advanced mode)

The logic runs in this order:

  1. If on-hand is 0 → Out of Stock

  2. Else if days of stock < reorder point → Reorder Now

  3. Else if days of stock ≤ 2× reorder point → Low Stock

  4. Else if no sales in the last 90 days and you have sales loaded → Dead Stock

  5. Else → In Stock

Days of stock is on-hand ÷ velocity per day. If velocity is 0, days of stock is undefined, so those variants fall straight through to Dead Stock or In Stock depending on whether sales data exists for the account.

Why Dead Stock Only Shows Up Once Sales Are Loaded

“No sales in 90 days” and “no sales data loaded yet” look identical from the app’s point of view — both mean the Sales table has zero rows for a variant. To avoid every variant being mis-classified as dead stock on day one, the rule only fires when your account has at least one Sales row.

During the initial install backfill, expect Dead Stock to show 0 until the 90-day sales sync finishes. After that, it populates correctly.

What’s Excluded

Two things deliberately never appear in any bucket:

  • Untracked variants — listing-only products with Shopify’s inventory tracking turned off. Counting them would over-state your catalog and flag every one as out of stock forever.

  • Archived and draft products — they’re no longer sold, so their on-hand doesn’t need to be monitored.

If a variant unexpectedly doesn’t appear in the Inventory page or KPIs, check its product status and tracking flag in Shopify.

Using Buckets to Prioritise Your Day

  • Start with Reorder Now each morning — these are the POs that need to go out today

  • Check Out of Stock if you run retail or wholesale — you may be losing sales right now

  • Review Dead Stock monthly — decide whether to discount, transfer, or delist

  • Scan Low Stock when you’ve cleared the urgent work — these become Reorder Now if you wait

Did this answer your question?