WooCommerce: How to charge different shipping for England, Wales, Scotland, Ireland & Channel Islands

woocommerce-shipping-uk-countries

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.

  1. Go to WooCommerce > Settings in the WordPress admin and find the 'Selling Location(s)' option.
  2. If you sell to customers worldwide, set this to 'Sell to All Countries' or 'Sell to All Countries, Except for...'
  3. 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.
  4. Add the same information for the 'Shipping Location(s)' field below.
  5. 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.

Add WooCommerce UK Shipping Countries

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.

Add WooCommerce Shipping Zones for England Scotland Wales

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.

  1. Hover over a shipping zone and click 'Edit'.
  2. 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.
  3. 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).
  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.

How to add postcode to WooCommerce shipping zone

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.

WooCommerce Add Shipping Method

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.

WooCommerce Add Flat Rate for England Scotland Wales

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

AL*
B1*
B10*
B11*
B12*
B13*
B14*
B15*
B16*
B17*
B18*
B19*
B2*
B20*
B21*
B22*
B23*
B24*
B25*
B26*
B27*
B28*
B29*
B3*
B30*
B31*
B32*
B33*
B34*
B35*
B36*
B37*
B38*
B39*
B4*
B40*
B41*
B42*
B43*
B44*
B45*
B46*
B47*
B48*
B49*
B5*
B50*
B51*
B52*
B53*
B54*
B55*
B56*
B57*
B58*
B59*
B6*
B60*
B61*
B62*
B63*
B64*
B65*
B66*
B67*
B68*
B69*
B7*
B70*
B71*
B72*
B73*
B74*
B75*
B76*
B77*
B78*
B79*
B8*
B80*
B81*
B82*
B83*
B84*
B85*
B86*
B87*
B88*
B89*
B9*
B90*
B91*
B92*
B93*
B94*
B95*
B96*
B97*
B98*
B99*
BA*
BB*
BD*
BH*
BL*
BN*
BR*
BS*
CA*
CB*
CF*
CH*
CM*
CO*
CR*
CT*
CV*
CW*
DA*
DE*
DH*
DL*
DN*
DT*
DY*
E1*
E10*
E11*
E12*
E13*
E14*
E15*
E16*
E17*
E18*
E19*
E2*
E20*
E3*
E4*
E5*
E6*
E7*
E8*
E9*
EC*
EN*
EX*
FY*
GL*
GU*
HA*
HD*
HG*
HP*
HR*
HU*
HX*
IG*
IP*
KT*
L1*
L10*
L11*
L12*
L13*
L14*
L15*
L16*
L17*
L18*
L19*
L2*
L20*
L21*
L22*
L23*
L24*
L25*
L26*
L27*
L28*
L29*
L3*
L30*
L31*
L32*
L33*
L34*
L35*
L36*
L37*
L38*
L39*
L4*
L40*
L41*
L42*
L43*
L44*
L45*
L46*
L47*
L48*
L49*
L5*
L50*
L51*
L52*
L53*
L54*
L55*
L56*
L57*
L58*
L59*
L6*
L60*
L61*
L62*
L63*
L64*
L65*
L66*
L67*
L68*
L69*
L7*
L70*
L71*
L72*
L73*
L74*
L75*
L76*
L77*
L78*
L79*
L8*
L80*
L9*
LA*
LD*
LE*
LL*
LN*
LS*
LU*
M*
M1*
M2*
M3*
M4*
M8*
M9*
M11*
M12*
M13*
M14*
M15*
M16*
M17*
M18*
M19*
M20*
M21*
M22*
M23*
M24*
M25*
M26*
M27*
M28*
M29*
M30*
M31*
M32*
M34*
M35*
M38*
M40*
M41*
M43*
M44*
M45*
M46*
M60*
M61*
M90*
M99*
ME*
MK*
N*
N1*
N2*
N3*
N4*
N5*
N6*
N7*
N8*
N9*
N10*
N11*
N12*
N13*
N14*
N15*
N16*
N17*
N18*
N19*
N20*
N21*
N22*
N81*
NE*
NG*
NN*
NP*
NR*
NW*
OL*
OX*
PE*
PL*
PO*
PR*
RG*
RH*
RM*
S1*
S2*
S3*
S4*
S5*
S6*
S7*
S8*
S9*
S10*
S11*
S12*
S13*
S14*
S17*
S18*
S19*
S20*
S21*
S22*
S25*
S26*
S32*
S33*
S35*
S36*
S40*
S41*
S42*
S43*
S44*
S45*
S49*
S60*
S61*
S62*
S63*
S64*
S65*
S66*
S70*
S71*
S72*
S73*
S74*
S75*
S80*
S81*
S95*
S96*
S97*
S98*
S99*
SA*
SE*
SG*
SK*
SL*
SM*
SN*
SO*
SP*
SR*
SS*
ST*
SW*
SY*
TA*
TF*
TN*
TQ*
TR*
TS*
TW*
UB*
W1*
W10*
W11*
W12*
W13*
W14*
W2*
W3*
W4*
W5*
W6*
W7*
W8*
W9*
WA*
WC*
WD*
WF*
WN*
WR*
WS*
WV*
YO*

