The brief
Owl Farm came to me with a farm shop that needed to sell two very different ways: standard delivery orders through a normal online shop, and a separate weekly collection system for produce that’s only available in limited, seasonal batches. The tricky part wasn’t building a shop — it was making sure customers always knew which items were delivered and which were collection-only, without the two systems bleeding into each other at checkout.
The challenge
On paper, this looked like a job for a pre-order plugin. It wasn’t, once I dug into how the weekly availability actually worked — it needed the existing WooCommerce shop split into two behaviourally distinct sections, not a bolt-on system running alongside it. Catching that early, before installing anything, saved a lot of rework further down the line. It’s a good reminder that the right fix is sometimes fewer moving parts, not more.
What I built
- A standard Shop section for delivery orders, and a separate Pre-Order / Collection section with its own category filtering and shipping rules — both sharing one WooCommerce install and one checkout, but behaving differently depending on what’s in the basket.
- Category filtering that scales automatically: a custom snippet ensures each category page only shows its own products and excludes Pre-Order items, so new categories don’t need new code every time.
- Shipping logic split by order type, so a customer physically can’t select the wrong fulfilment method for what’s in their basket — flat-rate delivery is stripped from Pre-Order items, and local pickup is stripped from standard shop items.
- A required pickup-location dropdown at checkout, added after the default WooCommerce local-pickup setting didn’t play nicely with block-based checkout.
- Elementor Pro Theme Builder for the header, footer and archive templates, image optimisation to keep things fast, and newsletter signup wired in for future marketing.
- Hosting, domain and business email consolidated in one place, migrated over from the client’s previous Squarespace site.
Problem-solving highlights
A few of the trickier moments worth calling out:
- Empty product categories don’t show up in some plugin dropdowns until at least one product is assigned — easy to mistake for a bug if you don’t know to look for it.
- Category filters appeared to do nothing on certain pages. Turned out a “manual selection” setting was silently overriding the custom filter logic — switching it to a dynamic query fixed it.
- Restricting local pickup to shop-only items didn’t work through WooCommerce’s native settings under block-based checkout, so I rebuilt the restriction a different way, hooking directly into the shipping rates logic instead.
- A newsletter plugin kept showing a cron warning even after checking with the host — rather than assume it was harmless, I tested the actual signup flow end-to-end with a real email address to confirm it was working.
The outcome
The site launched within three weeks of the build starting. It gave Owl Farm’s large, established Facebook community an easy way to order — whether that meant picking up from the farm gates, collecting from their local market on set days, or having food delivered straight to their door. For the business, it opened up a new, instant revenue stream that hadn’t existed before.
A single WooCommerce install now cleanly supports two distinct order types with no checkout confusion, and the brief was solved without adding an unnecessary plugin into the mix.