Start with last year's same period
Pull sales by item for the same weeks last year, not the immediately preceding weeks. A holiday or summer season looks nothing like the month before it, so the comparable period from last year is the more useful baseline.
Adjust for growth and known changes
If overall sales have grown since last season, or a specific item has been added or discontinued, adjust the baseline rather than ordering last year's exact quantities blind.
- Apply your current year-over-year growth rate
- Remove discontinued items from the plan
- Add new items using a comparable item's history
- Note any one-off events that skewed last year's numbers
Order in stages, not all at once
Placing the full seasonal order at once risks overbuying if the season runs different than expected. An initial order plus a planned reorder point, based on early sell-through, reduces that risk.
Track sell-through weekly during the season
Comparing actual sell-through against the plan each week during the season tells you early whether to reorder more or start marking down slow stock before it becomes deep leftover inventory.
Plan the markdown, not just the buy
Decide the markdown schedule for leftover seasonal stock before the season starts. Waiting until after the season to decide leads to steeper, more reactive discounts than a planned schedule would.
Watch for early or late seasons
Weather-driven and holiday-adjacent seasons can shift earlier or later than the calendar date suggests. Comparing this year's early sales pace against last year's, rather than assuming the calendar dates line up exactly, catches this early.
Post-season review
After the season ends, record what sold out, what was left over, and by how much. That record becomes next year's more accurate starting point, and the practice compounds in value every year it's kept up.
Coordinating with staffing
Seasonal inventory planning and seasonal staffing should be built from the same sales-by-period data, since a big seasonal order without the labor to move it through the register creates its own bottleneck.
