How to Forecast Demand for Seasonal Products
Measure seasonality per SKU, not as one curve for the catalogue. Remove growth and promotions before you calculate it, then work back from the peak through real lead times to the date each order has to be placed.
·
6 min readHow do you tell whether a product is seasonal?
A product is seasonal when the same periods run high or low in every year of its history, not just in one. Pull at least two years of sales by SKU, three if you have them, and compare each month with the year's average.
| Pattern | Typical CPG examples | What drives it |
|---|---|---|
| Holiday | Baking ingredients, gift sets, entertaining snacks | Calendar events |
| Weather | Cold beverages, sunscreen, soup, hot drinks | Temperature |
| Event | Lunchbox snacks, New Year supplements | School year, resolutions |
| Retailer-driven | Seasonal resets, holiday sets | Retail calendars, which run ahead of consumer demand |
| None | Everyday staples | Steady consumption |
If a peak shows up in one year and not the others, treat it as an event, not seasonality. One viral month or one large retail load-in does not make a pattern.
Why calculate seasonality per SKU rather than per category?
A catalogue-wide seasonal curve is the most common shortcut and the one that costs the most. A supplements brand may sell immune products mostly in winter and electrolyte products mostly in summer. Averaged into one curve, both look roughly flat, and the plan under-buys each product going into its own peak.
Calculate the index for each SKU that has enough history. Use a category curve, or the curve of an analogous product, only where a SKU is too new to have its own. Forecasting demand for new products covers choosing an analogue.
Channels can need their own curves too. Retail orders follow the retailer's calendar, so holiday sets ship to distribution centres well before consumers buy them. Amazon has event spikes that do not exist in other channels. Wholesale demand is smoothed by distributors buying to their own stock targets.
How do you calculate a seasonal index?
The method below is classical multiplicative decomposition, the standard textbook approach.
- Remove the trend. Estimate the underlying trend, for example with a 12-month moving average, and divide each month's sales by it. Skipping this step on a growing product makes every later month look seasonally high.
- Average each month across years. Average the detrended value for every January, every February, and so on.
- Normalise. Scale the monthly indices so they average to one across the year.
- Check the result. Indices that swing widely from one year to the next are noise, not seasonality, and should not be applied.
For example, if a SKU's detrended December averages 1.8 and its July averages 0.55, December typically sells 1.8 times an average month and July just over half. A baseline of 1,200 units a month then forecasts December at 1,200 × 1.8 = 2,160 units and July at 1,200 × 0.55 = 660 units.
Where the simple method breaks
Classical decomposition assumes the seasonal pattern repeats from year to year, and it is not robust to unusual periods. When a pattern is shifting, for example as a brand adds a summer product line, weight recent years more heavily or use a model that lets seasonality change over time. Exponential smoothing (ETS), SARIMA and Prophet all do this.
How do you keep promotions out of a seasonal forecast?
Promotions and seasonality are different causes and need to be kept apart. Seasonality recurs because of the calendar. A promotion happens because someone decided to run it, and it may not run again in the same month next year.
Clean the history first
Before calculating seasonal indices, flag and exclude or adjust these periods:
- Promotions and price reductions, including retailer-funded events
- Stockouts, where recorded sales understate demand
- One-off loads, such as a retailer's initial pipeline fill
- Disruptions, such as a supplier failure or a warehouse move
Forecasting tools handle this explicitly. Prophet, for instance, models holidays and special events separately from seasonality, and leaves out of the forecast any event that will not repeat.
Add planned promotions back as a lift
Forecast = baseline × seasonal index × (1 + planned promotion lift)
For example, a November baseline of 1,200 units with an index of 1.4 and a planned promotion lift of 0.5 gives 1,200 × 1.4 × 1.5 = 2,520 units. If the promotion is cancelled, the lift goes to zero and the forecast drops back to 1,680 without anyone re-calculating the seasonal pattern. Adjusting a forecast for promotions covers estimating the lift itself.
How far ahead do you order for a seasonal peak?
A seasonal forecast is only useful if it reaches the purchase order in time. Work backward from the date stock has to be available:
| Step | Question |
|---|---|
| 1. On-shelf or ship date | When must stock be at the retailer, distribution centre or your warehouse? |
| 2. Outbound transit | How long from your warehouse to the customer? |
| 3. Receiving and quality hold | How long before received stock can ship? |
| 4. Supplier or co-manufacturer lead time | How long from order to dispatch, at peak, not on average? |
| 5. Order-by date | Step 1 minus steps 2 to 4 |
For example, if a retailer needs holiday stock by early October and the co-manufacturer quotes eight weeks plus two weeks of freight and receiving, the order goes in by late July, before most of the season's sell-through data exists. That is why the seasonal index has to be right before the season starts.
Two checks before committing:
- Confirm capacity, not just lead time. Suppliers and co-manufacturers serve other brands with the same peak. Book capacity early and ask what the lead time will be in the busy months.
- Plan the ramp-down. Reduce orders as the peak approaches so the season ends with stock you can sell, not post-season excess. What is lead time covers measuring actual rather than quoted lead times.
If you make the product rather than buy it, the build has to start even earlier. Production planning for seasonal peaks covers building inventory ahead of a peak against limited capacity.
Common mistakes
- Using one seasonal curve for the whole catalogue.
- Calculating indices on raw sales from a growing product, which mistakes growth for seasonality.
- Leaving promotions in the history, so last year's promotion becomes this year's forecast.
- Treating a stockout month as low demand.
- Applying the seasonal forecast to demand but not to safety stock. Variability is usually higher in peak months, so the buffer needs to be sized for the peak.
How Planster forecasts seasonal demand
Planster fits a statistical model to each SKU's own history, choosing between Prophet, ETS, SARIMA and linear regression, and re-evaluates the choice as the pattern changes. Seasonality is detected per SKU and built into the forecast, and stockout periods and other anomalies can be excluded so they do not distort the fit. Planster alerts you ahead of a seasonal peak, allowing for lead times.
Promotions are planned as scenarios layered on top of the base forecast, so any forecast number can be traced back to the baseline and the lift applied to it. Purchase orders are drafted for your team to review and approve. See demand forecasting for how the model is chosen.
Sources
- Classical multiplicative decomposition: detrend by dividing by the trend-cycle, average the detrended values for each season, and adjust the indices so they add to m; the method assumes the seasonal component repeats from year to year and is not robust to unusual values — https://otexts.com/fpp3/classical-decomposition.html (accessed 2026-10-02)
- Prophet models holidays and special events separately from seasonality; if they won't repeat in the future, Prophet will model them and then not include them in the forecast — https://facebook.github.io/prophet/docs/seasonality,_holiday_effects,_and_regressors.html (accessed 2026-10-02)