WooCommerce Shipping Zones introduced in version 2.6 are a killer feature making advanced shipping methods a standard. Adding the Zones gives you more flexibility and allows i.a. to offer your customers the zone-specific methods. Let's get to know them better!
Despite the fact that WooCommerce Shipping Zones were implemented a while ago, they've quickly become a commonly used feature nowadays. There is no doubt they make the difference and pushed the WooCommerce shipping to a completely new level.
Combined with the WooCommerce shipping methods they allow to target your customers more precisely and adjust the shipping to meet your business and your customers' needs. However, in spite of all the upgrades introduced with the shipping zones' implementation, in case of more complex shipping scenarios and better shipping management using some extra plugins such as Flexible Shipping may yet prove to be a good idea.
What are the WooCommerce Shipping Zones?
To cut the story short the shipping zones are groups of locations where you want to ship your products to. You can easily group the continents, countries, states/provinces and even ZIP or postal codes. In other words, you can use them e.g. to:
- offer the same shipping method or set of methods for the whole Europe,
- define a shipping zone covering a few selected USA states e.g. FL, GA and AL,
- narrow down the shipping area precisely to include only specific city district based on postcodes.
However, these are only a few examples of shipping zones' usage. It's all up to you how you configure them and which setup suits your business best.
What surely makes them a core feature is the fact that they also allow to set up the different shipping methods for each zone you've created and your customers will see only the ones available for their area (based on the entered address details or geolocation).
That's enough theory. Let's jump to practice and learn...
How to add a new Shipping Zone?
First, navigate to WooCommerce → Settings → Shipping → Shipping Zones. You should see the following screen if you haven't created any shipping zones yet:
Hit thebutton in the middle or the at the top of the screen. You will be redirected to the new shipping zone settings:
Define its name by filling in the Zone name field and select below the Zone regions which it should cover. As I mentioned before you can set the shipping zone to cover the entire continent:
or you can narrow it down and create the...
WooCommerce Shipping Zone based on postcodes:
Let's stop here for a while since this type of shipping zone setup is the most precise one and deserves some more attention. Once the Limit to specific ZIP/postcodes link is clicked the additional text-area field will appear below where you can put all the postcodes you want the shipping zone to be narrowed to. What's most important here is that you can enter them in three different ways:
- directly, typing the full postcodes manually one per line, e.g.:
- by defining their ranges, e.g. 90210…99000. If used, the shipping zone will cover all the postcodes between 90210 and 99000 such as 90211, 93123, 98157, etc.
- using so called wildcards and placing an asterisk sign * in right place of the postcode, e.g. AB10* wildcard will cover all the postcodes starting with 'AB10' phrase, e.g. AB10 1AP, AB10 1AR, AB10 1AQ and so on.
As you can see, for the purposes of this guide I've created a
shipping zone based on postcodes with wildcards
covering the Portugal capital city - Porto:
Once you created the shipping zone and set it up to fit your case confirm the whole process with thebutton.
Next, use theto add one right away.
In the popup window, which should appear, choose Flat rate, Free shipping, Local pickup or Flexible Shipping method if you have the Flexible Shipping plugin installed. Then, configure it according to your needs. You can add as many shipping methods within a shipping zone as you want.
From this point you can easily
manage the shipping methods
you've added within a shipping zone. Drag and drop them grabbing the icon on the left to change the order how they are displayed in the cart or checkout.
Edit or delete them with the quick links appearing on hover. Use the toggle to switch them on and off on the fly. Easy as pie, isn't it?
Once the shipping methods are configured save the changes one more time and voila! You've just configured a fully functional shipping zone in your WooCommerce shop. Now let's see...
How do the shipping zones work?
In order to explain it as precisely as possible I've created two shipping zones. First one narrow, based on postcodes for Porto you've already seen on the screeshot above and the second one - much wider covering the whole Portugal area:
As you can see I enabled the $50 Fixed price handled by Flat rate shipping method if shipping to Portugal and two different shipping methods - Shipping to Porto handled by Flexible Shipping with $10 fixed cost and free Local pickup named Collect locally from pickup point in Porto if shipping directly to Porto. The Flat rate and Free shipping for Porto shipping zone remain disabled.
Now, let's go to the shop, put a sample product into the cart and see the shipping zones in action by entering the 4050-253, Porto, Portugal shipping destination address here:
But wait, what has just happened? Instead of the $10 fixed price Shipping to Porto Flexible Shipping method and free Collect locally from pickup point in Porto we've set for 4050* Porto postcode wildcard, the $50 Fixed price handled by Flat rate shipping method dedicated for the rest of Portugal was displayed in the cart.
In order to check what's wrong we will need to use the...
Debug mode for shipping
Fortunately, WooCommerce has an in-built tool which comes in handy in such cases. Move on to WooCommerce → Settings → Shipping → Shipping options, enable the Debug mode at the bottom and save the changes.
Once you turn the Debug mode on it will show you in the cart which shipping zone was matched to the entered shipping details. It's a great help if it comes to troubleshooting when you experience any problems with the shipping configuration and it usually sheds some light on the situation.
Go back to the cart and check what it says. At the very top of the screen you should see the relevant notice:
As it shows, the entered 4050-253, Porto, Portugal shipping destination wasn't matched to the narrow Porto shipping zone based on postcodes but to a much wider one covering the whole Portugal area. Wondering why did it happen this way? The answer is the...
Shipping Zones order matters - how does the WooCommerce Shipping Zones matching work?
The sample address we've entered in the cart was simply matched to Portugal shipping zone because it was placed as first on the shipping zones list:
WooCommerce shipping zone matching mechanism takes the address entered in the cart and checks if it matches the defined shipping zones starting from the top to the bottom of the shipping zones list.
If the provided shipping destination matches e.g. the first zone, the next ones are not even being considered. That's exactly what happened in our case. The 4050-253, Porto, Portugal address was matched the whole Portugal zone due to the wrong shipping zones order and placing the wider zone before the narrower one (Porto).
To solve this out we simply need to change the shipping zones order, drag & drop them and...
Once the above adjustments are made, the narrower Porto shipping zone based on postcodes is considered first and it is now properly matched in the cart:
Now, when everything works properly you can go back to WooCommerce Shipping options and turn the Debug mode off.
Finally, one more feature I haven't told you about yet but still worth mentioning is...
Locations not covered by your other zones
You might have noticed it earlier in the shipping zones table footer:
Wondering how to make use of it? Locations not covered by your other zones works similar to the standard shipping zones, however, it's more like a fallback option.
If WooCommerce doesn't find any matching shipping zones for the entered shipping address considering them one by one starting from the top of the table, it will finally reach its bottom. When it finds no match for such shipping destination, it will simply fall into the Locations not covered by your other zones. So, in order to prevent any possible matching issues, adding a kind of emergency shipping method here as well, e.g. the fixed price Flat rate is a good practice.
WooCommerce Shipping Zones - Wrapping up
You've just learned everything you need to know about the WooCommerce Shipping Zones. I showed you step by step how to create, manage and configure them to meet your business. You've also got across the most common issues you might encounter and found out how to deal with them. I deeply believe you are now fully ready to take care of the shipping zones setup in your WooCommerce store. If there is still something bothering you or you find something unclear, feel free to leave your questions in the comments below.