Skip to main content
Card class: Non-HeroCategory: Ecommerce Platform
Days-of-cover per SKU = on-hand / 30D velocity. Surfaces stockout risk before it bites.

At a glance

Per-SKU days-of-cover, computed as Available ÷ avg_units_sold_per_day_30D. The forecasting view of inventory: which variants will OOS in 5 days, 14 days, 30 days, given current velocity?
What it countsFor each active variant: totalInventory ÷ (units_sold_30D ÷ 30). Variants with zero sales in 30D are excluded (no velocity = undefined cover). The card surfaces a sortable list bucketed by cover-band.
VAT / tax treatmentNot applicable, count metric.
ShippingNot applicable.
DiscountsNot applicable.
RefundsSales numerator includes refunded units (the velocity reflects gross demand, not net). For net-velocity, subtract refunded units; on the roadmap.
Cancelled / voided ordersExcluded from velocity if Shopify removed them. Included if still in index.
CurrencyNot applicable.
Channels / sourcesAll channels contribute to velocity. POS draws same as online.
Time window30D velocity window; cover figure is real-time given current stock
Alert triggerNone directly; pair with workspace thresholds (e.g. “alert if any SKU in top-50 has <14 days cover”).
Rolesowner, operations

Calculation

Calculated automatically from your Shopify data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.

Worked example

A US apparel DTC brand on Shopify, ~1,800 active variants. 30D window 12 Apr 26 to 12 May 26. Top-by-velocity variants:
VariantOn-hand30D units soldDays coverBucket
Linen tee, Sand, M82401.0Critical (≤7d)
Linen tee, Sand, L322204.4Critical (≤7d)
Wide-leg trouser, Black, 10561809.3At risk (8-14d)
Linen tee, White, M10219515.7Comfortable (15-30d)
Bucket hat, Olive, OS183515.4Comfortable (15-30d)
Wide-leg trouser, Cream, 122409080.0Surplus (>60d)
Linen tee, Black, S48030480Surplus, slow-mover
Six things to notice:
  1. Sand M is the urgent fire. 1.0 day cover; OOS imminent. PO arrival or stock transfer needed today. Cross-reference Inventory Alerts for the live OOS list including this SKU within hours.
  2. Sand L is on borrowed time. 4.4 days cover at current velocity. Standard reorder lead time is typically 14-21 days; this SKU will OOS before reorder arrives unless emergency stock transfer is arranged.
  3. The “at risk” bucket is the planning-priority list. 9.3 days cover means OOS in ~10 days; with normal lead times, the action window closes today. This is where ops attention should focus.
  4. Surplus on Cream 12 is signal. 80 days cover at 90 units/30D means demand is asymmetric across colour-size combinations. Cream 12 is a slow-mover; allocate fewer units in next PO cycle.
  5. Linen tee Black S has 480 days cover. Either over-ordered (capital tied up) or genuinely a slow-mover that should be marked-down or de-listed. Pair with margin-per-unit to decide clearance vs hold.
  6. Velocity assumes recent demand continues. Marketing pushes, viral moments, or seasonal peaks invalidate the assumption. Sand M’s 240 units/30D could collapse to 80 next month if the marketing wave passes; cover would extend to ~3 days from a single day. Pair with marketing calendar to forecast better.

Sibling cards merchants should reference together

Stock vs Sales velocity is the forecasting cousin. Companions:
CardWhy pair it with Stock vs Sales
Products with Zero/Negative StockThe OOS list. This card predicts which non-OOS variants will fall onto that list next.
Inventory DistributionThe aggregate band view; this card is the per-SKU detail.
OOS Spike AlertThe acute-event alert. Stock-vs-sales is the steady forecasting view.
Top SKUsVelocity drill-down by SKU; primary input to this card.
Top Products by RevenueThe £-weighted velocity. A high-velocity SKU might not be top-revenue if it’s a low-margin item.
Bottom ProductsThe slow-mover list; surplus-cover variants.
Fulfillment RatePersistent low-cover on top SKUs eventually drags fulfilment rate.

Reconciling against the vendor’s own dashboard

Where to look in Shopify Admin: Shopify doesn’t expose days-of-cover natively. Closest reconstructions:
  • Reports → Inventory → Sell-through rate: shows what % of stock sold in a period; mathematically related but not days-of-cover.
  • Apps like Stocky / Inventory Planner / Cogsy: typically expose days-of-cover and reorder forecasting.
  • Reports → ABC analysis (Shopify Plus): SKU-velocity classification (A = top, B = middle, C = slow).
