Plant nursery inventory management: living stock, death shrinkage, and seasons
Plant nursery inventory for Shopify: tracking living stock that shrinks by dying, riding seasonal waves, and structuring size and pot variants.
InventoryX is in development and not available today. ClearStock is the live Shopify app.
Plant inventory is the only retail stock that dies while you own it. Every other shrinkage source — theft, damage, miscounts — takes units away at some rate; a nursery's stock loses value by the week as a process, not an event, and the shrinkage is permanent, unreturnable, and invisible until counted. On top of that, demand arrives in seasonal waves with hard front edges (tomatoes in May, nobody in February), and the catalog structure (species × pot size × variety) multiplies faster than almost any other vertical. The practice that anchors all of it is the weekly cull walk — because death is your largest shrinkage source, and an unmeasured cull rate is the error everything else compounds on. Start with the worksheet.
The cull walk worksheet: fill it in weekly
One row per section, every week, twenty minutes:
| Input | Where it comes from | What it tells you |
|---|---|---|
| Section | Your bench rotation (one section per weekday) | The unit of measurement — never the whole nursery |
| Units culled | Dead/dying stock pulled during the walk | This week's biological shrinkage, recorded at the moment it's visible |
| Units on hand | System count or quick tally for the section | The denominator — without it, "6 culled" means nothing |
| Cull rate | Culled ÷ on-hand | The number you'll actually plan with: buy sizing, rescue-bench timing, alarm thresholds |
Read the rate three ways:
- Level: a steady 8% weekly cull in a category is a fact to price into buys — a buy that lands 100 sellable units is a buy of ~109. (Treat your own rate as the input; it varies hugely by species, season, and care.)
- Trend: a suddenly rising rate in one section is an operational alarm — watering, ventilation, a bad supplier batch — but only if it's recorded when it happens instead of discovered in a quarterly count. You can't manage a rate you don't measure (shrinkage-prevention applied to biology).
- Honesty: a dead plant still on the books is phantom stock that oversells online. The walk ends with a count adjustment per section, tagged with the cull reason so the audit trail distinguishes death from theft from miscount — the first time someone steals from a nursery, you want death's fingerprint to be a known quantity.
The rest of this guide builds on that number: what the death margin does to buying, how the seasonal wave changes the reorder logic, and how to structure variants so a greenhouse's catalog stays countable.
Death is shrinkage: count it like a process, not an accident
The nursery version of shrinkage is biological: bench loss, winter kill, heat stress, disease culls. It's unavoidable at some rate — the honest goal is making the rate known and stable, not zero. The worksheet above is the recording discipline; three disciplines ride on it:
- Cull on a schedule with a recorded number. The weekly walk is the schedule; the recorded cull rate per section is the alarm bell. The worksheet above owns the numbers — what the schedule adds is the habit: same rotation every week, so a rising rate surfaces in weeks, not quarters.
- Adjust records at cull time, in the system. The walk ends with a count adjustment per section (Shopify's adjustments and count routines handle it), with the cull reason tagged so the adjustment history stays auditable — Shopify's inventory adjustment records keep the reason and actor with each change (Shopify Help Center, "Inventory adjustments," accessed October 2026).
- Price the death rate into the buy. If a category's steady cull rate is 8% over its selling window, the buy that lands 100 sellable units is a buy of ~109 — assuming cull happens roughly evenly (treat your own rate as the input; it varies hugely by species, season, and care). Buying without the death margin is how nurseries end up short of their plan in exactly their best weeks.
One nuance worth money: dead stock has a salvage channel. Discount-to-clear ("rescue bench") sections move stressed-but-alive stock at markdown faster than it can die at full price — the arithmetic is simply whether (markdown price × probability of selling while alive) beats (full price × probability of surviving to sale). Run the rescue bench as a deliberate line item, not a guilt corner.
The seasonal wave: buy against the front edge
Plant demand isn't a smooth season — it's a spike with a leading edge that's mostly weather-triggered. The seasonal inventory method (two-year comparison to find your shape) applies, with nursery-specific reads:
- The wave is category-staggered. Houseplants sell year-round-ish; annuals and vegetable starts explode April–June; bulbs sell in autumn for next spring; wreaths and dormant stock carry winter. Plan per category wave, not per store season — a single "spring buy" is really four buys with different targets.
- You cannot chase a plant wave. Propagation and grow-on take weeks to months; the mid-season reorder that saves a hardware store is botanically impossible for the May tomato rush. Nursery buying is therefore front-loaded by nature — the entire season's realistic sellable quantity is decided at propagation time, and the discipline shifts from "when to reorder" to "how much to pot," sized from last year's wave minus your death margin plus your growth assumption. This is the vertical where buying errors are nearly uncorrectable, which is why the cull-rate and sell-through records from previous seasons are your most valuable planning documents.
- End-of-wave decisions have a biological deadline. The annuals unsold in July don't get "stored for next season" — they get composted. So the markdown clock runs against survival probability, not against shelf age: when remaining stock × weeks-of-survivable-selling gets thin, the rescue bench decision (above) is forced, not optional. The end-of-wave review is where next year's buy gets corrected — record over/under by category while the evidence is still alive, literally.
The out-of-stock asymmetry is sharp in the other direction too: a customer who arrives for tomato starts and finds none doesn't delay — they drive to the garden center down the road with their whole list, since the trip was the point. The 2002 Grocery Manufacturers of America finding (31% bought elsewhere when a product was out; dated, accessed October 2026) understates nursery reality, because the cost of a dark bench in peak season isn't one plant — it's the attachment rate of everything the customer would have put in the cart around it.
Variants: species × pot size, structured once
The multiplication problem: one species in three pot sizes and four varieties is 12 SKUs; a small nursery's live stock runs to hundreds of variant SKUs with wildly uneven demand. Two structural decisions prevent chaos:
- Track inventory at the species × pot-size level; treat variety as an attribute, not always a SKU. For herbs and common annuals, customers buy "basil in a 4-inch pot" — six basil varieties as six tracked SKUs multiplies counting work for demand that's interchangeable in practice. For distinctive stock (named cultivars, trees, rare houseplants), the variety is the product and earns its own SKU. The decision rule: a variant earns separate tracking when its price, care, or demand differs — otherwise it's an attribute. (This is also the practical answer to Shopify's per-product variant ceiling — 2,048 variants per product as of October 2026, per the Help Center's variant limit documentation, accessed October 2026: split products by size class when varieties would blow past the limit, so "Basil — 4-inch" and "Basil — 6-inch" are products, each carrying its varieties.)
- Count sections, not units, most weeks. A full unit count of a nursery is a multi-day project that's obsolete before it's done. The working rhythm: weekly section-level counts on a rotation (one bench section per weekday, 20 minutes), full counts twice a year, and daily recount of whatever sold online that morning. Section rotation catches the cull-drift and the shrinkage without ever shutting down.
A note on tooling, honestly framed
Living-stock attributes — cull rates, grow-on timing, species-level death margins — are above what general inventory tools do, ours included. InventoryX (in development, no published price) covers the layer nurseries share with all retail: per-SKU days out of stock, estimated lost sales, days of cover, and a weekly buying list at the variant level — which handles the non-living half of a garden center's catalog (pots, soil, tools, fertilizer) perfectly and the live stock's demand math well. The biology stays a clipboard discipline: the cull walk and the section rotation are habits, not software.
Common questions
How do you manage inventory at a plant nursery? Track culls as recorded weekly shrinkage per section (death is your largest shrinkage source), adjust records at cull time so online counts stay honest, buy each category against its own seasonal wave sized from last year's data minus your death margin, and structure variants as species × pot size with varieties as attributes unless they earn separate SKUs. Rotate section counts weekly; full-count twice a year.
How do you track inventory shrinkage from plant death? Record units culled in a weekly walk, by section, and compute a cull rate (culled ÷ on-hand). Adjust the system records during the walk with a death-tagged reason, watch the rate by category — a rising rate signals watering, disease, or a bad supplier batch — and price the established rate into future buys so the season lands the sellable quantity you planned.
How far ahead should a nursery buy or pot inventory? Far more than retail instinct suggests, because plants can't be chased: propagation and grow-on take weeks to months, so the season's sellable quantity is effectively decided at potting time. Size each category's crop from the last two years' sales wave, add your growth assumption, and add the death margin. Mid-season, your only levers are the rescue bench and the markdown clock.
How should I structure plant variants in Shopify? Species × pot size as the tracked level; varieties as attributes when they're interchangeable in demand and price. Named cultivars, trees, and rare plants earn their own SKUs. Where varieties would exceed the per-product variant limit, split products by pot-size class — each size class becomes a product carrying its varieties.
How do I handle unsold annuals at the end of the season? Against a biological deadline, not a calendar one: when remaining stock × probable selling weeks gets thin, move it to a marked-down rescue bench, because alive-and-discounted usually nets more than full-price-and-composted. Then record the over/under by category — that end-of-wave review is the input that corrects next season's buy.
Next step
This week: start the cull walk — one recorded number per section, every week, adjusted into the system before the day ends. In parallel, pull last spring's sales by category week to map your actual wave shapes. The cull rate tells you what your stock really costs to hold; the wave map tells you what to pot next time. Both are nursery-native numbers no generic retail method assumes, and both are worth more per hour than any other counting you'll do this month.