Selling produce against a harvest: seasonal ordering in WooCommerce
A farm does not sell stock - it sells a forecast. Next week's tomatoes exist on a calendar, not a shelf. Selling produce on WooCommerce means ordering against planned availability, not warehouse counts.
The produce ordering problem
Standard e-commerce assumes inventory: you have N units, sell until N=0. Produce inverts it: the quantity is "whatever week 32 yields", the deadline is the harvest date, and overbooking means refunds instead of backorders.
What the shop actually needs:
- Harvest windows - "strawberries: June 10-24" - a selling window tied to a season, not a stock count.
- Per-week quantities - this week's realistic yield, not a total across the season.
- Preorders/reservations - customers order for a future harvest date; you see demand per window.
- Honest availability dates - the product page shows when it will be ready, not just "in stock".
The ordering flow that works
- Define harvest windows per product - date ranges with expected availability.
- Open orders against a window; capacity decrements as reservations come in.
- When the window fills or closes, ordering for it stops - no overselling the field.
- Customer-facing: "available from June 10" on the page, the harvest date on the order.
CSA and subscription fit
Community-supported agriculture is the natural extension: a season-long subscription is a standing reservation across windows. If you do produce ordering, the CSA pattern - pay upfront, collect weekly - is often the same data with a subscription wrapper.
Mistakes to avoid
- Treating produce as regular stock - one "in stock: 500" number across a whole season oversells early and undersells late.
- No per-window capacity - "available" without "how much this week" is the refund generator.
- Hidden harvest dates - customers who know the date plan for it; vague "seasonal" text creates "where is my order" emails.
Harvest Orders implements window-based ordering: seasonal availability, per-week quantities, preorders against the harvest, and customer-facing availability dates - inside WooCommerce.