Demand Planning & Forecast Accuracy

Demand forecasting that accounts for returns, seasonality, and vendor reliability. Built for e-commerce operations teams on Shopify and Amazon.

Your Forecast Is Probably Wrong. Here Is Why.

Most inventory forecasting tools take your sales history, draw a line, and call it a prediction. That works until it does not. And it stops working the moment any of these are true:

  • Your return rate is above 10%
  • You have seasonal products
  • Your suppliers do not ship on time
  • You sell on more than one channel

I have watched sellers over-order by 25% for months because their "forecast" was based on gross sales, not net. Returns were invisible. The tool said demand was 400 units per month. Actual sellable demand was 310. That gap compounds.

What a Real Forecasting Engine Needs

A sales trend line is not a forecast. A forecast accounts for the things that make demand unpredictable. Here is what actually matters, ranked by how much damage each one causes when you ignore it.

Returns-Adjusted Demand

If you sell apparel, electronics, or anything on Amazon, your return rate is not zero. A 25% return rate means a quarter of your "sales" come back. Forecasting on gross sales is like planning your budget based on revenue before refunds.

ReplenishRadar subtracts returns before running the forecast. Net demand, not gross. The difference on a SKU doing 1,000 units per month with a 22% return rate is 220 units. At $18 per unit, that is $3,960 per month in inventory you did not need to buy.

Seasonal Decomposition

"Sales went up in November" is not seasonality. Seasonality is a repeatable pattern you can quantify and project forward. We use STL decomposition to break your sales history into three components:

Component What it captures Why it matters
Trend Long-term direction (growing, flat, declining) Tells you if demand is shifting permanently
Seasonality Repeating patterns (weekly, monthly, yearly) Prevents you from over-reacting to predictable spikes
Residual Noise, one-off events, unexplained variance Shows you what the model cannot explain

This is not a black box. You can see the decomposition. If the model thinks December will spike 3x, you can verify that against last year's actual numbers. Same-period-last-year comparison flags show when this year's pattern diverges from the historical one, so you catch it early instead of discovering the mismatch in January.

365 Days of Sales History

Ninety days of data cannot detect annual seasonality. Full stop. If your product spikes every October and your forecasting tool only looks back 90 days, it will never see that pattern.

We pull up to 365 days of paginated sales history. That gives the seasonal model a full year to work with. The difference between a 90-day window and a 365-day window is the difference between guessing and knowing.

Vendor Reliability in Safety Stock

Your supplier says 14 days. Reality is 14 to 28 days depending on the month. Standard safety stock formulas assume lead time is a fixed number. It is not.

ReplenishRadar tracks actual delivery times from your PO history and calculates lead time variance per supplier. That variance feeds directly into the safety stock formula as lead_time_sigma. A reliable supplier with tight delivery windows gets a smaller buffer. An unreliable one gets a larger buffer. The math adjusts automatically as performance changes.

On-time delivery percentage also weights into the safety stock multiplier. A vendor running 60% on-time gets treated differently than one running 95%.

How the Forecasting Pipeline Works

Good forecasts require good data, and good data requires the right sequence of operations. You cannot run a forecast on stale inventory numbers, and you cannot fire alerts based on a stale forecast.

ReplenishRadar runs a dependency chain: sync first, then forecast, then alerts. If the sync fails, the forecast does not run on old data. If the forecast does not complete, alerts do not fire on outdated predictions. This sounds obvious. Most tools do not do it.

We also suppress alerts when underlying data goes stale. If the last sync is significantly overdue for your tier's interval, the system shows a degraded-data banner instead of firing alerts based on numbers it cannot trust. False alerts are worse than no alerts.

Smart Forecasting Economics

Not every SKU deserves the same forecasting resources. Your top 200 SKUs that account for 80% of revenue get daily forecast updates. The long tail, products selling a few units per week, gets weekly updates. This is not a limitation. Running daily statistical decomposition on a SKU that sells twice a month is noise, not signal.

SKU category Forecast frequency Why
Active (consistent sales) Daily Revenue impact justifies the compute
Long-tail (sparse sales) Weekly More data between runs reduces noise
New (less than 30 days) Daily velocity only Not enough history for decomposition

Measuring What Matters

A forecast you cannot evaluate is a guess with a spreadsheet. ReplenishRadar's Analytics tab gives you the numbers to know whether your predictions are actually working.

WMAPE (Weighted Mean Absolute Percentage Error) tells you the overall accuracy across your catalog, weighted by volume so your best-sellers matter more than your slow-movers. A WMAPE under 25% is solid for most e-commerce catalogs. Under 15% and your planning team can trust the numbers for purchase orders without second-guessing.

Bias analysis shows if your forecast consistently over-predicts or under-predicts. A model that is 20% accurate but always over-predicting has a different fix than one that is 20% accurate with random errors. Direction matters as much as magnitude.

Worst misses table ranks the SKUs where the forecast was furthest from reality. These are the ones worth investigating. Maybe a product went viral. Maybe a supplier issue caused stockouts that depressed "demand." The table surfaces the problems. You decide the fix.

We wrote a full guide on how to measure forecast accuracy if you want to dig into the methodology.

Demand Trends at a Glance

The Demand Trends chart gives you a visual read on what is happening across your catalog right now. Toggle between 7, 14, 30, 60, or 90-day windows. Switch between revenue and units. When you are trying to answer "are we trending up or down this month?" the answer should take three seconds, not a pivot table.

Pricing

Standard: $99/mo

  • 2 connected stores (Shopify, Amazon, or both)
  • Up to 2,000 SKUs
  • Daily velocity forecasting
  • Reorder alerts and PO drafts
  • 30-minute sync interval

Growth : $199/mo

  • 5 connected stores
  • Up to 20,000 SKUs
  • Seasonal decomposition and returns-adjusted forecasting
  • Vendor lead time tracking and reliability scoring
  • Forecast accuracy dashboard (WMAPE, bias, worst misses)
  • 15-minute sync interval

Scale : $499/mo

  • 10 connected stores
  • Up to 50,000 SKUs
  • Smart frequency tiering (active daily, long-tail weekly)
  • Owner Pulse AI digest
  • 5-minute sync interval
  • Priority support

Enterprise : Custom pricing

  • Unlimited stores and SKUs
  • Custom model configuration
  • 2-minute sync interval
  • Dedicated onboarding

All plans include a 14-day free trial. Start your trial


Related Reading:

Common Questions

See what your inventory is really doing

Connect your store and get a free Inventory Health Report. No credit card needed for your free report.
Get Your Free Report
No credit card for free reportCancel anytimeSupport responds within 24 hours

Doing $5M+ in revenue? Talk to our team