Blog · Forecast and pipeline · Supply chain
Demand planning KPIs connect forecast quality with availability and inventory. Build a planner scorecard from frozen forecasts, customer demand, fulfillment records and stock snapshots, then reconcile the measures before acting.
Demand planning key performance indicators should measure forecast quality, availability and inventory together. A plan can match total demand while missing individual products badly, and a high service result can depend on carrying too much stock. Use a scorecard that makes those tradeoffs visible at the product and location where decisions happen.
A useful KPI connects a defined measure to an owner and an action. For a demand planning team, the action is usually to correct an assumption, investigate a repeated miss or agree on an inventory policy with operations.
Use the same product, location, selling unit and period across the scorecard. Also retain the forecast issue date. The forecast approved before an order was placed answers a different question from the latest revised forecast.
| Measure | Calculation used here | What it tells the meeting |
|---|---|---|
| Weighted absolute percentage error, or WAPE | Sum of absolute forecast errors / Sum of actual demand | Size of the misses without cancellation |
| Signed forecast bias | Sum of forecast minus actual / Sum of actual demand | Direction of the net miss; positive means overforecast |
| On-time unit fill rate | Units fulfilled by the promised date / Requested units due | How much requested demand received timely stock |
| Inventory cover | Average available inventory / Average daily demand | Stock carried relative to the demand rate |
These are explicit working definitions. A company using order fill rate, first-shipment fill rate or closing inventory cover needs a different label and denominator. Do not combine those definitions in a trend.
For forecast evaluation, use periods that were unknown when the forecast was issued. Hyndman and Athanasopoulos explain why test-set forecast errors differ from fitted residuals: a good fit to history does not establish performance on new demand.
Bring a frozen forecast with product, site, forecast month, forecast issue date and forecast units. Join it to customer demand by requested delivery period, fulfillment by promised date, and daily available-stock snapshots.
Here, actual demand means accepted customer requests due during the month, net of cancellations made before the agreed cutoff. It is not shipments. Unfilled requests still belong in demand; otherwise a stockout makes both forecast error and service look better.
Use order-line identifiers to prevent split shipments from duplicating demand. Aggregate shipments to the order line before joining them to requested quantities. Separate backorders carried from earlier periods so the service numerator and denominator describe the same cohort.
Calculate average inventory from daily snapshots covering the full month. Keep unavailable or quarantined inventory outside available stock, and state whether stock allocated to open orders remains in the measure. The broader KPI examples help distinguish team measures from company outcomes; this scorecard keeps the demand planner's review focused.
A US distributor sells four comparable carton products from one site. September has 30 days. The forecast was frozen before September, requested units include unfilled demand, and the inventory column is the average of the month's daily available-stock balances.
| Product | Forecast units | Actual requested units | Forecast minus actual | Absolute error units | On-time fulfilled units | Average stock units |
|---|---|---|---|---|---|---|
| A | 100 | 120 | -20 | 20 | 114 | 60 |
| B | 200 | 180 | 20 | 20 | 180 | 90 |
| C | 50 | 40 | 10 | 10 | 36 | 30 |
| D | 150 | 160 | -10 | 10 | 152 | 80 |
| Total | 500 | 500 | 0 | 60 | 482 | 260 |
All calculations use unrounded inputs. Display percentages and days to one decimal place.
WAPE = 60 / 500 = 12.0%
Bias = (500 - 500) / 500 = 0.0%
On-time unit fill rate = 482 / 500 = 96.4%
Inventory cover = 260 / (500 / 30) = 15.6 days
The total forecast is exactly right, yet absolute misses total 60 units. Product A is underforecast, product B is overforecast, and those errors cancel. Zero bias therefore gives no assurance that the assortment is planned well.
The service result adds a second perspective. Requested units exceed on-time fulfillment by 500 - 482 = 18 units. Some of that gap may come from forecast misses, but supplier delays, allocation decisions or fulfillment execution may also explain it. The scorecard starts the investigation; it does not establish the cause.
The signed-error identity is the first check: the sum of row errors must equal total forecast minus total actual demand. Here, -20 + 20 + 10 - 10 = 0, matching 500 - 500.
Absolute error must be calculated before aggregation. Taking the absolute value of the total error would produce zero and erase every product-level miss. Likewise, compute company fill rate from summed fulfilled and requested units, rather than averaging product percentages.
The stock calculation also needs context. Product C carries 30 / (40 / 30) = 22.5 days of cover, while each other product carries 15.0 days. Its on-time unit fill rate is 36 / 40 = 90.0%. Relatively high average stock alongside weak service suggests checking timing, availability restrictions or where stock sat during the month.
The pooled cover figure is useful here because the products use comparable carton units. Across unrelated units, report cover by product or use a consistently cost-valued inventory measure with a matching cost denominator. Never divide inventory dollars by demand units.
The demand planner owns the frozen forecast, assumptions and explanation of repeated error. Customer service validates requested demand and cancellations. Operations owns shipment timing and stock availability, procurement explains supply constraints, and finance agrees how inventory outcomes connect to working capital.
Assign an action only after separating these causes. Product C might need a better forecast, but extra purchases will not fix stock that was unavailable for release. Use the existing SKU and site bias diagnostic to find persistent directional errors without expanding this scorecard into a separate forecasting method.
Keep the decision horizon stable. A forecast made shortly before delivery has information that an earlier purchasing forecast did not have. For a more demanding evaluation, rolling-origin testing repeatedly uses only earlier observations to assess later outcomes, including the relevant multi-period horizon.
Bring your frozen forecast, customer demand, fulfillment export and inventory snapshots. Covirage maps the columns; its tools compute and check the figures, while the external AI model explains the results with every figure traced to its rows. Create a free Covirage account, which takes about a minute, then set up your business and bring a sample of your own data.
See Covirage for supply chain teams for the supporting business context.
Start with absolute forecast error, signed bias, on-time unit fill rate and inventory cover. Together they show whether the plan was close, which direction it missed, whether customers received stock and how much inventory supported the service result.
Zero bias means signed misses cancel at the level being measured. Large shortages on some products can offset large overforecasts on others. Read bias beside absolute error and inspect product-location results before calling the plan balanced.
Include inventory and service in the shared scorecard because they show business outcomes. Separate accountability for forecast assumptions, supplier delivery, stock policy and warehouse execution, so a planner is not assigned every consequence of an operational constraint.
Review exceptions at the operating cadence used for replenishment, and close the scorecard when a complete period of actual demand is available. Keep the forecast horizon consistent so successive reviews compare decisions made with similar information.