Shopify inventory health score: use days of cover to prevent stockouts
How to build a practical Shopify inventory health score from days of cover, stockout risk, overstock, and aging — so multi-location stores know what to transfer before sales are lost.
Jeshua Leger
Founder, Leger Studio ·
Unit counts lie. A warehouse can show 400 units of a hoodie and still be three days from a stockout if that door sells 120 a day — while a retail location holding 80 of the same SKU can look “low” when it actually has six weeks of cover. If your ops review still sorts by on-hand quantity, you are optimizing the wrong number.
An inventory health score fixes that by collapsing stockout risk, overstock, balance across locations, and aging into one readable signal — with days of cover as the backbone. This guide shows how merchants can compute that score from Shopify data, use it in a weekly ritual, and connect it to real transfers without turning automation loose on day one.
Why on-hand quantity is a bad health metric
Shopify already gives you on hand, committed, and available per location. Those fields answer “how many can I sell right now?” They do not answer “how long will this last?” or “is this SKU healthy relative to how it sells here?”
- A slow SKU with 50 units can be overstocked; a fast SKU with 50 units can be an emergency.
- Company-wide totals hide a stockout at the only location that fulfills DTC while retail looks fine.
- Incoming POs change the story — ignoring them creates panic transfers that arrive the same day freight does.
- Aging inventory can look “healthy” on cover if velocity collapsed; the units are still cash trapped on a shelf.
Health is relative to demand, time, and place. Days of cover is the simplest translation from raw stock into an operational decision.
Days of cover: the number every location review needs
For each variant at each location:
- Pick a velocity window — typically units sold in the last 7, 30, and 90 days at that location (not store-wide).
- Convert to daily velocity: window units ÷ days in the window. Many teams weight 7-day for urgency and 30-day for baseline.
- Cover days = (available + incoming) ÷ daily velocity when velocity > 0.
- Flag zero-velocity SKUs separately — cover is infinite on paper and useless as a transfer signal.
Example: Location A has 90 available, 30 incoming, and sells 12/day → cover ≈ 10 days. Location B has 40 available, no incoming, and sells 1/day → cover ≈ 40 days. Sorting by on-hand would prioritize moving stock into B. Cover says the opposite: A is the risk.
Build an inventory health score from four components
A single score is only useful if every component is auditable. Keep the math boring enough that a store manager can disagree with an input — not a black box.
1. Stockout risk
Score how far cover sits below your minimum. A location at 3 days of cover on a top seller should dominate the agenda over a mid-tail SKU at 9 days. Weight by revenue or unit velocity so the score reflects commercial damage, not SKU count.
2. Overstock / surplus
Score how far cover sits above your surplus ceiling, optionally capped so one dead SKU cannot tank the whole catalog view. Surplus matters because it is the fuel for transfers — without a donor location, stockout risk has nowhere to pull from.
3. Balance across locations
For each SKU, compare cover across locations that share a fulfillment role. High imbalance (one location under target while another is far above) is the classic transfer opportunity. Balanced poverty — every location short — is a purchase-order problem, not a transfer problem.
4. Inventory age
Track how long units have sat with weak sell-through. Aging catches the failure mode where cover looks fine because demand died. Those units still need a plan: markdown, bundle into a kit, or stop replenishing the wrong door.
Combine the four into 0–100 (or 0–10) with explicit weights. A practical default for multi-location ecommerce + retail: 40% stockout risk, 25% balance, 20% overstock, 15% age. Publish the weights so ops and finance argue about policy, not spreadsheet formulas.
A weekly ritual that turns the score into action
Scores that nobody reviews are dashboards for comfort. Tie the number to a cadence your warehouse can staff.
- Monday: refresh location × variant cover for your top sellers (start with the SKUs that drive most units or revenue).
- Sort the risk component: anything under your cover floor with meaningful velocity.
- For each risk SKU, look for a surplus donor at a location allowed to ship to the short site.
- Propose a specific transfer: variant, source, destination, quantity, expected cover after the move.
- Create the transfer in Shopify so transit and receiving stay in the system of record.
- Friday: review what still stocked out, what arrived unused, and whether targets need tightening.
That ritual is the same skeleton as a full transfer playbook — for quantity math, safety floors, and approval rails, see Shopify multi-location inventory transfers.
Stockout risk playbook: what to do before you hit zero
Cover under your floor is a countdown, not a suggestion. Triage in this order:
- Confirm the velocity is real (promo spike vs sustained demand) and that available is not locked by commits or a bad count.
- Check incoming: if freight arrives inside the cover window, a transfer may be wasted labor.
- Find surplus at a valid source location; respect safety stock so you do not create a second stockout.
- If no internal surplus exists, escalate to PO / vendor expedite — transfers cannot invent units.
- Protect merchandising that depends on the short SKU: pause low-margin kits or ads that burn the last units in the wrong channel.
Kit and pack merchants should treat shared components as first-class risk SKUs. A pack that looks in stock company-wide can still fail when the short component only exists in the wrong building. Pair this playbook with Shopify kit inventory sync and, if you sell checkout-native packs, Better Bundles inventory docs.
Location roles: 3PL, warehouse, and retail are not interchangeable
A healthy score assumes you only compare locations that are allowed to help each other. Tag each Shopify location with a role and transfer permissions:
- Ecommerce / regional warehouse: usually source and destination for DTC replenishment.
- Retail doors: often destination-only from a hub; sometimes source for local OMS if you allow store fulfillment.
- 3PL nodes: may be source for DTC only — never propose them as a destination for retail replenishment if that path is not in your contracts.
- Quarantine / returns: exclude from cover health until units are sellable again.
Approval thresholds keep humans in control
Once recommendations are trustworthy, the bottleneck becomes signing every move. Split the queue:
- Auto-approve (or fast-track) small routine transfers under a unit or dollar threshold.
- Require sign-off above that threshold, or anytime the source would drop near its safety floor.
- Cap daily transfer volume so a bad rule cannot empty a warehouse overnight.
- Keep an audit trail: which facts matched, who approved, and what cover looked like before/after.
Run recommend-and-approve long enough that suggestions match how your team already thinks. Only then widen automation — still with caps. That is the same safety posture described on the FlowOps page for rules and approvals.
What “good” looks like after 30 days
- Leadership can quote one inventory health number and drill into the four components behind it.
- Top-SKU stockouts at fulfilling locations trend down without drowning the team in tiny transfers.
- Surplus is visibly funding risk locations instead of sitting as “extra” nobody redistributes.
- Cover targets and safety floors are written policies, not tribal knowledge.
- Transfers are native Shopify transfers — not side spreadsheets that drift from admin.
Where FlowOps fits (in development)
FlowOps is Leger Studio’s multi-location inventory app currently in development. The product direction is to watch stock across every Shopify location, surface imbalances with days-of-cover reasoning, expose an Inventory Health Score with drill-down components, and create native Shopify transfers — with rules, approvals, and an audit trail when you are ready to automate.
It is not available on the Shopify App Store yet, and this post is not an install link. Until launch, run the scorecard and transfer ritual with Shopify’s built-in inventory and transfers, keep reading the blog, and watch the FlowOps app page for updates. For product news when new Leger Studio apps ship, subscribe from the site footer or use the contact page.