Why our number may legitimately differ from a Stocky / Inventory-Planner reconstruction:
ReasonDirectionWhy
Velocity windowEitherWe use 30D; Stocky may default to 14D or 60D. Different windows produce different velocity figures. Configurable in Nerve Centre → Inventory.
Lead-time inclusionThey include, we don’tStocky often subtracts vendor lead time from days-cover to give “days until OOS net of incoming”. This card is gross days-cover.
Trend smoothingDifferent methodsWe use simple-mean velocity; advanced apps may use exponential weighting or seasonality adjustment.
Multi-locationAggregateWe sum across active locations; some apps split per-location.
Sync lagEitherInventory updates can lag 5-15 min during heavy write periods.
Cross-connector reconciliation:
CardExpected relationshipWhat causes legitimate divergence
3PL / WMS forecasting reportsShould align directionally3PL forecasts often include lead-time and PO-arrival data which this card doesn’t.
amazon_sp.amazon_inventory_velocityIndependentAmazon and Shopify are separate inventory pools unless multi-channel sync is enabled.

Known limitations / merchant FAQs

What’s a healthy days-of-cover target? Depends on your reorder cadence and lead time:
  • Fashion DTC with 21-30 day lead times: target 30-45 days cover on top-velocity SKUs.
  • Subscription consumables with 14-day fulfilment cycles: target 21-30 days cover.
  • Slow-fashion with 60-90 day lead times: target 60-120 days cover.
  • Fast-fashion with 7-14 day reorder: 14-30 days suffices.
The right number is “lead time + safety stock + planned promo bumps”. A SKU at 14 days cover when lead time is 21 days will OOS regardless of urgency. Why are some variants excluded from the chart? Variants with zero sales in 30D have undefined velocity (cover = stock / 0 = infinity). The card excludes them. To see slow-movers, look at Bottom Products or Inventory Distribution Surplus band. My new launch SKU shows infinite cover. Why? Same reason: zero historical sales pre-launch. Once 7-14 days of post-launch sales exist, velocity becomes meaningful. New launches need separate forecasting (typically based on similar past launches, not current data). Why does seasonality break this card? The 30D velocity is naive about seasonality. A Christmas-decorations SKU showing 14 days cover in November is a fire (demand surge incoming); the same SKU showing 14 days in February is fine (off-season). Pair with category-specific seasonality calendars. Can I customise the cover bands? Yes, in Nerve Centre → Inventory. Defaults are ≤7d / 8-14d / 15-30d / 31-60d / >60d. Long-lead-time categories should widen them (≤14d / 15-30d / 31-60d / 61-120d / >120d). My multi-location store, does cover account for distribution? The card sums Available across active locations and uses store-wide velocity. A SKU with 100 units in London but 0 in Manchester shows healthy cover, but if Manchester customers can’t reach London inventory (no inter-location transfer), the practical cover for Manchester customers is 0. Per-location cover is on the roadmap; for now, plan transfers manually. Does promotional velocity distort the cover figure? Yes. A SKU with normal velocity 5/day that sold 50/day during a promo week will show “10/day” 30D average, overstating future depletion. Pair with promotional calendar to discount transient promo-driven velocity. My subscription SKUs, are they handled correctly? Subscription billings draw from inventory like one-off orders. The 30D velocity reflects subscriber+one-off blended demand. For pure subscription forecasting, segment subscriber-only velocity from your subscription tool’s reports. Action playbook for using this card:
  1. Daily ops: scan the Critical (≤7d) bucket. Reorder or transfer immediately.
  2. Weekly planning: scan At Risk (8-14d) bucket. Confirm POs are in flight; chase suppliers if not.
  3. Monthly review: scan Surplus (>60d) bucket. Decide markdown, clearance, or de-list.
  4. Quarterly forecasting: review velocity-by-SKU trends; tighten PO models for chronic over-orders or under-orders.
  5. Lead-time review: if Critical bucket is regularly populated, lead times are too long for your safety stock policy. Either widen safety stock or shorten lead times.
  6. Cross-reference with paid media: pause Google Ads / Meta on Critical-bucket SKUs, see Active Ads on OOS.

Tracked live in Vortex IQ Nerve Centre

Stock vs Sales Velocity is one of hundreds of KPI pulses Vortex IQ tracks across Shopify and 70+ other ecommerce connectors. Nerve Centre runs the detection layer; Vortex Mind investigates the cause when something moves; Ask Viq lets you interrogate any number in plain English. Start for free or book a demo to see this metric running on your own data.