Home / Guides / Stock & ads

Stock & ads

Days of cover: the stock number ad buyers usually skip

Days of cover (DOC) is a simple inventory metric. Here is why media decisions get stupid without it.

Updated 10 Sep 2026 · ~1125 words

Days of cover answers one question: at the rate we are selling, how long until this runs out? Ad accounts that never see that number optimise for the wrong win.

Short version: Days of cover is units on hand divided by average daily units sold: how long stock lasts at the current sell rate. Work it out per variant over a 14-day window to start, and set the threshold from restock lead time. A healthy ROAS on a product with three days of cover is a countdown, not a win, so put the number next to spend and attach a media rule to each band.

You can calculate a rough version as on-hand units divided by average daily units sold. Use a window that matches how jumpy your category is. Seven days if you move fast. Fourteen or thirty if you are steadier.

Units on hand÷ daily rateDays of coverMedia rules
You do not need a WMS for a useful version of this.

Why marketing teams skip it

It is not in Ads Manager. It is not in most creative briefs. It lives with ops or in a dusty sheet. So acquisition keeps scaling the hero that is about to vanish, then blames “creative fatigue” when reality was inventory.

How to use DOC without becoming a supply chain analyst

Healthy ROAS on a product with three days of cover is not a win. It is a countdown.

Pair it with velocity, not guesswork

Cover alone can lie after a one-off spike. Glance at velocity trend. If yesterday was a gift card spike and today is normal, do not rebuild the whole account.

For Shopify operators, the job is boring consistency: stock truth next to spend truth. That is the backbone of sensible store optimisation, not another vanity dashboard tile.

Make it a habit, not a project

Weekly is better than never. Daily is better if you scale hard. Put the number next to spend in whatever you already open in the morning. Consistency beats a perfect formula you abandon.

Also watch returns. High sell-through with high returns is not demand. It is a product or expectation problem wearing a sales costume.

Questions people actually ask

Is weeks of supply the same idea?

Same family. Pick one language so people stop converting units mid-meeting.

What window for daily sell rate?

Start with 14 days for most DTC. Shorten if promo-noisy; lengthen if volume is thin.

Worked example (simple numbers)

You have 140 units. Last 14 days sold 70 units. Daily rate is 5. Cover is 28 days. That is usually fine for modest prospecting. If the real issue is that visitors never convert in the first place rather than a stock problem, the funnel arithmetic in why a Shopify store gets no sales is the faster place to look.

Same 140 units, but last 7 days sold 70 because of a promo. Daily rate 10. Cover is 14 days. If the promo ends and velocity halves, cover doubles again: do not overreact on one noisy week without checking the promo calendar.

If cover is 28 days but 120 of those units are a colour nobody buys, your “cover” is a lie. Segment by the variants ads actually push.

Share the number in the creative brief

If designers and buyers never see cover, they will keep featuring what looks good, not what you can sell. A one-line stock note in the brief is unglamorous and extremely effective.

Work it out yourself

0 of 5 done. Ticks stay on this device. When they are all ticked you know exactly what a desk would be doing for you.

How to calculate days of cover in Shopify, step by step

You do not need a warehouse system or a data team for this. Twenty minutes in Shopify and a spreadsheet gets you a number good enough to make media decisions with, and the discipline matters far more than the decimal places.

  1. Export what you actually hold, by variant. In Shopify admin go to Products → Inventory and export. You want the Available column per variant, not per product. If you sell from more than one location, filter to the location that fulfils online orders first. Wholesale stock sitting in another warehouse is not cover for a Meta ad.
  2. Export what you sold, over a window that suits your noise. Use Analytics → Reports → Sales by product variant SKU and set the date range to 14 days as a starting point. On plans without that report, export Orders for the same range and pivot by SKU. Fourteen days is the sane DTC default: 7 if you just launched or promoted, 28 to 30 if your volume is thin enough that a single order swings the average.
  3. Work out the daily rate and the cover. Daily rate is units sold divided by days in the window. Cover is units available divided by daily rate. Do it per variant. A parent product showing 140 units of cover tells you nothing if 120 of them are a colour nobody buys.
  4. Set your threshold from restock lead time, not a round number. The number that matters is how long it takes you to get more. If a reorder lands in 21 days, a 14-day threshold means you are already too late when it trips. Threshold should be lead time plus a few days of safety, so most brands end up higher than the 7 or 14 they first guess at.
  5. Subtract the demand that is not coming from ads. Organic, email and returning customers eat the same stock. If paid is roughly half your volume, the units genuinely available to advertise against are roughly half of what you exported. Skipping this is why ads sell out a size that "had plenty left".
  6. Attach one media rule per band, and write them down. Cover comfortably above threshold: scale normally. Cover approaching threshold: hold budget, stop new prospecting, keep retargeting. Cover below threshold: pull the variant from prospecting and from any catalogue set that can serve it. High cover with dead sell-through is not a media problem at all, it is a clearance or bundling decision.
  7. Re-run it on a fixed day and check the promo calendar first. Weekly beats never, daily beats weekly if you scale hard. Before you act on a sharp move, check whether last week contained a promo, a gifting spike or an influencer drop. One noisy week is not a trend, and rebuilding an account around it costs more than the stockout would have.

That is the whole method. The free days of cover calculator runs the same maths in the browser if you would rather not build the sheet, and it handles the promo-noise and inbound-stock cases for you.

If you want stock, ads and the morning list in one place: that is what we built Ralph for: a growth operator for Shopify, with review before anything ships. Not magic. Fewer tabs. See Ralph · Docs