Shipping is usually the first thing that trips people up when setting up a WooCommerce store. Products, payments, and design tend to feel straightforward by comparison — then shipping rates show up wrong, or every customer sees the same flat fee no matter where they’re ordering from, and it’s not obvious why.
In most stores I set up, the cause is the same: shipping zones were never configured properly, or WooCommerce is still running on its single default zone. WooCommerce doesn’t use one global shipping setting — it uses zones, and each zone controls both where you ship and what you charge. Once the zone structure makes sense, the rest of shipping configuration is quick to manage.
Quick Answer
Shipping zones are set up under WooCommerce > Settings > Shipping. Create a zone for each region you ship to, assign the matching countries or states to it, then add one or more shipping methods — flat rate, free shipping, or local pickup — to that zone. WooCommerce checks a customer’s address against your zones top to bottom and uses the first match, so order matters: put your most specific zones above broader ones.
Why This Matters
Get the zones wrong and customers either see no shipping option at checkout — which usually means abandoned carts — or they see a rate that doesn’t reflect the real cost of shipping to their location. Both problems are easy to trace back to zone setup once you know where to look, but they’re confusing to diagnose from the storefront side, since the checkout page just shows “no shipping options available” with no further explanation.
Zones also interact with the rest of your store setup. If you haven’t configured payments and taxes alongside shipping, rates can look correct in testing but come out wrong at checkout once tax is applied. It’s worth setting up all three together rather than shipping in isolation.
Step-by-Step Instructions
1. Open WooCommerce Shipping Settings
From your WordPress dashboard, go to WooCommerce > Settings > Shipping. This screen lists any existing zones and gives you an Add zone button to create new ones.
2. Add Your First Shipping Zone
Click Add zone and give it a clear name — “Domestic” or “United States” works better than something generic once you have several zones. Under Zone regions, select the countries or states this zone covers. You can be as broad as a whole country or as narrow as a handful of states.
3. Add Shipping Methods to the Zone
Under Shipping methods, click Add shipping method and choose from the built-in options. WooCommerce’s own shipping zones documentation is worth bookmarking if you manage a store with a lot of regions, since it’s updated whenever the settings screen changes.
- Flat rate — a fixed price per order, or per item if you configure it that way.
- Free shipping — usually set with a minimum order amount or a coupon requirement.
- Local pickup — lets customers collect the order instead of paying for delivery.
A zone can have more than one method. If you add both flat rate and local pickup, customers in that zone see both options at checkout and choose one.
4. Configure Each Shipping Method
Click the method name to open its settings.
Flat Rate
Set a base cost and, if needed, an additional cost per extra item. This is the simplest option and works well for stores where most products are a similar size and weight.
Free Shipping
Choose whether it requires a minimum order amount, a valid coupon, or both. Free shipping tied to a minimum spend is a common way to nudge up average order value.
Local Pickup
Set a cost if you charge a small handling fee, or leave it at zero. This method is worth adding for any store with a physical location or event stall.
5. Create Additional Zones for Other Regions
Repeat the process for each region you ship to — for example, a “Domestic” zone with cheaper flat rates and an “International” zone with higher ones. Drag zones into order using the handle on the left of the zones list so the most specific zone sits above broader catch-all zones; WooCommerce stops at the first match, so a country-specific zone needs to be listed before a “rest of world” zone or it will never be reached.
6. Test Checkout from Each Zone
Add a product to the cart and go through checkout using a test address from each zone you’ve configured. Confirm the expected shipping methods and rates appear. This step catches ordering mistakes and missing regions before a real customer does.
Practical Tips
- Add a “Rest of World” catch-all zone at the very bottom of your list with no region restriction, so customers outside your defined zones still see a shipping option rather than none at all.
- If you sell heavy or oversized items alongside small ones, consider a weight-based or class-based rate rather than a single flat rate — a flat rate that works for a small item can badly undercharge for a large one.
- Review your zones every few months if you expand into new countries or states — it’s easy to add a product for a new market and forget the shipping zone doesn’t cover it yet.
Common Mistakes
- Overlapping zones in the wrong order. If a broad zone sits above a specific one, the specific zone’s rates and methods are never used for matching customers.
- No catch-all zone. Customers outside every defined zone see no shipping method at all, which typically ends in an abandoned cart rather than a support request.
- Testing only from your own address. A store owner testing checkout from their own country will never notice that an international zone is missing or misconfigured.
When to Use This vs Alternatives
Built-in zones and flat/free/local pickup methods cover most small to mid-sized stores well. If you need live carrier rates — UPS, FedEx, or postal service rates calculated per package in real time — you’ll need a shipping extension that connects to those carriers’ APIs, since WooCommerce’s core methods don’t calculate live rates on their own. Once shipping is dialled in, the next place orders commonly break down is fulfillment — see managing WooCommerce orders for what happens after a customer checks out, and setting up refunds and returns for handling the shipping side of a return.
Conclusion
Shipping zones are the foundation of WooCommerce shipping — get the regions, order, and methods right, and rates at checkout stop being a mystery. Test from an address in each zone before you consider the setup finished. If you’re still working through the rest of your store’s foundations, the step-by-step guide to building a WordPress website covers what comes before and after this stage.

Etienne Basson works with website systems, SEO-driven site architecture, and technical implementation. He writes practical guides on building, structuring, and optimizing websites for long-term growth.