Thread tagged as: Question, Configuration, Shop

Shop Shipping Zones


We are in the process of building a shop for a client who has requested we have the following shipping rules:

  • UK - Orders up to £35.00 are £2.95
  • UK - Orders over £35.00 are free
  • UK - Express delivery can be chosen for £7.95
  • Global - Flat rate of £8.00

The shipping zones we have in place are:

  • Worldwide [default] with no countries selected as a fallback
  • UK with the United Kingdom selected

The shipping methods set are:

  • Standard (orders up to £35.00) only available in the UK shipping zone with priority of 1
  • Free (orders over £35.01) only in the UK with a priority of 1
  • Express only in the UK with a priority of 2
  • Global set to the Worldwide shipping zone, not the UK.

The issue we are having is how to set up the cart and checkout process in a way that is simple to the customer. We do not want global customers to see UK rules and vice-versa. Nor do we want to display potentially misleading shipping prices in the cart total area.

On the Nest Example page there is a paragraph that says:

Remember that if you also have different shipping zones set up, you need to know the location of your customer to be able to show accurate shipping information. You could have a select menu in your cart to allow them to set this earlier in the process or detect it from their browser location – but make sure you give them the option to change it!

How would this be done, and how does the shop work out what shipping zones to use? Is it calculated using the billing / shipping addresses set? How would this work with guest enabled checkout processes?

It's possible that we are making this more complicated than necessary - any insights into how we could set this up would be of great help.


James Wigger

James Wigger 0 points

  • 4 years ago
Drew McLellan

Drew McLellan 2638 points
Perch Support

The shipping zones are based on the shipping address.

If you want to explicitly set the location, you can also do that with perch_shop_location_form(). If the location isn't set from that, it's taken from the address.

Is there any way around the issue that at this stage the user has not entered their shipping address (if they are a guest) - we are on the cart / basket page before checkout and payment.

Similar to how Blacks and other shops display the delivery country before the main addresses are added later: Screenshot

If this isn't possible we can move the delivery options to a later stage once the addresses are set.

Drew McLellan

Drew McLellan 2638 points
Perch Support

Yes, you simply need to set the location before you can show a shipping price.