Skip to content

Cookie settings

Choose which kinds of cookies you allow. You can change your choice at any time via Cookie settings at the bottom of every page. Privacy statement

Necessary

Always on

Needed to log in, keep your cart and remember your choices. These are always on.

Which cookies?
  • weboke_sessie, weboke_klant, weboke_remember: your session and staying logged in
  • weboke_basket: your cart
  • wkBtwIncl: showing prices with or without VAT
  • wok_cookies: your cookie choice, 12 months

Measures which ad leads to a visit or order, so we do not pay for ads that do nothing.

Which cookies?
  • Google Ads via Google Tag Manager (_gcl_au, _gcl_aw), up to 90 days
  • OpenAI Ads, ads in ChatGPT
  • wok_aff: which partner referred you to us (affiliate programme), 60 days

4.6

Country and language

Each country has its own site, with prices and VAT for that country.

View

Module 4 · 4.3

Shipping zones and shipping methods

Module 4: VAT, shipping and payments · Reading time: 10 minutes

Learning objective: After this lesson you can set up shipping zones and shipping methods that fit your shop plan, predict which zone a customer gets and avoid the usual mistakes.

Key concepts: shipping zone, region (country, province, postcode), order of zones, first matching zone, locations not covered by your other zones, shipping method, flat rate, free shipping (minimum amount, coupon), local pickup, shipping class, shipping locations, VAT on shipping costs

How WooCommerce chooses a shipping price

A customer fills in their address. WooCommerce then has to decide: which shipping options can this customer choose, and what do they cost? It uses two layers for this:

  1. A shipping zone is an area: one or more countries, provinces or postcodes. For example "Netherlands" or "Benelux".
  2. Within a zone there are shipping methods: what the customer can choose, with a price. For example "Standard (PostNL) €4.95" and "Free from €50".

The most important rule: WooCommerce goes through the zones from top to bottom and takes the first zone that matches. The rest is no longer checked, even if a lower zone would match more precisely. The source code does exactly that: zones sorted by order, then the first one. That is why you put specific zones (a postcode area, a single country) above general zones (the whole EU).

At the bottom there is always a fixed zone: Locations not covered by your other zones. A customer who matches no zone at all ends up there. If that zone has no methods, the customer sees a message that no shipping options are available, and cannot place an order.

Where do you sell, and where do you ship to?

Two settings under WooCommerce > Settings > General matter for your zones:

  • Selling location(s): which countries appear in the address form.
  • Shipping location(s): which countries you ship to.

Limit your sales to the countries in your shop plan (lesson 1.3). A Swiss customer who can place an order while you don't know how to handle customs and VAT outside the EU is not an opportunity but a problem. And keep that choice in line with what you say at the start of the ordering process about delivery restrictions (lesson 5.1).

Setting up zones for Theehuis Example

Theehuis Example ships within the Netherlands, to Belgium and Germany, and nowhere else:

OrderZoneRegionsMethods
1NetherlandsNetherlandsStandard €4.95; free from €50; pickup in Utrecht
2Belgium and GermanyBelgium, GermanyStandard €9.95; free from €100
Locations not covered by your other zones(everything else)none

If you later want a separate postcode area (for example an island surcharge), create a zone with the country and the postcodes, and put it above "Netherlands". For postcodes, WooCommerce supports a range with three dots (1000...1099) and a wildcard with an asterisk (35*). If that zone sits below "Netherlands", it will never be used: every Dutch postcode already matches the zone above it.

The shipping methods

WooCommerce has three built-in methods:

  • Flat rate: a fixed amount per order, optionally with a surcharge per shipping class (see below). You can also calculate with [qty] (quantity) and [cost] (amount), for example 4.95 + 0.50 * [qty].
  • Free shipping, with a condition: a minimum amount, a coupon that grants free shipping, either of these, or both. There is an option to apply the minimum amount before or after discount. Choose deliberately: with "before discount", a customer with a 20 percent discount code can still get free shipping.
  • Local pickup: the customer collects the order. With the checkout blocks you set up one or more pickup locations.

Delivery services such as parcel carriers often have their own plugin that creates labels or fetches rates. That is handy, but it is one more extension to keep up to date (WordPress course, lesson 5.3).

Shipping classes

A shipping class groups products with the same shipping costs. Theehuis Example creates the class "Fragile" for teapots. In the "Flat rate" method you then enter a surcharge per class, for example €3 extra for "Fragile". Under Calculation type you choose Per class (each class in the cart gets its surcharge) or Per order (only the surcharge of the most expensive class). With two teapots and a packet of tea it comes to €4.95 + €3: once, because there is one "Fragile" class in the cart. If you want to charge per teapot, use 3 * [qty] in the surcharge.

VAT on shipping costs

Shipping costs are not a separate service next to the product, but part of the delivery. In the tax settings (lesson 4.1) you use Shipping tax class to decide which rate applies; by default WooCommerce follows the products in the cart. In the tax rates table the Shipping checkbox must be ticked for the rate, otherwise WooCommerce charges no VAT on shipping. If you show prices including VAT, enter shipping costs the way WooCommerce expects them: amounts in the shipping methods are excluding VAT. €4.95 then becomes €5.99 at 21 percent. If you want the customer to pay exactly €4.95, enter €4.09 (4.95 / 1.21). Check it with a test order.

In practice: this is how it looks in WooCommerce

  1. Settings > General: sell and ship only to the Netherlands, Belgium and Germany.
  2. Settings > Shipping > Shipping zones: Add zone, name "Netherlands", region Netherlands, add methods.
  3. Second zone "Belgium and Germany". Drag the zones into the right order: specific above general.
  4. Shipping classes: create "Fragile" and select it for the teapots (Product data > Shipping).
  5. Test with one address per zone in a private window: which methods do you see, and what do they cost including VAT?

Summary

  • A zone is an area; within it you choose methods with a price.
  • WooCommerce takes the first matching zone from the top: put specific zones at the top.
  • The fixed bottom zone catches everything else; without methods, nobody there can order.
  • Flat rate, free shipping (with a condition) and local pickup are built in; shipping classes add surcharges per type of product.
  • Amounts in shipping methods exclude VAT; tick "Shipping" for your tax rates and test the final price.

Quiz

1. A zone "Utrecht city" with postcodes 3500...3599 sits below the zone "Netherlands". What happens to a customer with postcode 3511?



2. A Norwegian customer matches no zone, and the bottom zone has no methods. What do they see?



3. You show prices including VAT and enter €4.95 for "Flat rate". What does the Dutch customer pay (21%, shipping taxable)?



4. What do you use a shipping class for?



Exercise

Exercise A4.3: Which shipping zone? (case). A shop has these zones, in this order: 1 "Netherlands" (NL), 2 "EU" (all EU countries), 3 "Benelux" (BE, LU), and "Locations not covered by your other zones" without methods. For each customer, choose which zone WooCommerce uses (Netherlands / EU / Benelux / Other locations, no shipping):

  • a customer in Utrecht;
  • a customer in Antwerp;
  • a customer in Vienna;
  • a customer in Zürich.

The program compares your choices with a fixed key; nothing is looked up. Green if everything is right, orange for one mistake, red for more. If you make a mistake, you get a hint.

A question for yourself (not checked): which zone in this shop is never used, and how would you change the order?

Exercise A4.3: Which shipping zone? (case)





What you enter and what we find isn't stored. Your browser remembers your answers and whether you've passed the exercise. If you're signed in, we only save that you got the exercise (almost) right in My courses; you can delete that there too.

Further reading

One moment…

Set up your domains

For each domain, arrange the nameservers, the link to your hosting and who becomes the owner.

Loading your domains…