Scotland and North Ireland postcode areas

AB*
BT*
DD*
DG*
EH*
FK*
G1*
G2*
G3*
G4*
G5*
G6*
G7*
G8*
G9*
IV*
KW*
KY*
ML*
PH*
TD*

Scottish Isles postcode areas

HS*
KA*
PA*
ZE*

66 Comments

  1. In your list G* is listed in Scotland (for Glasgow). But GY* is for Guernsey. So your Scotland list needs to remove G* and add in G1* to G9*. Thanks for your article though, really helped me.

    • Hi, Jon. I'm glad to hear this was helpful. Thanks for pointing out the need to differentiate between the G* postcodes of Guernsey and Glasgow. I have since replaced the G* catchall for the Glasgow postcode area with G1* to G9* as you suggested. Cheers.

  2. Hi,
    Great article and comments - really helping me out with a complicated woo shipping set up I have on the go!
    I have a question - my client is UK based and has different shipping rates for Northern Ireland to the rest of the UK, that's fine because I can use BT* region for this. However, he also wants to use the same shipping rate to Dublin!!! Then the rest of the Republic of Ireland comes under International shipping. I can't figure out how to do this - is it even possible? Dublin/Republic of Ireland is NOT the UK, and as far as I can see, there is no mandatory postcode system in Ireland (Republic of)?? Any help on this gratefully received!
    Kevin

    • Hi, Kevin. Thanks for your enquiry and my apologies for my late reply. You can get in touch with us much quicker via our dedicated Support Center.

      You can use the same shipping rate to Dublin by duplicating the UK shipping zone settings to a new shipping zone specifically for Dublin. Here's a link to the official WooCommerce documentation about shipping - you will want to read through the shipping zones page.

      I hope this helps!

  3. Hi Katie, I thought I'd pop back and let you know that I finally got round to sorting the Jersey and Guernsey issue! So first of all I'm convinced that the postcodes in the ISO database that WooCommerce use for Jersey and Guernsey are duplicated and sit both as postcodes for their own country zone, but also in the United Kingdom country zone too. So with this in mind there is a really simple workaround that I figured out.

    Firstly, in your "Scotland and North Ireland postcode areas" list you can't use the wildcard G* as it will conflict with the Guernsey GY* wildcard. Instead of using G* use "G1*...G99*".

    Then all you have to do is go into your Guernsey zone and add "United Kingdom (UK)" to the zone regions section alongside "Guernsey" that should already be in there if my earlier post was followed.

    Then just repeat the same for Jersey by adding "United Kingdom (UK)" to the zone regions for that one too alongside "Jersey" that should already be in there from earlier.

    So now what you'll have is your channel island carriage prices appearing at the correct times based on the postcode entered regardless of if the channel island "country" is selected or the default of "United Kingdom" is selected.

    Best of both worlds! Now channel islanders are free to call themselves independent, or they're free to call themselves part of the U.K. Either way their orders now pull through correctly which makes me happy!

    • Hi, Michael. Thanks for getting back to us and sharing your solution, which would be great help to anyone with similar requirements. I'm happy to hear it. Well done!

  4. Hi

    I'm currently launching a new version of my existing website using woo-commerce. Shipping is a mind field but thanks for the useful tutorial and the list of postcodes were helpful. I have set up my shipping zones and added each postcode (UK, Welsh and some Scottish postcodes to my lower zones). I have added Next Day and Saturday as additional shipping methods successfully and they work.

    I have created separate shipping zones as suggested to Channel Isles, Scottish Isles, Ireland (I have tried the suggestion and BT*), Isle of Man/Wight. My problem is these latter zones are not showing in the shopping basket when I test it. I get the message "There are no shipping methods available". There are no duplicate postcodes and I have followed the same methodology as above like you have provided. Any suggestions why these are not working?

    I also have samples that need to be sent out as part of my products, I set up a separate shipping method "samples UK" for this which is free shipping for all UK postcodes , but when I do this it overrides all other shipping methods for the existing zones I already have in place which I subsequently disabled for now. Do I have to separate this by introducing a 'weight' limitation so they do not conflict or is there an easy method to apply? I have weighted products ranging from 2k-1000kg. The 2kg relating to my samples which should be free shipping to all UK postcodes. I want to set up another shipping method "samples other UK' for example which will have a charge of £5 for the Channel Isles, Scottish Isles, Ireland, Isle of Man/Wight. Any suggestion to stop this from overwriting all existing shipping methods?

    Any help would be great.

    • Hi, Jay. I'm sorry to hear you're having a couple of difficulties on your site. Thanks for your comment.

      (1) "There are no shipping methods available" - Please could you submit a Plugin Support Request and include the address/URL on your site where we may see this issue occurring, so we may investigate to have a better understanding of it and be able to advise you best.

      (2) Rather than set up a separate shipping method to be used specifically for your product samples, I suggest you instead create the samples as either separate products or variations under the product that they are a sample of and then mark these as having free shipping to the UK.

      Many thanks.

  5. A couple of useful notes to include...

    The postcode area for Northern Ireland is "BT*" (Not included in lists above).

    The postcode area for Isle of Man is "IM*" (Not included in lists above).

    The postcode area for Isle of Wight is "PO30*...PO41*" (Included in England and Wales list above). Note: If you wanted to set Isle of Wight up as it's own zone then you'd need to remember to alter the "PO*" postcode in the England and Wales Zone to "PO1*...PO22*".

    Jersey is set up as it's own country, but for reference it's postcode area is "JE*"

    Guernsey is set up as it's own country, but for reference it's postcode area is "GY*"

    For a zone, if you have a Flat Rate option set up to charge a shipping fee under a certain amount, say £100, and a Free Shipping option set up to provide free delivery when orders are over £100, and want it to automatically apply free shipping when a customer qualifies for it, then it's important to put the Free Shipping option above the Flat Rate option in the Shipping Methods list.

    If you want to be able to sell your products to customers around the world, but don't want to get involved with the majority of the hassle which that entails, then one option is to create a "Local Pickup" Shipping Method in the "Locations not covered by your other zones" section and call it "Customer Collection".

  6. I'm having a problem with Jersey and Guernsey. I've created separate zones for them, I've selected the zone region as Jersey and Guernsey respectively for each one, and I've used JE* for Jersey and GY* for Guernsey. If the customer changes the country to Jersey or Guernsey then it works fine. However, if they leave it set as United Kingdom, which is the default, then the Jersey or Guernsey carriage does not apply, even though they have entered a JE or GY postcode.

    • This is because WooCommerce treats Jersey and Guernsey as separate countries, so the customer would have to select these from the Country dropdown in order for those shipping zones to kick in.

      • Hi Katie, the problem with this is that people from Jersey and Guernsey generally see themselves as part of the U.K (which they are). I'm not sure why WooCommerce have decided to set them up as their own countries, that's like setting the Isle of Man up as it's own country, it just doesn't make sense! Jersey, Guernsey and the Isle of Man all have "Crown Dependency" so why isn't the Isle of Man set up as its own country if that's the logic they are following!

        When a customer enters a Jersey or Guernsey postcode but leaves the country as the United Kingdom it accepts the order as if it were a U.K address. Since I offer free delivery to U.K, but £15 to Jersey and Guernsey this causes me an issue.

        The only workaround that I have been able to implement is to set my "Locations not covered by your other zones" section up as a shipping method called "Customer Collection". This way I can still accept orders from around the world which I don't have shipping zones set up for. If a customer from Jersey or Guernsey does not select their appropriate 'country' then they will get this as the mandatory shipping option and then i'll have to handle that particular order by hand.

        I must say, WooCommerce in the main hold themselves to such high standards, but they are completely lacking in the shipping section. This section of WooCommerce needs a complete update and overhaul. Are there any recommended plugins that replace the WooCommerce default shipping section?

        P.S When I asked WooCommerce (Automattic) these questions they just sent me a link to this thread. Extremely poor customer service when they can't even be bothered to produce their own documentation for something that appears to be a common issue for it's users.

        • Yes, I agree that it's silly to list the Channel Islands as separate countries! Your workaround sounds sensible. I'm surprised to hear that WooCommerce.com's official support are directing people to this article, as we're not linked to them in any way!

  7. Hi
    We would like to offer different prices for different areas in London ,
    Can this work with wildcards
    I have tried and it is showing up no shipping for everyone
    Please help me

    • Yes, this should work with wildcards. If it's not working for you then there may be something wrong in the logic of how your shipping zones are set up, I recommend that you reach out to WooCommerce.com and send them screenshots of your exact setup so that they can check where the gaps are.

    • Hi Stef, it was last updated a couple of months ago. WooCommerce hasn't made any major changes to its shipping zones or anything since the article was first published in 2016, and I'm not aware of any changes to the UK postcodes.

  8. thanks for the info very helpful. I have one question though, our courier charges different rates for different variations of the same postcode. EG AB1 to 30, AB39 and AB57 to 99 are in Zone 1 but AB31 to 38 and AB40 to 56 are in Zone 2 do you know how could i enter this into the backend without inputting every single one of the postcodes individually?

  9. I've added Republic of Ireland postcodes/wildcards to Woo but when I'm filling out the shipping address as a customer it generates a dropdown of all the Irish counties (unlike other zones). All good, but if I leave the Eircode (optional) field empty and proceed it gives me the error message "No shipping method has been selected". Of course this is kind of expected as it can't match an empty postcode field to the wild card in the DB.

    So it needs to have the postcode field as required, not optional otherwise it doesn't work. Has anyone else had this issue?

  10. This is useful and exactly how I expected it to work but I have some strange anomalies I can’t work out. Heres two examples.
    Example 1. I have entered IV* as a postcode with a higher flat rate of delivery. If I put IV into my delivery address it increases the rate as expected. If I then continue and change it to IV1 it still shows increased rate but if I then continue to IV12 it reverts to the standard (lower) rate which is wrong. Adding a space leaves it at the lower rate and then adding the next number (e.g. IV12 3) increases the postage again. Clearly if a customer notices and only puts in the first part of their postcode (IV12) then they will be charged the lower rate of delivery and I will be out of pocket!
    Example 2. I have entered PO30* as a postcode with a higher flat rate of delivery. If I put PO into my delivery address uses the standard rate as expected. If I then continue and change it to PO3 it still shows standard rate (as expected) but if I then continue to PO30 it still shows the standard rate (not as expected). Adding a space leaves it at the lower rate and then adding the next number does too (e.g. PO30 2). It still does not increase when adding the next letter (e.g. PO30 2T) but it does increase when I add the final letter (e.g. PO30 2TG). Now if a customer notices this they only have to leave off the last letter of their postcode and they will be charged the lower rate of delivery and again I will be out of pocket!
    There does not seem to be consistency between these two examples - what is going on and how do I fix it?

    • Hi, I'm not an expert of the logic used for wildcards and you may need to ask WooCommerce.com about this - but based on what you've said, it looks ike the * is being used in a very literal sense.

      For example, IV* is only used for postcodes that have IV follows by one other number in the same word. So it is used for IV1 and IV1 4TG but not IV12. Could you add another variant - IV**? That will hopefully cover the second digit of that first word.

      • Hi Katie
        Thanks for this suggestion. I will get onto WooCommerce.com and ask and play around with the asterisk wildcard. Are there any other wildcards I can use do you know?

        • As far as I know it's just the wildcards, but WooCommerce.com support should be able to confirm if there are other methods/options.

  11. Does Woocommerce accept even more defined postcodes like;

    NG1*
    NG2*

    As I've tried that and NG4* offers free shipping which is what I want but for example NG16* also does but I don't want it too.

  12. Hi Katie,

    Good post, is there no way to disallow postcodes in the woocommerce. For example delivery to UK main but excluding IM, HS, ZE, JE, GY,KW?

    • Hi Matthew, you just need to not include those postcodes in any of the shipping options. If you don't have a 'Rest of the World' zone then there will be no way for people in other postcodes to order.

      • Or, you can create Exclusion Zone, put it on the TOP of your zones, select the regions which you want to exclude and DO NOT create "Shipping Method" for it.

  13. Hi,

    Thanks for everyone commenting on this thread its helped me get really far.
    I have a question? Hopefully simple

    I don't want to ship to N.Ireland (shipper costs are prohibitive) is there a way to exclude the BT post or any other post codes?

    • Hi Peter, the best way to exclude a specific country is via the WooCommerce settings relating to which countries you will sell to, and not the shipping settings. If N. Ireland isn't listed as an option there then you will need to do it via the shipping settings - just make sure N. Ireland is not selected in any of the shipping zones, and you don't have a 'Rest of the World' shipping zone.

  14. Hi Katie, really useful information - Thank you.

    I've used the postcodes to split Scotland from England & Wales on the shipping & it's worked great. However, on the products where we offer free delivery, I can't seem to be able to remove the free delivery option for Scotland whilst keeping it for England & Wales. Any ideas? Ideally I'd like to be able to replace the free delivery with a nominal charge to cover our additional costs. Is this possible?

    Any help would be greatly appreciated.

    Thanks

    Bryan

    • Hi Bryan, you would need to add Scotland as a separate shipping zone so it can have different postage options (i.e. no free shipping).

      • Hi Katie, sorry for the slow response, for some reason you've only just shown up!

        I have managed to separate England & Wales from Scotland using the postcode list you published, however when a product has 'Free shipping' attached to it as a promotion (in woocommerce products), this overrides the excluded postcodes so I'm back to square one. Is this a priority issue? It works great on all other products.

        Thanks

        Bryan

        • Hi Bryan, this sounds like a priority issue but you might need to ask WooCommerce Support about it as the logic is pretty confusing! We once had a client with a similar problem and discovered that the priorities are set from the top to the bottom, so you need to have the priority shipping option/zone at the top of the list.

    • Hi Gerard, I don't think this is needed because the Scilly Isles postcodes would be covered under the TR* wildcard which is in the list.

  15. Excellent tutorial thank you, it's been a big help. I'm a little confused on if a customer selects United Kingdom like you state in your tutorial. I have two shipping zones, one with all the England postcodes, and another with the isle of man and Scottish highland postcodes. However, as you can't have England & Wales as a destination on the settings page only UK customers can select the UK for cheaper shipping. How can I resolve this issue so they are charged the higher rate?

    • Hi Sam, the WooCommerce 'Sell to specific countries' setting only controls which countries your store will accept orders from - it doesn't affect the shipping. To determine the shipping costs, you need to add the UK & Wales shipping zone and also a separate shipping zone for Isle of Man and Scottish Highland postcodes. WooCommerce will look at the customer's postcode and charge them the correct shipping rate.

  16. Hi Katie,

    Thanks for this very useful article.

    One thing I noticed that follows on from your comments about use of S* - the same applies to N* in your list. You have "N*, NE*, NG*, NN*, NP*, NR*, NW*". London has several postcodes based on N e.g. N1*, N2*, N3*, N4*, N5*, N6*, N7*, N8*, N9*, N10*, N11*, N12*, N13*, N14*, N15*, N16*, N17*, N18*, N19*, N20*, N21*, N22*, N81* according to https://en.wikipedia.org/wiki/List_of_postcode_districts_in_the_United_Kingdom.

    Thanks again, Darryl

  17. Hi Katie

    Thanks for the information, really useful and detailed.

    Have you (or anyone reading) ever come across an issue with double digit postcodes?

    I'll try to explain as best I can... our courier has different rates for UK mainland, Scottish Highlands, Scottish Islands and Northern Ireland.

    Let's take the BT (Northern Ireland) postcode area as an example, I have created a shipping zone for Northern Ireland and tested various combinations, including just zoning BT* and also zoning each individual postcode stem BT1* through to BT94*.

    On checkout, it will apply the Northern Ireland shipping rate to postcodes with a single number digit after the area code (e.g. BT1* BT2* etc. up to BT9*) but it will fail to find a shipping zone for anything above BT9* (double figures essentially, from BT10* up to BT94*)

    This is also an issue where a postcode area is split over 2 "zones" - e.g. the AB postcode area, where the low numbers (such as AB1) are in the UK mainland but AB36 and upwards are in the Scottish Highlands. I have zoned these separately, but anything with double digits after the AB part will default to the UK mainland rate.

    I have tried the method of zoning separately any postcode area where the first letter lends itself to another area also (e.g. zoning B1*, B2*, B3* etc rather than just B* so as to not override the BT area) but this doesn't seem to work either, so I am really racking my brains for a solution.

    Has anyone ever experienced this before? Apologies for the long comment but wanted to explain the permutations in full.

    Cheers
    James

    • Hi James, I had the same problem!

      The solution (if you haven't already found it) was to drag the UK shipping to the bottom of your shipping table rates. For some reason Woocommecrce looks for the first viable option and not the logical option.

      Hope this helps!

      • Hi Katie,

        Thanks for your response, much appreciated.

        I've got a stage further in investigating this. It seems that the problem is just with postcodes that have 2 letters followed by 2 numbers (at the start) not being recognised. So examples such as S1 and BT1 are fine, but LS10 and BT10 are not recognised so no shipping methods are being offered.

        Not sure if this is an issue with the zoning of postcodes, or whether it's something to do with the validation on the postcode field in the Checkout form.

        Do you know what the solution could be?

        I am considering purchasing the advanced plugin for the Checkout form that allows you to customise the validation of particular fields, but I'm reluctant at the moment because I don't know if altering the validation is a surefire solution, and in any case I have no real coding knowledge so wouldn't know how to set up the validation to resolve the issue.

        Any thoughts you have on this would be very much appreciated.

        Thank you

        James

        • Hi James, I'm not sure but could it be something to do with the syntax of adding a wildcard postcode for the 4-digit postcodes, e.g. LS10* ?

  18. Hi Katie, really good to see some solid, detailed information on this topic which can be pretty complex!

    I think I've managed to get around my specific issue by testing YITH's 'Product Shipping for WooCommerce' plugin though. More info on that here https://docs.yithemes.com/yith-product-shipping-for-woocommerce/. Also, I found the following to be extremely useful for quickly firing in loads of postcodes https://www.geopostcodes.com

    Keep up the good work!

    Thanks,
    Richard
    (web developer)

  19. Hi...,

    Thanks for your tutorial and list.

    But, for example you have...

    SA* SE* SG* SK* SL* SM* SN* SO* SP* SR* SS* ST* SW* SY*

    S doesn't appear in any other zones (that I can see) so why not just put S* ?

    Regards

    Steve

    • Hi Steve, it's because S is the postcode for Sheffield so it can be used on its own. That's why we need wildcards after all the S'.

      • Hi,

        We noticed one user couldn't checkout because their postcode was from Sheffield. Shouldn't a S* be added? If not, then maybe S1*-S81*?

        Thank you for compiling this list - we use it to restrict postage to mainland UK as we aren't able to guarantee delivery on time for other isles.

        Thanks

        • You're right, I have missed the individual Sheffield postcodes from the list and will add them now. You can't just add 'S*' because it will include Southampton posts and other S ones too.

  20. Hi Kate,
    Great article, thanks. It's hard to find UK specific advice on all this.

    I am struggling at the moment with how best to set up my shipping zones/rates as I have 3 products which each have different restrictions. I am offering free local delivery to 2 products with limited postcodes which I have so far set up with a shipping zone using the 3 postcodes for free local delivery, and it works fine.
    However, the third product is something I'm sending UK wide for free and wish to send Internationally for 2 different rates (Europe one rate, rest of the world the second rate). When I set up these 2 further zones, it is also applying the costs and zones to the first two products, meaning effectively customers can order those products for little postage and get them shipped Internationally, when I don't offer that.
    Do you have any advice on how to set this up as I've gotten rather lost in a maze of plugins?
    Thanks!
    Laura

    • Hi Laura, this sounds like an issue with priorities. If a customer can potentially fit into multiple shipping zones then the one that is listed 1st will be applied 1st, ignoring the others. So you need to move the UK wide zone to the bottom of the list.

      • Thanks for replying Katie.
        I've adjusted the priorities, however it is still applying all the shipping rates to all the products. I wish to have 2 products limited to only be local delivery and not offered outside of 3 postcodes, while the other product can be shipped everywhere.. Is this possible to set up within the settings or does it need a plugin?

        • Hi Laura, if you want to offer some products to specific postcodes only then you might be able to do it by creating a shipping class for that product only. I'm not 100% sure if this is correct, but you can check out the official documentation here.

          If that doesn't work then you might need to use a plugin. I think the WooCommerce Restrict Shipping plugin might meet your needs, but in my experience the support from this company is non-existent, so if you can find a plugin from a more reliable company then you'd be better off. Hope this helps.

  21. Hi Michelle,

    Very useful article - Thanks.

    Of interest may be our WooCommerce courier integration that has been developed for Woo merchants who are sending medium to high parcel volumes. Parcelhub grants customers access to discounted shipping rates from a wide range of carriers, and integrates directly with WooCommerce.

    Any feedback would be greatly appreciated and if you would like any info on the integration or our API then please let me know.

    https://www.parcelhub.co.uk/woocommerce-courier-integration/

    Best regards,

    Simon

  22. Your list of UK postcodes is very useful. My only observation is that G* could include GY*, which would be a Channel Islands postcode covering Guernsey, Alderney and Sark. I'm highly unlikely to get any orders from the UK at all, However, I know a lot of 'Murphys'! My understanding is that # is used to match any numeric character. Therefore, would I be able to add G#* to limit postcodes beginning G to Glasgow?

    • Thanks Brigid - we don't need to worry about Guernsey in the list of UK postcodes because for some reason, WooCommerce treats it as a separate country. So to take orders from Guernsey, you need add it as an additional country that can order from you instead of adding the GY postcode under the UK postcodes. Yes, that should work for G#* but I haven't tested it so it's worth making sure.

Please share your thoughts...

Your email address will not be published. Required fields are marked *