Guides
Gross Units Sold Is Not How Many You Need to Buy
Returns make one column count too much and the other count too little — and the number your purchase order needs is neither of them.
Gross units count shipments, not demand
A units-sold column counts what left the warehouse. In a category where customers order two sizes to keep one, that is a materially different number from what customers wanted. Both shipped, both got counted, and one was always going back. Shopify's own reporting draws the line for you: gross sales are measured before returns, and net quantity is defined as units sold minus units returned (Shopify's sales report reference). Those two columns answer different questions, and only one of them is about demand.
The consequence is arithmetic rather than opinion. If three in ten units that ship come back, a trailing gross-units window overstates demand by roughly the return rate, and every number built on it carries the same margin. Velocity reads high by that margin, days of cover read short, and the reorder quantity that falls out the other end is a purchase decision made on shipment volume wearing demand's label. Nothing in the chain is broken; the input was just answering the wrong question, quietly, at every SKU in the category.
| Gross units sold | Net units sold | Units to replace | |
|---|---|---|---|
| What it counts | Everything that shipped, kept or not | Shipped minus everything returned | Shipped minus what came back sellable |
| Question it answers | How much did we send out? | How much did customers keep? | How much left stock for good? |
| Effect on replenishment | Overbuys by the restocked units | Underbuys by the unsellable units | Buys the gap that has to be refilled |
| Return-lag exposure | High — recent days barely adjusted | High — late returns land after the read | Lower — read on a return-mature window |
Returns arrive late, so a trailing window is always half-counted
Returns also arrive late, which breaks the trailing window a second way. Units shipped on day 28 of a 30-day look-back have had two days to come back. Units shipped on day 1 have had thirty. The window is not uniformly return-adjusted; it is progressively less adjusted the closer you get to today, and that recent end is the slice a trend read leans on hardest. A flat category can look like it is accelerating simply because the most recent weeks have not finished returning yet.
The physical side lags too. A return has to be shipped back, received, inspected, and restocked before it is sellable again — return transit alone commonly runs from a few days to a few weeks, with receiving and inspection adding days on top (return-processing time statistics). Until that finishes the unit sits in neither column — gone from on-hand, not yet back. The two errors point the same way. Recent demand reads hotter than it is, and available stock reads thinner than it will be. The buy plan sees an urgent gap that partly resolves itself in a fortnight without a single purchase order. (This is the mirror image of the stockout problem, where history under-reports demand — here it over-reports it.)
Not every return comes back as inventory
The obvious correction is to net out returns. That is also wrong, in the other direction. Netting assumes every returned unit comes back as inventory. Some do not. Sort the units into three buckets. Kept units are demand. Returned-and-restocked units are not demand, but they come back as supply, so you do not need to buy them again. Returned-unsellable units — damaged, worn, opened, past their sell-by — are not demand either, but they are gone from stock permanently with no sale to show for it. Those units still have to be replaced. Net units sold ignores them, which is why netting underbuys.
That gives the number the buy plan actually wants:
units to replace = gross units shipped − units returned and restocked as sellable
Which bucket dominates is a category fact, not a universal one. Apparel and footwear returns are often restockable — a dress tried on and sent back goes on the rack again. Opened beauty usually is not. Two products with an identical return rate can need very different replacement quantities, so the pass rate belongs to the product line, not the store.
Netting demand before it reaches the buy plan
Suppose 200 units ship in the window and 30% come back — 60 returns. Of those, 45 pass inspection and go back on the shelf; 15 do not. Gross units says buy 200, which overbuys by the 45 that returned themselves to stock. Net units says 140, which underbuys by the 15 that left for good. The units you actually have to replace are 200 − 45 = 155. (Illustrative numbers.)
Turning that into practice is four moves. Pull units at the grain you buy at — variant, not product, because bracketing lives inside the size run and the sizes at the edges behave nothing like the middle. Use a window old enough that its returns have landed; if refunds take a couple of weeks, the last two weeks are not evidence yet. Know your restock-pass rate roughly, by category, from what your warehouse actually puts back on the shelf. Then apply the result as a haircut to the plan rather than rewriting sales history — the correction should stay visible and adjustable, not baked into a number nobody can audit. Recheck it seasonally: new size runs, new fits, and gifting all move returns.
Assisty forecasts per product or per variant over the period you pick. Buying decisions happen at variant level, so do the forecasts, and that is the grain this correction has to be applied at. The what-if scenario is where the judgment goes: a plain-English percentage trend scenario applies instantly, and the forecast and the reorder needs update in front of you, no spreadsheet copies. You can ask why demand is changing and Atlas explains the drivers, and at-risk items carry straight into the Smart Buying Table. The return-rate half of the input is yours: the percentage you apply is your read of your own category.
The AI Report Builder gets you the raw side of that read. Ask for sales or replenishment reports by product, variant, category, vendor, location, or over time, from the last 7 days to year-over-year; the sales overview family covers revenue, units, and profit. Refine conversationally — "Show the last 90 days", "Just the top 20" — and Atlas changes only what you asked. Save it to My Reports, schedule daily, weekly, or monthly email delivery, and export CSV, PDF, or Google Sheets, so the baseline you are haircutting arrives on a cadence instead of being rebuilt by hand.