
Postcode Delivery Zones for WooCommerce — delivery zones by postcode, minimum order and delivery windows
Delivery zones by postcode: "Do we deliver to you?" on the product page, a minimum order per zone and delivery windows with a per-slot limit. WooCommerce classic and block checkout.
- Compatibility
- WordPress 6.2+ · WooCommerce 8.0+ (tested on WP 7.1 / Woo 11.1) · PHP 7.4+
- Licence
- one site, annual
- Trial
- 7 days, no card, one per site
What Free has,
and what Pro adds
The free version works with no time limit. Pro adds the rest of the features in the table.

The trial starts when you ask
A fresh install is the free version, nothing switches on by itself. The “Try Pro for 7 days” button → e-mail → the key right in the window and by e-mail.

One key — one site
Moving the store? Unbind the licence on the old domain and activate it on the new one yourself. If our server is unreachable, Pro keeps working for 14 more days. For studios — keys for 5 or 25 sites, or unlimited.
Technical requirements
WooCommerce 8.0+ with the classic or block checkout, HPOS compatible. Delivery windows in the block checkout need WooCommerce 8.9+ (Additional Checkout Fields API).
WordPress 6.2+ · PHP 7.4+
The shipping price is still calculated by WooCommerce shipping zones and methods — the plugin decides whether you deliver to a postcode and from what order value, not how much it costs.
Tested on WordPress 7.1 and WooCommerce 11.1: classic and block checkout, local pickup, minimum order, outside the zone, windows with a per-slot limit.
Version history
Pro: on the legacy order storage (HPOS off) a delivery window with an orders-per-slot limit counted every order in the store instead of the orders booked for that window, so such windows…
Postcode zones, the widget on the product page, in the cart and as a shortcode, a zone minimum order, blocking orders outside the zones; Pro.
Frequently bought with Postcode Delivery Zones for WooCommerce
4 modules in one order — 40% cheaper than separately


Nova Poshta Premium — a Nova Poshta module for OpenCart 2.3, 3.x and 4.x

LiqPay — Card Payments for OpenCart 2.3, 3.x and 4.x

Telegram notifications and Viber/SMS for customers for OpenCart
Full module description
Postcode Delivery Zones for WooCommerce is a plugin for stores that deliver themselves: groceries, flowers, bakeries, furniture, catering. You don’t deliver “nationwide” — you deliver to a list of postcodes, with a minimum order that depends on distance, on certain days and at certain hours. WooCommerce shipping zones can calculate a price, but they won’t tell a customer on the product page whether you deliver to them at all, and they won’t stop a €9 order going somewhere with a €40 minimum. This plugin covers exactly that.
The core version is free. Up to three zones with their own postcodes and minimum order, a “Do we deliver to you?” check on the product page and in the cart, and blocking orders to postcodes outside your zones — no license and no time limit. Pro adds unlimited zones, delivery windows with date and time, an order limit per slot and CSV import and export of postcodes.
What the customer sees
If the postcode is outside every zone, no order is created and the customer sees your text (“Sorry, we don’t deliver to 99999 yet”). You can pick a softer mode instead: the message is shown, but the order can still be placed. The minimum order always applies — a minimum you can get around isn’t a minimum. Local pickup is never blocked by a zone: customers who collect can check out with any postcode.
What the admin gets
- Zone countries — for when you deliver to several countries with the same postcode format (Austria and Switzerland both use four digits). The widget then shows a country selector.
- The minimum order is calculated from products after coupons, with or without tax (a setting). Shipping is not included: it isn’t known in the cart yet, and a minimum that “jumps” between pages confuses people.
- Shortcode
[postcode_delivery_check]— the same widget on any page: the home page, the footer, your Delivery page.
How it works, step by step
- You create a zone: “Centre”, postcodes 10115, 101*, 10200…10249, minimum €30.
- A customer enters 10115 on the product page — “Yes, we deliver. The minimum order for your area is €30”.
- They add €10 of products and go to the cart — the block suggests: “add €20 more”.
- At checkout they enter an address with that postcode. While the cart is below €30 the order won’t go through in either the classic or the block checkout — the check runs on the server and can’t be bypassed by turning JavaScript off.
- Pro: the customer picks “Tue, 22 September, 09:00–13:00”. If the slot is limited to 5 orders, the sixth customer won’t see it. A cancelled order frees its place in the slot.
- Postcode 99999 is outside the zones — the customer sees your text already on the product page, not after filling in the whole form.
Under the hood
- One check for everything. The product page widget, the cart and the checkout all ask the same function, so the widget never promises what the checkout later rejects.
- A server-side gate in both checkouts:
woocommerce_after_checkout_validationfor the classic one andwoocommerce_checkout_validate_order_before_paymentfor the block one. - Windows in the block checkout: the Store API cart response carries the slot list for the customer’s address, and the field shows only those. A foreign slot injected around the page is rejected by the server with an explanation.
- The store time zone (Settings → General), not the server’s: “order by 14:00 — delivered tomorrow” is calculated correctly.
- A Pro gate that doesn’t brick anything: when the trial ends, only Pro features stop. Zones beyond three and windows stay saved and come back as soon as Pro is on again.
Installation
- Plugins → Add New → Upload Plugin: choose
postcode-delivery-zones-for-woocommerce-1.0.1.zipand activate it. - Open WooCommerce → Postcode zones.
- Edit the sample zone: name, your postcodes, minimum order. Enable it and save.
- Open any product — “Do we deliver to you?” appears under the add-to-cart button. Check your own postcode and a foreign one.
- For Pro: paste the license key from the e-mail you get after payment, or start the 7-day trial with the button on the same page.
Questions
about the module
Didn't find the answer? Message us on Telegram and we'll reply within a business day.
Does it replace WooCommerce shipping zones?
No. WooCommerce zones calculate the shipping price. The plugin decides whether you deliver to a postcode at all and what the minimum order is there.
Does the minimum work in the block checkout?
Yes. The check runs on the server in both checkouts: while the total is below the zone minimum no order is created, and the customer sees how much is missing.
A postcode matches two zones. Which one wins?
The first enabled zone in the list. Put the narrower zone higher.
The customer chose local pickup, but the postcode is outside the zones.
The order goes through: local pickup is not blocked by a zone. This setting can be turned off.
What happens when the trial or the license ends?
The first three zones keep working with the minimum and the widget. Other zones and delivery windows are kept and come back with a license. After a paid license term ends Pro keeps working — only updates and support stop.
No reviews yet. Be the first.
No questions yet. Ask one — we answer within 24 hours.
Not quite what you are looking for?
We build custom modules for WordPress, WooCommerce, OpenCart and Shopify. Tell us about the task and we'll prepare an estimate.
Order a custom module
Buying the module
—


