How to calculate average daily sales for a Shopify SKU (and the window to use)

Average daily sales for one SKU is net units sold divided by the number of days in the window you picked. Take the units that left the shelf, deduct returns, divide by 7, 14 or 30. In Shopify both numbers sit on one screen: Analytics, then Reports, then the sales report broken down by product variant SKU. Set the date range, find the variant, take its net quantity, divide by the days in the range. Twenty-one units over seven days is 3.0 a day.
The arithmetic is not the hard part. The window is. The same SKU, with the same month of history, gives you a different average at 7, 14 and 30 days, and because your reorder point is that figure multiplied by your lead time, it gives you three different reorder points. Here is what that looks like on one product.
One thing to say plainly first. Restoc is not open to merchants yet, it is on a waitlist. So where this piece describes what Restoc does, read it as what is built and tested, not as something you can log in and use today.
One SKU, one month, three answers
A 250ml hand wash, SKU HW-250. The supplier takes 12 days from purchase order to goods received. The last 30 days:
- Days 1 to 16: steady, about 2 a day, 32 units
- Days 17 to 23: a promo week with a newsletter behind it, 10 a day, 70 units
- Days 24 to 30: back to normal but slightly up, 3 a day, 21 units
That is 123 net units in 30 days. Run the three windows, with reorder point as average daily sales multiplied by the 12 day lead time.
7 days. 21 divided by 7 is 3.0 a day. Reorder point 36.
14 days. The promo week is half of this window. 91 divided by 14 is 6.5 a day. Reorder point 78.
30 days. 123 divided by 30 is 4.1 a day. Reorder point 49.2, round up to 50.
Thirty-six, seventy-eight, fifty. One SKU, one supplier, one month of real sales. Reorder at 36 when the 14 day read was closer to the truth and you place the order six or seven days too late, so the shelf is empty before the pallet lands. Reorder at 78 when the 7 day read was right and you are holding roughly three extra weeks of cover on a product that stopped being hot.
What each window is actually measuring
- 7 days is a trend reading. It responds fast, which suits fast movers with short lead times, where you can correct next week's order. On anything selling under a unit or two a day it is mostly noise: one busy Saturday doubles the average.
- 14 days covers two full weekly cycles, so the weekday and weekend pattern smooths out while a real change in demand still shows up. For most catalogues this is the sane default.
- 30 days is a baseline reading, right for slow movers and long lead times, because you are placing a bet that has to hold for weeks. Its weakness is memory: in the example above it is still carrying a promo week you will not repeat, and it will hide a decline for a month.
Pick the window from the lead time, not the calendar
Let the lead time choose the window. If your supplier takes 30 days, a 7 day average is a month-long cash commitment based on one week of data. If your supplier takes 4 days, a 30 day average has you reordering off a figure that is three weeks stale.
So the right window is not the same across your catalogue. The candle you reorder from a UK supplier in 5 days and the glassware you bring in from overseas in 45 days should not share a setting. Restoc is built to treat the window as a setting rather than a hard-coded rule: it takes 7, 14 or 30 days, validated server side so a bad value is rejected rather than silently stored, and lead time is entered per SKU, because only you know what your supplier actually does.
Three things that quietly break the number
The denominator. Divide by the days in the window, not the days that had a sale. Four units across three separate days in a 30 day window is 0.13 a day, not 1.33. This is the step people most often get wrong by hand.
Stockouts. Days with no stock are days with no sales, and they drag the average down. If HW-250 was out for 6 of those 30 days, the honest figure is 123 units over 24 selling days, 5.1 a day, not 4.1. An average built on a stockout under-orders, which causes the next stockout. If a SKU ran out inside your window, either exclude those days or treat the result as a floor.
Returns and kits. Use net quantity, with returns deducted, or a SKU with a high return rate looks like a faster seller than it is. If the same unit also ships inside a bundle under another SKU, the component's real demand is higher than its own line shows.
Short history is a separate case. A SKU with 9 days of sales cannot produce a 30 day average, and a calculation that returns nothing is worse than one that returns a cautious number. Restoc's reorder point calculation is a pure function, and its tests cover exactly this: zero-sales SKUs, high variance history, histories shorter than the selected window, and stock already at zero all return a defined, non-negative number. That is written and tested ahead of launch.
Where safety stock fits, and where it does not yet
An average covers the average. Items that sell in bursts run out before an average-based reorder point is reached, which is why merchants add safety stock on top of lead-time demand. A store-wide safety stock percentage, and a safety stock column on the dashboard, weekly report and CSV, were approved for the Restoc roadmap on 16 October 2026 and are not built yet. Until they ship, the levers are the window and the lead time: for a bursty SKU, use the window that reflects its spikes rather than the one that averages them away, and be deliberate about the lead time you enter.
What the number is for
Average daily sales on its own is trivia. It earns its keep when it becomes a date. When Restoc launches, it will use the window and your lead time to compute a reorder point per SKU, show current stock and days of inventory remaining on a dashboard, send an email or Slack alert when a SKU crosses its reorder point, and put the SKUs below the line into a weekly report with a suggested order quantity you can export as CSV. The point is not the arithmetic. The point is knowing on Tuesday that you have 11 days of cover and a 12 day lead time.
What date range should I use in Shopify to work out average daily sales?
Start at 14 days, because it covers two full weekly cycles and still reacts to a change in demand. Move to 7 days for fast movers with short lead times, and to 30 days for slow movers or suppliers who take weeks. Match the window to the lead time you are committing to.
Should I deduct returns from units sold?
Yes. Use the net quantity figure, with returns taken off, or a SKU with a high return rate will look like a faster seller than it is and you will over-order it. Gross units sold flatters every product in the catalogue.
What if the SKU was out of stock during the window?
Days with no stock are days with no sales, so they pull the average down and cause you to under-order. Either divide by the days the SKU was actually sellable, or treat the result as a floor rather than a true rate. An average built on a stockout tends to produce the next one.
What do I do with a SKU that has only two weeks of sales history?
Use the shortest window the data supports and expect to revise it once a month of history exists. Restoc's reorder point calculation is tested against histories shorter than the selected window, so when it launches it will return a defined, non-negative number rather than nothing while the SKU builds a record.