WooCommerce Shipping Zone & Postcode Builder

Turn a list of postcodes into WooCommerce's exact range and wildcard syntax, and check whether your zone order is silently hiding a zone.

Describe the result you need. AI will set up the tool and ask for any missing details.

Configure with AI

Enter to submit · Shift + Enter for a new line

Sent to AI. Leave out passwords and private customer data.

Paste postcodes, ranges or wildcards, one per line

Exact codes (90210), numeric ranges (90210-90220 or 90210...90220), or wildcards (902*, CB2*). One entry per line; WooCommerce doesn't accept commas in the Zone postcodes box.

zone-postcodes.txt
90210
90211...90220
941*
CB2*
CB23*

Paste the cleaned list into WooCommerce → Settings → Shipping → your zone → Limit to specific ZIP/postcodes.

Check your zone order, top to bottom (the same order WooCommerce uses)

OrderZone nameCountryPostcodes (blank = whole country)

"US - West Coast"'s pattern "9*" already matches postcodes that "US - California only"'s "90*" also targets, and "US - West Coast" is above it, so those customers never reach "US - California only".

WooCommerce matches a customer to the first zone (top to bottom under WooCommerce → Settings → Shipping) whose country/state/postcode all match, then stops. Put your most specific zones first and a catch-all zone (blank postcodes, or no zone at all beyond "Locations not covered by your other zones") last.

WooCommerce's postcode syntax

  • Exact postcodes: type the postcode as-is, e.g. 90210.
  • Numeric ranges: two numbers joined with three dots, e.g. 90210...99000. WooCommerce doesn't support letters or wildcards inside a range.
  • Wildcards: an asterisk matches everything after it, e.g. 902* matches 90210 and 90288-1234; CB2* matches both CB2 3AA and CB23 1EX.
  • Multiple entries go one per line in the zone's postcode box, not comma-separated.

The formatter above takes a rough, pasted list and cleans it up: it normalizes ranges to the ... form, upper-cases letter codes, removes duplicates, and flags anything WooCommerce won't accept (like a wildcard mixed into a numeric range, or a range typed backwards).

Why zone order breaks shipping silently

WooCommerce checks a customer against your shipping zones from top to bottom and stops at the first match, showing only that zone's methods. A zone with no postcode restriction matches every address in its country, so if it sits above a narrower, postcode-limited zone for the same country, that narrower zone never gets reached, and nobody notices until a customer in that area emails asking why they can't see the rate they expected.

The default example in the zone-order checker above deliberately shows this mistake: a broad "West Coast" zone (9*) sitting above a narrower "California only" zone. Move it below to see the warning clear.

Setting up a zone

  1. 01

    Create the zone

    WooCommerce → Settings → Shipping → Add shipping zone.

  2. 02

    Set its regions

    Add the countries/states/provinces it should cover.

  3. 03

    Limit by postcode

    Under Limit to specific ZIP/postcodes, paste the cleaned list from this tool.

  4. 04

    Check the order

    Drag zones in the list so more specific ones sit above broader ones, and any catch-all zone sits at the very bottom.

Questions people ask

Can I use commas to separate postcodes?

No, WooCommerce's postcode box expects one entry per line, not a comma-separated list. This tool's formatted output already uses newlines.

Can I mix a wildcard and a range, like 902*...990*?

No, WooCommerce doesn't support that combination. Use a wildcard on its own (902*) or a plain numeric range (90210...99000), not both together.

Does the zone-order checker know real ZIP code boundaries?

No. It only checks whether the patterns you enter would overlap or shadow each other, since exact postcode boundaries vary by carrier and aren't a single canonical dataset. Enter your own postcode lists, ideally from your carrier or a postal authority.

What happens if a customer doesn't match any zone?

They see no shipping options at all unless you have a zone covering "Locations not covered by your other zones", which should normally be your last, broadest zone.

Do postcodes match on billing or shipping address?

Zone matching uses the customer's shipping address by default, following the same address WooCommerce uses to calculate everything else about delivery.

Want this builtinto your store?

I'm Emmanuel, a Shopify and WooCommerce developer. If this tool pointed at something you'd rather have fixed for you (a faster store, cleaner product data, a migration, a custom feature), send me a note.

Emmanuel Asika

Emmanuel Asika

Shopify & WooCommerce developer, Dublin

I build and fix online stores: new builds, migrations, speed, SEO and the custom bits apps can't do.

hello@emmanuelasika.com

Last reviewed 30 September 2026.

Sources: WooCommerce: Setting up shipping zones