Get in touch
  • WordPress
  • Shipping
  • v1.0.1

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.

Download Free
Pro · one-year licence The more sites, the less each one costs
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
Or all 144 Pro modules with All Access — 4 990 ₴ / year

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.

Feature Free Pro
Delivery zones by postcode up to 3 unlimited
Postcode rules: exact, "101*", range "10200...10249" ✔ ✔
"Do we deliver to you?" widget on the product page, in the cart and as a shortcode ✔ ✔
Block orders to postcodes outside the zones, or just warn ✔ ✔
Minimum order per zone — checked on the server ✔ ✔
Your own message texts with placeholders ✔ ✔
Local pickup is never blocked ✔ ✔
WooCommerce classic and block checkout, HPOS ✔ ✔
Languages: English, Deutsch, Ukrainian, Russian ✔ ✔
Delivery windows: weekdays, time slots, cut-off, preparation days, closed dates — ✔
Order limit per slot — a full slot disappears — ✔
Delivery window in the order, e-mails and My Account — ✔
CSV import and export of postcodes — ✔

What it looks like

Do we deliver to you? postcode check on a WooCommerce product page
On the product page the customer enters a postcode and gets the answer right away: whether you deliver there and what the minimum order is for that area. The checked postcode is remembered, so on the next page the answer is already there, no click needed.
Postcode check in the cart showing the amount missing to reach the minimum
In the cart the same block does the maths: if the order is below the zone minimum, the customer sees exactly how much to add before checkout.
Choosing a delivery window in the WooCommerce classic checkout
Pro: a “Delivery window” appears at checkout — the date and time slot of the very zone the address belongs to. Change the postcode and the list is rebuilt.

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

v1.0.1 Current

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…

v1.0.0 First release

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

“Store starter” bundle Postcode Delivery Zones Nova Poshta Premium LiqPay Telegram notifications and Viber/SMS for customers Need more — all 144 modules in All Access for 4 990 ₴.
3 590 ₴ / year instead of 5 960 UAH bought separately
Buy the bundle →

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

  1. You create a zone: “Centre”, postcodes 10115, 101*, 10200…10249, minimum €30.
  2. A customer enters 10115 on the product page — “Yes, we deliver. The minimum order for your area is €30”.
  3. They add €10 of products and go to the cart — the block suggests: “add €20 more”.
  4. 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.
  5. 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.
  6. 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_validation for the classic one and woocommerce_checkout_validate_order_before_payment for 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

  1. Plugins → Add New → Upload Plugin: choose postcode-delivery-zones-for-woocommerce-1.0.1.zip and activate it.
  2. Open WooCommerce → Postcode zones.
  3. Edit the sample zone: name, your postcodes, minimum order. Enable it and save.
  4. Open any product — “Do we deliver to you?” appears under the add-to-cart button. Check your own postcode and a foreign one.
  5. 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.

@catcode_support Setup, compatibility, activation
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.

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