March, 19th-24th – Customer Support – extended response waiting time
In the following days our Support Team will only provide limited service due to the company’s annual gathering.
Replying all your questions may take us slightly longer than usual. We appreciate your understanding.
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.
The best and most powerful Table Rate Shipping plugin for WooCommerce. Discover its endless possibilities and create the shipping cost calculation rules based on weight, price and more!
Download for free or Go to WordPress.orgTo 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:
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…
First, navigate to WooCommerce → Settings → Shipping → Shipping Zones. You should see the following screen if you haven’t created any shipping zones yet:
Hit the Add shipping zone button in the middle or the Add shipping zone 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:
whole country:
selected states:
particular city:
or you can narrow it down and create the…
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:
As you can see, for the purposes of this guide I’ve created a
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 the Save changes button.
Next, use the Add shipping method to 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
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…
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…
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…
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.
If you’re having trouble determining the order of shipping zones, I have an easy and free solution for you. All you have to do to install and activate the Flexible Shipping plugin. It’s completely free and have a massive range of possibilities to determine the cost of shipping based on various conditions. One of the useful options in the plugin are the built-in Flexible Shipping hints. It displays an error message in WooCommerce shipping zone settings if the plugin detects a potential shipping zone configuration conflict.
As illustrated by the example above, in my store I did not maintain the correct order of shipping zones. The Wider Europe shipping zone covers the range of the narrower one placed below: Norway. The plugin automatically detected a potential error and displayed a message in the WooCommerce shipping zone settings.
The best and most powerful Table Rate Shipping plugin for WooCommerce. Discover its endless possibilities and create the shipping cost calculation rules based on weight, price and more!
Download for free or Go to WordPress.orgFinally, one more feature I haven’t told you about yet but still worth mentioning is…
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.
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.
Learn how to configure custom shipping rules for furniture orders – from heavy and bulky to small and light.
Read Octolize Case Study about Vitrek – a provider of innovative global solutions for High Voltage Test and Measurement.
Read Octolize Case Study about EnglishSpeakingMum – Polish dedicated and involved parenting blogger.
Hi, nice topic but in combination with W3 Total Cache the query is slow down: W3TCDbCache_Wpdb->default_query
What can we do?
Hi Florian, are you sure this is connected to our plugin?
Yes of course. You load the shipping zones on all pages with products and not only on checkout. Thats a “problem” for performance.
Thanks for pointing that out. We passed this to our developers to verify.
Perfect. You can test it with w3 total cache. Its tables which loaded on every site with products. Hope you find the best way. If you need help, you can write me an email over http://www.pictibe.de
Hi Florian,
We’ve checked the queries that are generated by our plugin, and in a clean WP/WC+FS installation we’ve found that the mentioned zone queries are produced only on cart/checkout page.
Therefore, the most probable cause of described behaviour is that there is a theme or another plugin that is calling one of the shipment hooks used in cart/checkout to which FS is hooked.
nice
I have a problem with my pages that have their plugins, I want to contact support but apparently it is only for the pro version. And it was working fine, but from time to time I get an error “Wider Zone 7 Rest of the World shipping zone covers the range of the narrower one placed below” but I already configured it from the narrowest to the widest and vice versa as your page says, but it doesn’t work.
Hi Gerardo, the notice you’ve mentioned should be displayed only when shipping zones’ ranges are overlapping each other. Could you please show how your shipping zones are currently configured?