Year two: reordering a seasonal product with one season of history
Turn one season of sales into a year-two reorder plan: correct for dark days, read sell-through, apply growth, size the POs — arithmetic shown throughout.
InventoryX is in development and not available today. ClearStock is the live Shopify app.
Last April's end-of-season count told the whole story in three numbers: 1,310 packets sold, 190 left over, and nine days mid-month when the shelf sat empty. That one season holds most of what you need to plan year two — the shape of demand, the size of the miss, and the evidence for how much bigger to buy. The method: rebuild last year's weekly shape, correct it for the days you were out of stock, check it against sell-through, then scale with this year's growth. Worked below on one SKU, arithmetic visible. (Buying the same product with zero history is a different problem — the zero-history forecasting guide covers it; this piece starts at one full season.)
What one season of history can and can't tell you
One season is one sample (yours, complete, the right product) with hard limits:
| One season can tell you | One season can't tell you |
|---|---|
| The shape: when demand ramps, peaks, and dies | Whether last year was typical — weather, a viral mention, a competitor's gaps |
| Total demand size, once dark days are added back | Year-over-year trend — one data point has no slope |
| Where the buy failed: peak coverage versus tail leftovers | Demand that existed before your stock landed |
| Sell-through: whether the total buy was roughly right | Whether customers who substituted elsewhere would return |
The trap runs both ways: repeat year one's buy and you repeat its misses; double it on optimism and you finance a bigger leftover pile. The method below treats last year as a shape with a magnitude, then adjusts the magnitude once.
Clean last year's numbers before you trust them
The worked case, used for the rest of this piece (all figures illustrative):
- The SKU. SEED-TOM-01, an heirloom tomato seed packet at $3.99, one of several varieties.
- Year-one buy. 1,500 packets, ordered January 8, 2026, sellable February 22.
- The season. February 22 through June 13. Sold 1,310; 190 packets aged past the planting window.
- The gap. Out of stock April 13–21, nine calendar days, on the steepest part of the ramp.
Seed demand concentrates in spring because sowing windows do: planting calendars like the Old Farmer's Almanac's publish frost-date-driven sowing ranges, and gardeners buy ahead of theirs (Old Farmer's Almanac, accessed November 2026).
Three cleaning rules. First, pull units by day and bucket by week (daily granularity lets you date the gap precisely — Shopify Help Center, accessed November 2026). Second, treat the zeros recorded while the SKU was unavailable as missing, not demand. Third, check for promos: week five (March 22–28) carried a mild 15% email promotion, so we left it in; if your promo weeks bulge, strip them back to baseline first; the method lives in finding baseline demand when promos distort your history.
Correct for the days the shelf was empty
The nine dark days are the dataset's biggest distortion, and they're correctable:
Week 7 (April 5–11) sold 130 units in a full week of availability ≈ 18.6/day, and the rate was still climbing toward the peak. 9 dark days × ~18.6 ≈ 168 — call it 170 (estimated).
Allocate it where it happened: April 13–18 adds ~112 to week 8; April 19–21 adds ~58 to week 9: 3 × 18.6 = 55.8 flat, nudged to 58 because those three days sit on the steepest part of the ramp. Corrected weeks: 188 and 156. True demand: 1,310 + 170 ≈ 1,480 packets, about $680 estimated retail that never had a chance to sell.
Most of that demand is simply gone: in the 2002 study commissioned by the Grocery Manufacturers of America (Coca-Cola Retailing Research Council, accessed November 2026), of shoppers who hit an empty shelf, 31% bought elsewhere, 26% bought the brand elsewhere, 19% substituted, 15% delayed, 9% bought nothing. For a seasonal product with a closing window (nobody plants tomatoes in August), the "delay" bucket is mostly gone too. Treat the correction as permanently lost demand; that is why it belongs in the year-two forecast.
Two caveats: the pre-gap rate may understate a ramping peak, and demand missed before the season started (see the judgment section) isn't in this dataset at all. Both push the same direction: correct upward, then stop.
What sell-through tells you (and what it doesn't)
Sell-through is units sold ÷ units available: 1,310 ÷ 1,500 = 87%. Alone, it grades the total buy. Paired with the availability record, it grades the timing: where this buy actually failed:
- High sell-through with dark days mid-season. You underbought the peak: the ~170 missed units are the receipt.
- Low sell-through with clean availability. Overbought: the sales number is your demand; don't stack a growth multiplier on top without evidence.
- High sell-through with no gaps at all. Ambiguous: perfect buy or untested demand. One season can't tell you which; size year two so it can.
This case: 87% says the total was nearly right (1,480 estimated demand against 1,500 bought), yet ~170 units of demand hit an empty shelf in April while 190 packets (about $760 of retail value, illustrative) sat through the June fade. Right total, wrong shape. Year two fixes the shape, not just the total.
Combine last year's shape with this year's growth
With the corrections in, each week's share of season demand comes free: week 7 is 130 ÷ 1,480 ≈ 8.8% of the season, week 8 is 188 ÷ 1,480 ≈ 12.7%, and so on. Turning weekly history into shares of a season total is what building a seasonal index from your own sales history formalizes; here it builds itself out of the correction table.
The magnitude needs one judgment: a growth multiplier. Ours is 1.25x, with the reasoning written next to it, because a multiplier without reasons is a wish:
- List growth. The email list went from 3,900 to 5,100 over the year.
- Line extension. Three new tomato varieties launch under the same brand — some halo, some risk they split demand instead of adding to it.
- No price change, so year-over-year units are comparable.
1,480 × 1.25 ≈ 1,850 packets for year two. The full season table, corrected and scaled (rounded to whole packets):
| Week | Sold | Dark-day est. | Corrected | Year two (×1.25) |
|---|---|---|---|---|
| W1 | 44 | — | 44 | 55 |
| W2 | 68 | — | 68 | 85 |
| W3 | 82 | — | 82 | 103 |
| W4 | 95 | — | 95 | 119 |
| W5 | 108 | — | 108 | 135 |
| W6 | 120 | — | 120 | 150 |
| W7 | 130 | — | 130 | 163 |
| W8 | 76 | +112 | 188 | 235 |
| W9 | 98 | +58 | 156 | 195 |
| W10 | 114 | — | 114 | 143 |
| W11 | 100 | — | 100 | 125 |
| W12 | 86 | — | 86 | 108 |
| W13 | 70 | — | 70 | 88 |
| W14 | 56 | — | 56 | 70 |
| W15 | 40 | — | 40 | 50 |
| W16 | 23 | — | 23 | 29 |
| Total | 1,310 | +170 | 1,480 | ≈1,850 |
One rule: the multiplier applies to corrected demand, never raw sales; multiplying a figure that still contains nine days of recorded zeros just scales your blind spots.
The year-two buy plan, worked end to end
Year two starts with an asset year one lacked: 190 packets of carryover, still sellable (tomato seed keeps for years stored cool and dry, per Iowa State University Extension, accessed November 2026); off-season storage and rotation is covered in the seasonal inventory management guide. Carryover is opening stock in the buy math:
Net new need = 1,850 forecast − 190 carryover = 1,660 packets.
The supplier's lead time, measured off the year-one PO (January 8 order to February 22 sellable): 45 days. Two POs, so stock arrives before the ramp rather than in one bulk drop:
- PO #1: 1,300 units, ordered mid-January, lands ~February 22. Opening 190 covers weeks 1–2 (140 packets) and half of week 3; without it, the shelf runs dry around March 11. With it, stock runs 1,490 deep, covering forecast demand through about May 8 (cumulative forecast reaches 1,383 by end of week 10).
- PO #2: ordered by ~March 22, lands ~May 6, days before stock would run dry. Late-March timing means it's placed with four weeks of year-two actuals in hand: remaining forecast is 1,853 − 1,490 = 363; we order 450 for a ~90-packet tail buffer.
- The ledger. Total buys 1,300 + 450 = 1,750, plus 190 carryover = 1,940 available against ≈1,850 forecast demand — ~90 packets expected left at season end (illustrative), cheap insurance against a dark peak week.
Two disciplines: a Monday check of on-hand plus on-order against the cumulative forecast (if the gap at any PO's arrival date goes negative, order that week), and no resizing PO #1 mid-flight: the correction valve is PO #2.
Where judgment still beats the spreadsheet
The table is a starting estimate, and four things bend it:
- Weather. A cold, wet spring shifts sowing — and buying — weeks right. You can't forecast it; three weeks of year-two actuals will show the shape sliding before the peak.
- The censored start. Last year's season began February 22 because stock landed then, not because demand began then; January's indoor sowers had nothing to buy. With carryover on hand you can list earlier this year; treat those early weeks as upside outside the table, and one more reason 1.25 is a floor, not a stretch.
- Competitor moves. If last year ran hot because the big seed brand was out of stock itself, year two gives that demand back; if a competitor left the category, it doesn't.
- Line cannibalization. The three new varieties may split SEED-TOM-01's demand instead of adding to it. Watch the family's combined weekly units, not the hero SKU alone.
The habit that separates operators from optimists: the multiplier's reasoning lives in the spreadsheet, where the March resize can check it against evidence.
Where tooling helps and where it stops
One note on software. InventoryX is intended to count the days each SKU sat unavailable and estimates what they cost — the same correction as above, per SKU — and its Monday Buying List turns a demand estimate into days of cover, suggested quantities, and order-by dates. V1 does no seasonal index math; the table stays your spreadsheet's job, and POs stay draft-only until you approve them.
Common questions
Can you forecast a seasonal product from one year of sales data? Yes, with corrections. Rebuild the weekly shape, add estimated demand lost during out-of-stock days, read sell-through for bias, then scale by a written-down growth multiplier. With no trend data, treat the output as a range to sanity-check mid-season, not a promise.
How do I adjust last year's sales for the days I was out of stock? Take the daily selling rate from the week before each gap, multiply by the days the SKU was unavailable, and add the estimate to those weeks. Raw totals understate demand, and with a closing seasonal window most missed demand is lost, not deferred.
How much should I reorder in year two of a seasonal product? Corrected year-one demand, times a reasoned growth multiplier, minus usable carryover — split into POs so the first lands before the ramp and a later one covers the peak. Worked example: 1,480 corrected × 1.25 ≈ 1,850, minus 190 carryover ≈ 1,660 net new (illustrative).
Should last year's leftover stock count against this year's order? Yes, if it's still sellable — subtract carryover from the new forecast before you size the buy, and check the product's shelf life first. If leftovers were large, also tighten the tail weeks of your forecast rather than carrying the same excess into another off-season.
What does a high sell-through rate on a seasonal product actually mean? It depends on the availability record, and the pairing table in the sell-through section above reads the two signals together: dark days mean an underbought peak, clean availability means a right-sized or untested buy.
Next step
Which SKU ran dark at its peak last season? Pull that SKU's daily sales for last spring and build the four-column table this afternoon — sold, dark-day estimate, corrected, growth-scaled — then put both PO dates on your calendar, the spring one marked "resize with actuals." The share-of-season math scales to your whole seasonal line using the seasonal index worksheet.