Skip to content
Locker Forge

Tutorials

WooCommerce Shipping Zones Explained

WordPressBeginnerIntermediate

8 min read

Locker Forge tutorial card — WooCommerce Shipping Zones, Explained.
Contents7 sections

A customer finds your product, adds it to the cart, and goes to checkout — then stops. Under shipping there is nothing to choose from. Just a message: no shipping options available.

That message sends buyers away, and it usually has a simple cause: your store could not match the customer’s address to any shipping option you had set up. In this piece, we explain how WooCommerce shipping zones decide who sees which options. We build a small two-country example together, and we finish with a checklist for when that error message shows up.

The simple picture: places first, prices second

WooCommerce shipping runs on one idea: the shipping zone.

A shipping zone is a set of places you choose. It can be one country, a group of states, a whole continent, or even a short list of postcodes. Inside each zone, you put one or more shipping methods. A shipping method is a way an order can travel, with a price attached — for example, “standard delivery, $5.”

When a customer reaches checkout, WooCommerce looks at their shipping address and finds the zone that covers it. The customer then sees only the methods inside that zone. Never a mix from several zones — always one zone, and only its methods.

Zones are checked in order, from the top of the list down. The first zone that covers the address is the one that counts, and WooCommerce stops looking there. That is why the order matters: put smaller, more specific zones above bigger ones. A zone for one state belongs above a zone for the whole country, so people in that state land in the state zone first. If a broad zone sits above a narrow one, the broad zone wins every time, and the narrow zone’s prices are never offered to anyone.

One more thing to know early: methods live inside their zone and nowhere else. Adding free shipping to your home-country zone does nothing for customers abroad. Every zone needs its own methods, added one zone at a time.

The zone at the bottom of the list

Underneath your zones sits one that WooCommerce adds for you. On current versions it is called Rest of the world. On some versions it reads Locations not covered by your other zones. Both names mean the same thing: every address that matched none of your zones lands here.

You decide what happens to those customers. Add a method to this zone — a worldwide flat rate, say — and anyone, anywhere, can buy from you. Leave it with no methods, and a customer in an uncovered place sees the “no shipping options available” message. If their cart holds a product that needs posting, they cannot finish checkout at all.

Neither choice is wrong. Plenty of small shops post to two or three countries and leave the rest of the world empty on purpose. The key is that it stays a choice, not a surprise.

The three built-in shipping methods

WooCommerce comes with three methods built in. You can add any mix of them to any zone.

Flat rate

One set price for delivery. You type the price into a Cost box, and that is what every customer in the zone pays for the order. For example, a small bookshop might charge $4 for every order, whether the customer buys one paperback or three. The cost can also be written so it grows per item — a base price plus a small amount for each extra product in the cart — but one plain price is where most small shops start, and often where they stay.

Free shipping

Delivery that costs the customer nothing. You can offer it to everyone in the zone, or only once an order passes a minimum amount that you set — free shipping on orders over $50, for example. That minimum is a popular way to nudge customers toward slightly bigger orders.

Local pickup

No posting at all: the customer comes to you and collects the order. It suits shops with a physical spot people can visit — a shop counter, a market stall, a workshop door. Because there is no parcel and no postage to pay for, shops usually offer pickup free.

A worked example: a small shop that posts to two countries

Say you run a small shop in the United States. You post anywhere in the US, and you post to Canada. Everywhere else, you do not post to — yet. Your zones would look like this:

  • United States — one method: Flat rate, $5.
  • Canada — one method: Flat rate, $15.
  • Rest of the world — no methods at all, on purpose.

Now watch what three customers see:

  • A customer in Ohio matches the United States zone. At checkout, they see one choice: delivery for $5.
  • A customer in Toronto matches the Canada zone. They see one choice: delivery for $15.
  • A customer in France matches none of your zones, so they land in Rest of the world. That zone has no methods, so they see “no shipping options available” — and they cannot complete an order for anything that needs posting.

Nothing is broken in that last case. The shop simply never offered to post to France, and the empty zone is how WooCommerce says so. If the shop later decides to sell there, the fix is short: add a method to Rest of the world, or make a Europe zone and give it a price.

Set up your first zone, step by step

We will build the United States zone from the example. Canada afterwards is the same steps again, with a different name, region, and price.

  1. Go to WooCommerce → Settings → Shipping. The Shipping zones list opens. On a first visit, you may see only the Rest of the world zone and a prompt to add one.
  2. Click Add shipping zone at the top. On the newest versions, the button is labelled Add zone. It is the same button.
  3. Type a Zone name. Pick a name you will recognise in a list later — “United States” is perfect.
  4. In Zone regions, start typing “United States” and pick it from the list that appears. Regions can be countries, states, or continents, and one zone can hold more than one region.

  1. Click Add shipping method.
  2. Choose Flat rate, then click Continue.
  3. In the Cost box, type 5. That is $5 for the whole order, whatever is in it. Give the method a name customers will understand, such as “Standard delivery”.

  1. Click Save changes. Your zone is live.

Repeat the same steps for Canada, with a Flat rate cost of 15. Later, if you add smaller zones — one state, one city — drag them above the bigger zones using the handle on the left of each row. Smallest area at the top, always.

A short word about weight

Notice what the example never asked for: the weight of anything. A simple flat rate does not need weight. One price covers the order, however heavy it is.

Weight only enters the picture when your price depends on it — charging by the kilo, or charging extra for a heavy class of products. Those setups read the weight stored on the product itself, so every product needs its weight filled in before the prices can work. The weight lives on the product itself — here is where you set it when you add a product.

If you are just starting, skip weight entirely. Flat rate first. Fancy pricing later, if you ever need it.

When a customer sees “no shipping options available”

Work through these four causes in order. One of them sits behind almost every case.

  • The address matches no zone that has methods. How to check: compare the customer’s country with your zone list at WooCommerce → Settings → Shipping. If their place is covered only by Rest of the world, and that zone has no methods in it, you have found the cause.
  • The zone exists, but it has no method in it. How to check: open the zone with the Edit link and look at its methods list. A zone with an empty list offers nothing, even though the zone itself looks set up.
  • The product is marked Virtual. How to check: open the product and look in the Product data box. Virtual means the item is not a physical thing to post — a service, a membership, a booking — so WooCommerce gives it no shipping options at all. If the product is a real object that you post, untick the Virtual box.
  • The customer has not entered a full address yet. How to check: shipping options only appear once WooCommerce knows where the order is going. On the cart page, the customer can use the Calculate shipping link and type in their country and postcode. At checkout, the options appear as the address is filled in. Ask the customer to complete the address first — or try it yourself with a full address of your own.

Fixed something in the settings? Do not just trust the settings screen. The only way to know a zone works is to check out through it: put a product in your own cart, use an address inside the zone, and watch the right method and the right price appear. Here is the test walk to follow — it takes a few minutes, and it is the same walk your customers take.

That is the whole system: places in zones, prices in methods, one zone per customer. Set up the places you serve, give each one a fair price, and decide on purpose what happens to everyone else. Your checkout will make sense from then on.

Newsletter

Get the next tutorial in your inbox

One useful email when something new ships. Practical build notes, no fluff, unsubscribe any time.

No spam. Your address is never shared.