Demand Planning & Forecast Accuracy

Demand forecasting that matches the right model to each SKU's demand pattern. Seasonal decomposition, intermittent demand handling, outlier detection, and returns-adjusted forecasting for Shopify and Amazon sellers.

One Formula Cannot Forecast Every SKU

Most inventory tools apply the same calculation to your entire catalog. A weighted moving average, a simple trend line, or a single exponential smoothing pass across every product you sell.

That works for about a third of your SKUs. The steady sellers. The ones that move 10-20 units a day with low variance. For everything else, it breaks down.

A holiday product that spikes 5x in November needs a model that understands seasonality. A specialty part that sells three times a month needs a model designed for intermittent demand. A trending product with unpredictable swings needs something that reacts without overreacting.

I have watched sellers trust a single-formula tool, over-order seasonal products by 40% after the peak (because the model was still reacting to last month's spike), and simultaneously stock out on their steady sellers because the same model treated a random slow week as a trend shift.

Different demand patterns need different models. That is the starting point.

Pattern Detection and Model Routing

When you connect your store, ReplenishRadar analyzes each SKU's sales history and classifies its demand pattern:

Pattern What it looks like Forecasting approach
Steady Consistent daily sales, low variance Exponential smoothing (ETS). Adapts to recent trends without overreacting to noise
Seasonal Repeating time-based patterns (annual, monthly) STL decomposition. Separates trend, seasonality, and residual
Intermittent Long gaps between sales, then bursts Methods designed for sparse, lumpy data. Separates frequency from quantity
Variable Unpredictable swings, no clear cycle Adaptive models that react to shifts without chasing noise

You do not configure this. The classification runs automatically, and the system re-evaluates as more sales data accumulates. A new product starts with velocity-based predictions. As history builds, it graduates to the model that fits its actual demand pattern.

How Seasonal Decomposition Works

For SKUs with seasonal patterns, we use STL decomposition to break 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.

The key: STL decomposition is powerful for seasonal products, but applying it to a SKU that sells twice a month produces noise, not signal. That is why the system only routes seasonal SKUs through this model. Everything else gets the approach that actually fits.

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 10 years of order history from Shopify and up to 2 years from Amazon (the SP-API maximum). History is backfilled in yearly chunks that survive restarts. You connect your store and the full archive lands in the background. With multiple years of data, the seasonal model can separate a one-time spike from a genuine annual pattern, and same-period-last-year comparisons get dramatically more reliable.

Outlier Detection

A flash sale that 10x's your volume for a weekend is not a demand signal. It is an event. If your forecasting model treats it as real demand, your next reorder suggestion will be wildly inflated.

ReplenishRadar detects outlier events (flash sales, viral spikes, one-time promotions) and excludes them from the baseline forecast. The spike still shows in your sales history. It just does not corrupt the model that decides how much to order next month.

This matters most for seasonal products where one bad data point can throw off the entire decomposition. A Black Friday flash sale layered on top of a genuine seasonal ramp will inflate the seasonal component if you do not strip it out first.

Out-of-Stock Adjusted Demand

Here is a problem most tools ignore entirely: if you were out of stock for two weeks last month, your sales history shows zero for those days. A basic model reads that as "demand dropped." It did not. You just could not sell anything.

ReplenishRadar identifies stockout periods and excludes them from velocity calculations. The forecast reflects what you would have sold if you had inventory, not what you actually sold while shelves were empty.

This matters more than most sellers realize. A SKU that was out of stock for 10 days out of 30 has a demand history that understates true velocity by a third. Plan against that understated number and you will stock out again. And again. The cycle reinforces itself until someone catches it manually.

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.

Confidence Indicators

Not all forecasts are equally reliable. A SKU with 12 months of steady sales history produces a tight prediction. A SKU launched three weeks ago with erratic early sales does not.

Every SKU in ReplenishRadar shows a confidence level (high, medium, or low) based on how well the model has been tracking actual demand. High confidence means the model's recent predictions have been close to reality. Low confidence means you should apply more judgment before placing that order.

This is the difference between a tool that gives you a number and one that tells you how much to trust the number.

Three Ordering Strategies

For each reorder suggestion, you see three options with cost comparison:

  • Bridge. Order just enough to cover until your next scheduled order window. Lowest spend, shortest coverage. Good when cash is tight or you are testing a new product.
  • Full Cycle. Standard replenishment covering your full lead time plus safety stock. The balanced default for most situations.
  • Skip Ahead. Order aggressively to lock in pricing, prepare for a seasonal ramp, or reduce order frequency. Highest spend, longest coverage. Makes sense when you know a spike is coming or your supplier offers volume breaks.

You pick the strategy that fits your cash flow and business situation. Most tools give you one number. You get three with the math behind each.

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%.

Smart Forecasting Economics

Not every SKU deserves the same forecasting resources. Your top 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
  • Demand forecasting with pattern detection
  • Reorder alerts and PO drafts
  • Real-time inventory updates

Growth : $199/mo

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

Scale : $499/mo

  • 10 connected stores
  • Up to 50,000 SKUs
  • Profitability-ranked ordering + frequency tiering
  • Owner Pulse AI digest
  • Real-time inventory updates
  • Priority support

Enterprise : Custom pricing

  • Unlimited stores and SKUs
  • Custom forecast models
  • Real-time inventory updates
  • 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, no commitment.
Get Your Free Report
14-day free trialCancel anytimeSupport responds within 24 hours

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