If you deliver food, you don't deliver everywhere. The pizza that's perfect at 15 minutes is inedible at 50 — so every delivery restaurant needs a hard boundary: these postcodes yes, everything else no. Here's how to do that in WooCommerce, what the native tools get wrong for restaurants, and how CloverWoo's Delivery Zones feature handles it.
What WooCommerce shipping zones do (and don't do)
WooCommerce ships with Shipping Zones (WooCommerce → Settings → Shipping). You can create a zone, attach postcodes to it, and offer a 'Local delivery' rate only inside that zone. For simple cases this works — and it's free and built-in, so try it first.
The restaurant-shaped problems show up fast:
- Customers only discover they're outside your area at the final checkout step — after building a cart. That's an abandoned order and an annoyed customer.
- Postcode entry is exact-match unless you know the wildcard syntax, and bulk-managing hundreds of postcodes in the small settings box is painful.
- Shipping zones gate the shipping rate, not the order experience — no friendly 'we don't deliver there yet' message, no prompt to switch to pickup.
Postcode wildcards: cover an area without listing every code
Wildcards are what make postcode allow-lists manageable. CloverWoo's Delivery Zones accepts a comma-separated allow-list where * matches any run of characters and ? matches a single character:
- 90210, 90211, 90212 — exact codes
- 902* — every US ZIP starting with 902
- SW1A* — a London district and everything inside it
- M5V ?A? — Canadian codes with a specific pattern
US ZIPs, UK postcodes, and Canadian postal codes all work out of the box — the matcher is format-aware, so spacing and case differences in UK/Canadian codes don't cause false rejections.
Setting up Delivery Zones in CloverWoo (2 minutes)
- In WordPress admin, open Clover → Settings → Restaurant Features.
- Toggle on Delivery Zones (it's opt-in — off by default).
- Paste your allow-list: e.g. 902*, 90069, 90046.
- Save. Checkout now validates the delivery postcode against the list before payment.
Customers inside the zone check out normally. Customers outside it get a clear 'not in our delivery area yet' message before they pay — and if you also run pickup, they can switch the order type instead of abandoning it.
When you need more than postcode rules
Postcode allow-lists cover most restaurants. If you need true radius-based zones (circles on a map), distance-based fees, or per-zone delivery pricing, dedicated delivery plugins exist for that and can run alongside CloverWoo — CloverWoo handles the Clover sync, payments, and kitchen printing either way. For the common case of 'we deliver to these areas, full stop', the built-in feature means one less plugin to buy and maintain.
Frequently asked questions
Does WooCommerce restrict delivery by postcode natively?
Partially. WooCommerce Shipping Zones can limit a local-delivery rate to listed postcodes, which works for simple cases. What it lacks is the restaurant UX: early validation, a friendly out-of-area message, an easy wildcard allow-list, and a pickup fallback — which is what a dedicated delivery-zones feature adds.
Which postcode formats does CloverWoo's Delivery Zones support?
US ZIP codes, UK postcodes, and Canadian postal codes work out of the box, with * and ? wildcards for pattern matching. The matcher normalises case and spacing so 'sw1a 1aa' and 'SW1A1AA' both match SW1A*.
Can customers outside the zone still order pickup?
Yes. Delivery Zones only gates the delivery order type. If a customer is outside the area and your store offers pickup, they can switch to pickup at checkout and complete the order normally.
Do I need a separate delivery-area plugin if I use CloverWoo?
Not for postcode-based zones — it's included in the opt-in restaurant feature pack at no extra cost. You'd only add a specialist plugin if you need map-radius zones or per-zone delivery fees.