Demand Forecast Accuracy: Measure the Miss Before You Reorder

A forecast becomes useful after you compare a saved plan with actual demand on the same boundary. WAPE gives you one portfolio-level measure of that miss.

Illustrative forecast reviewThree weekly SKUs
PeriodForecastActualError
Week 150045050
Week 230036060
Week 320019010
WAPE12%

120 absolute error units / 1,000 actual units

Your buyer forecasted 1,000 units for the month. The store sold 1,000. The total looks perfect, but one bestseller stocked out while two slower products filled the warehouse. A correct total can hide a bad SKU plan.

Demand forecast accuracy measures how close a saved estimate came to actual demand for the same products, channels, locations, and dates. You need that fixed comparison before you can tell whether the forecast improved, which assumptions failed, or whether the next purchase order should change.

Freeze the forecast before actual sales arrive

A forecast is an estimate made at a specific time. Save the version your team used for the buying decision, including its creation date. If someone replaces the number after a promotion starts, the later figure may help operations, but it cannot measure the quality of the original plan.

Match the comparison boundary on both sides. A forecast for US Shopify demand cannot be judged against worldwide sales. A weekly forecast should not use a month of actuals. Product bundles, channel allocations, and warehouse locations need the same treatment in the forecast and the sales data.

Actual sales can understate demand when a product stocked out. If a SKU had no sellable inventory for two days, recorded orders only show what customers could buy. Flag the period instead of treating constrained sales as a clean measure of customer demand.

Shopify's inventory forecasting guide describes demand forecasting as the use of sales history, seasonal patterns, and current conditions to estimate future stock needs. That forecast supports the buy. Accuracy review tells you how much confidence the next buy deserves.

Use WAPE to measure the total size of the miss

Weighted absolute percentage error, or WAPE, adds every absolute forecast error and divides the total by actual demand. For each row, subtract actual units from forecast units and ignore the sign. Add those absolute errors, divide by total actual units, then multiply by 100.

WAPE = total absolute forecast error / total actual demand × 100

If three weekly rows miss by 50, 60, and 10 units, total absolute error is 120 units. If actual demand across those rows is 1,000 units, WAPE is 12%. The forecast missed by an amount equal to 12% of actual volume.

WAPE works well as a portfolio score because a tiny SKU cannot dominate the result with one large percentage miss. Shopify's guide to demand planning KPIs recommends WAPE as a single overall measure and gives the same total-error formula.

The score does not explain why the miss happened. It tells you how large the miss was. Keep the row-level detail so you can find the products, channels, or weeks that created it.

A three-SKU forecast for a DTC skincare launch

Consider a hypothetical skincare brand planning a four-week replenishment order for three established products. The buyer freezes a forecast of 500 cleanser units, 300 moisturizer units, and 200 serum units before the month starts.

Actual demand closes at 450 cleansers, 360 moisturizers, and 190 serums. The absolute errors are 50, 60, and 10 units. Total actual demand is 1,000 units, so the portfolio WAPE is 12%.

The total forecast also equals 1,000 units, which can tempt the team to call the month accurate. SKU detail shows the operational problem. The plan overestimated cleanser by 50 units and underestimated moisturizer by 60. If both products share budget but not raw materials or packaging, the errors cannot cancel each other in the purchase order.

The buyer checks the month and finds that moisturizer appeared in a creator video during week two. The promotion calendar did not include the placement because the post date was unconfirmed. For the next cycle, the team adds confirmed and probable creator placements as separate inputs instead of raising every moisturizer forecast by the same percentage.

Keep the sign to see whether the plan runs high or low

WAPE removes the sign so over-forecasting and under-forecasting cannot cancel out. You still need the signed error for each row. Use forecast minus actual and keep positive and negative values consistent.

In the skincare example, cleanser has a positive 50-unit error, moisturizer has a negative 60-unit error, and serum has a positive 10-unit error. The signed errors sum to zero even though the SKU plan missed by 120 absolute units. That is why bias cannot replace WAPE.

Bias adds direction. A repeated positive error means the plan tends to run above actual demand, which can leave excess stock. A repeated negative error means the plan tends to run below demand, which can increase stockout risk. Review bias by product family or channel rather than relying only on a company-wide total.

Run one closed forecast review after each buying cycle

Keep the original plan, actual demand, known constraints, error calculation, and the next assumption change in one review record.

01
Save the forecast before the period startsRecord the SKU, channel, location, forecast period, forecasted units, and creation date. Keep later overrides as separate versions instead of replacing the original number.
02
Close the actual demand on the same boundaryUse the same products, channels, locations, and dates. Flag stockouts, cancelled orders, returns, bundles, and one-time promotions that changed what the sales record means.
03
Calculate error and biasUse WAPE for the size of the total miss. Keep signed errors for each SKU so you can see whether the plan tends to run high or low.
04
Change one planning inputUpdate the promotion calendar, launch assumption, baseline window, channel split, or another named input. Record the reason, then test the next closed period before making another change.

Where ShopDucky fits

ShopDucky can bring Shopify demand, inventory availability, promotions, and purchase-order context into one forecast review. An AI employee can calculate exceptions and prepare the next planning change while your inventory owner approves the buy. See the store operations workflow or the Reporting OS.

Demand forecast accuracy, answered

What is demand forecast accuracy in ecommerce?+

Demand forecast accuracy describes how close a saved estimate of future unit demand came to actual demand for the same products, channels, locations, and dates.

How do you calculate WAPE?+

Add the absolute unit error for every row, divide that total by actual units, and multiply by 100. Lower WAPE means the forecast missed by a smaller share of actual demand.

Why not average each SKU's percentage error?+

A simple average can let a low-volume SKU dominate the result. WAPE weights the portfolio by actual unit volume, so large and small products contribute in proportion to what sold.

Is demand forecasting the same as safety stock?+

No. A demand forecast estimates expected sales. Safety stock adds a buffer for uncertainty in demand and replenishment. You need both, but they answer different planning questions.

Keep reading
Soft amber haze framing the ShopDucky demo call to action

Get your ducks in a row.

Connect your stack, put your first AI employee on the work, and watch it run your brand end to end.