In WooCommerce, it's surprisingly difficult to charge different shipping costs to England, Wales, Scotland, Northern Ireland, Republic of Ireland and the Channel Islands.
It's all very well and good for countries like the US where you can set the shipping cost for each state individually. But WooCommerce treats UK countries such as England, Scotland and Wales as a single country, even though postage costs to each country can vary.
Sadly, there are no WooCommerce plugins to do this for you. This tutorial will teach you how to charge separate shipping rates for each UK country.
It's quite a fiddly process so if you can't be bothered to do it yourself, skip to the end of this article and sign up to be notified when we release a new WordPress plugin for WooCommerce shipping to different UK countries.
1. First, select which countries you sell to
The easy bit is to set up shipping for the Republic and Ireland and the Channel Irelands Jersey and Guernsey. The reason this is easy is because they're separate countries. This means that you don't have to set add postcode areas for each one.
- Go to WooCommerce > Settings in the WordPress admin and find the 'Selling Location(s)' option.
- If you sell to customers worldwide, set this to 'Sell to All Countries' or 'Sell to All Countries, Except for...'
- If you only sell to specific countries, enter them here. Make sure you enter United Kingdom, Republic of Ireland, Jersey and Guernsey as they're treated as separate countries in WooCommerce.
- Add the same information for the 'Shipping Location(s)' field below.
- Scroll down and click 'Save changes'.
This will tell WooCommerce which countries you accept orders from and where you will ship your products. Lots of people enter 'United Kingdom' thinking that it includes Jersey and Guernsey, not realising that people from the Channel Irelands can't order from them.
2. Add a Shipping Zone for each postage rate
Next, go to the Shipping tab in the WooCommerce settings. You need to create a separate shipping zone for each group of areas that will have its own postage costs. For example:
- If postage to England & Wales is £10 and postage to the other countries is £20 then you should add 2 shipping zones - 1 for England/Wales and 1 for elsewhere.
- If each country or region will have different postage rates then you should add each one as a separate shipping zone - e.g. England, Wales, Scotland, Northern Ireland, Republic of Ireland, Scottish Isles, Isle of Man, Channel Islands etc.
If any of these areas will have the same postage cost then you can group them into the same shipping zone. This keeps it simple - if England and Wales have the same shipping rate then there's no need to add them as separate shipping zones.
The below screenshot lets you charge different shipping rates for England & Wales, Scotland & North Ireland, the Scottish Isles & Isle of Man, and the Channel Islands and Southern Ireland - so we added 4 shipping zones.
Now it's time for the complicated bit. You need to tell WooCommerce how to determine which customer is in which shipping zone. Unfortunately this doesn't happen automatically.
- Hover over a shipping zone and click 'Edit'.
- In the 'Regions' column, you will see a box titled 'Select regions within this zone'. This should only be used for entire countries that have a single shipping rate - for example if all Isle of Man postcodes will have the same shipping cost then select 'Isle of Man' here.
- Click in the box to view a list of all the countries that you ship to. Select the countries that should be used for that shipping zone. This puts that entire country within a single shipping zone, so DO NOT select any countries that you're dividing into multiple shipping rates. For example, if you are charging separate postage for England and Scotland then don't add United Kingdom into this box - instead, you need to add the individual postcode areas (see step 4).
- If you need to divide a country across multiple shipping zones then click the 'Limit to specific ZIP/postcodes' link. A box will appear underneath where you can add the postcodes for that shipping rate. At the end of this article, I've provided a list of UK postcodes divided by area/country. This will hopefully save you a lot of time.
3. Add your Shipping Methods
Once you've added your WooCommerce shipping zones, it's time to add all the shipping methods. Each shipping zone needs one or more shipping method.
To add a shipping method, click the + icon on the right of the shipping zone.
Select the type of shipping method and click 'Add shipping method'. This will add the method to the 'Shipping Method(s)' column on the WooCommerce Shipping Zones page.
Next, click on the shipping method you just created and fill in all the information to set it up.
Repeat the process to create all the shipping methods for each zone.
4. Test your WooCommerce shipping rates
Finally, you need to thoroughly test your shipping rates. To do this, log out of your website and add a product to the cart. Go through to the checkout and use the shipping calculator to test the postage from various countries and postcode areas.
If something isn't working properly, it can be tricky to figure out what has gone wrong. Something must be wrong with the logic somewhere - for example you might have accidentally added the same area to 2 shipping zones.
Some common pitfalls:
- If the customer's default location in WooCommerce > Settings is set to 'Geolocate' then it's hard to accurately test the postage as the website can detect your location. Switch off this setting to test it more accurately.
- Are you using wildcards incorrectly? For example, you might have entered E* to cover all the East London postcode areas. If you do this then ALL customers whose postcode starts with an E will be charged the England postage, even if they're in a different shipping zone - e.g. Edinburgh, which is EH*. To solve this problem, you need to add the 2-digit version of all the 1-digit postcodes that share a first letter with a postcode in a different shipping zone. In this example, you need to add E1*, E2*, E3* instead of just E*.
- If a customer in the Isle of Man (for example) selects their country as 'United Kingdom' then they will be charged UK postage. This is fair enough, as they quite rightly think of themselves as within the UK. If this happens, it's worth adding the postcodes for the other countries into the relevant shipping zone just in case. For example, you can select 'Isle of Man' AND add the Isle of Man postcode areas (IM*) to the Isle of Man shipping zone. This will allow you to charge the correct postage whether an Isle of Man customer selects their country as 'United Kingdom' or 'Isle of Man'.
5. Checklist - have you missed anything?
As you can see, it's quite fiddly to set up different shipping rates for each UK country/region. This checklist will help you ensure you haven't missed anything:
- Have you added all the separate UK countries individually on the WooCommerce > Settings page?
- Make sure you've created a separate shipping zone for each country/region that will have its own postage rate.
- Have you accurately selected the correct countries and postcodes for each shipping zone?
- Test the shipping costs from various countries and areas.
Would you like a plugin to set up shipping to different UK countries?
I completely understand that the process outlined in this article is very fiddly and difficult to get right. We're developing a WordPress that will do all this for you. If you're interested, please add your email address below and we'll let you know when it's available.
Or if you just want to charge different rates for each country, check out our tutorial on using WooCommerce to charge a different shipping rate per country.
List of postcode areas by UK country
To help you add your postcode areas, here's a list of UK postcodes divided into country.
We created this by collating the postcode lists on several Wikipedia pages and can't guarantee the accuracy, but hopefully it will save you time on defining the areas for your shipping zones. Please get in touch if you have any corrections to the list.
England and Wales postcode areas
Scotland and North Ireland postcode areas
Scottish Isles postcode areas