WooCommerce shipping zones, shipping classes and settings explained

A shipping zone is a group of regions that share the same shipping methods and prices. A shipping class is a label you put on products so they can be charged differently inside a zone. Everything is configured under WooCommerce > Settings > Shipping, and this guide walks through each part in the order you should set it up.

How the three pieces fit together

WooCommerce shipping is built from three layers. Zones decide where you ship. Methods decide how a customer in that zone can receive the parcel and what it costs. Classes let you change the price of a method for particular products, such as bulky or heavy items.

When a customer reaches the cart, WooCommerce looks at their address, finds the first zone that matches it, and then offers only the methods set up inside that zone. If your zone and method setup is wrong, the customer sees either no shipping options or the wrong price, and both of those lose you orders.

All of this lives in WooCommerce > Settings > Shipping. That page has a tab for shipping zones, a tab for shipping settings (called Settings or Shipping options depending on your version), and a tab for shipping classes.

Step 1: Set where you sell and ship to

Before you create any zones, check WooCommerce > Settings > General. The Selling location(s) and Shipping location(s) options decide which countries can reach checkout at all. If you only sell to South Africa, set both to that country. A zone covering Namibia will do nothing if Namibia is not allowed here.

Next, make sure your products have weights and dimensions filled in on the Shipping tab of each product, because several methods and plugins depend on them. Products marked as virtual or downloadable skip shipping entirely, which is what you want for gift cards and digital files.

Step 2: Create shipping zones

Order matters more than most people expect. If a narrow zone, such as a set of postcodes in one city, sits below a wide zone that covers the whole country, customers in that city will match the wide zone first and never see the local options. Put the most specific zones at the top.

Below your zones there is always a built-in zone called Locations not covered by your other zones. Customers whose address matches nothing end up here. If it has no methods, they cannot check out, so either add a method to it or make sure your selling locations already exclude those countries.

  1. Go to WooCommerce > Settings > Shipping and click Add zone.
  2. Give the zone a name that only you will see, such as South Africa or Neighbouring countries.
  3. Under Zone regions, pick countries, provinces or states. You can also limit a zone to postcodes with the Limit to specific ZIP/postcodes link. Ranges and wildcards work, for example 2000...2200 or 20*.
  4. Click Add shipping method and choose the methods that zone should offer (covered in the next section).
  5. Save the zone, then drag zones into the order you want. WooCommerce checks them from the top and uses the first one that matches.

Step 3: Choose shipping methods

MethodWhat it doesTypical use
Flat rateCharges a fixed amount, with optional formulas based on item count, cart cost or percentageA standard courier price for a whole zone
Free shippingCosts nothing, but can require a minimum order amount, a coupon, or bothFree delivery over a threshold or with a promo code
Local pickupLets the customer collect the order from you instead of having it shippedA shop, a studio or a collection point

Core WooCommerce comes with three methods. Each zone can have several, and the customer chooses between them at checkout.

  • Flat rate: the cost field accepts plain numbers and simple formulas. [qty] multiplies by the number of items, [cost] uses the cart total, and [fee percent="10" min_fee="20"] charges a percentage with a minimum. There is also a tax status option, so you can decide whether the shipping charge itself attracts tax.
  • Free shipping: under Free shipping requires, choose A valid free shipping coupon, A minimum order amount, or one of the combined options. Tick the box about applying the minimum before coupon discounts if you want the threshold judged on the pre-discount total.
  • Local pickup: set a cost of zero or a small handling fee, and use the title to say where to collect, because the customer reads that title at checkout.

Step 4: Create shipping classes

Shipping classes are for products that cost more or less to send than your usual parcel. Typical examples are bulky items, heavy items, fragile items and tiny items that fit in a satchel.

  1. Go to WooCommerce > Settings > Shipping and open the Classes tab.
  2. Click Add shipping class, then enter a name, a slug and a description. Save.
  3. Open a product, go to the Shipping tab in the Product data box, and pick the class from the Shipping class drop-down. Update the product.
  4. Go back to each zone's flat rate method. Below the main cost you will now see a field for each class, plus one called No shipping class cost.
  5. Enter the class cost for each, then choose a Calculation type: Per class charges each class once, or Per order charges only the most expensive class in the cart.

A worked example

These numbers are made up to show the logic, so replace them with your own courier quotes. Imagine a store selling candles and a few large ceramic planters, shipping within South Africa and to nearby countries.

Zone 1 is South Africa, at the top. It has a flat rate of R65 for the normal items, a Bulky class cost of R140, and a free shipping method that applies at a minimum order of R900. Local pickup is added at no charge for customers near the workshop.

Zone 2 is Namibia and Botswana. It has a single flat rate of R280, with the Bulky class set to R450 and no free shipping method, because the courier cost is too high to absorb.

The built-in fallback zone is left empty, and Shipping location(s) is restricted to those three countries, so nobody can reach checkout from a country you do not serve.

A customer in Johannesburg who buys three candles pays R65 for the flat rate. If the same customer adds one planter and the calculation type is Per order, they pay R140, because the Bulky class is the most expensive. With Per class, they pay R65 plus R140, which is R205. Decide which one matches how your courier actually bills you before you go live.

The Shipping options settings

The general shipping settings sit on their own tab and change how the cart and checkout behave.

  • Enable the shipping calculator on the cart page lets customers enter an address and see the price before they start checkout. Leave it on if you ship to more than one zone.
  • Hide shipping costs until an address is entered stops WooCommerce from showing a guess before it knows where the parcel is going. This avoids customers seeing a number that changes later.
  • Shipping destination decides whether shipping is based on the shipping address, the billing address, or forces the billing address. The default shipping address option is right for most stores.
  • Debug mode makes WooCommerce show rates every time without using its cached results. Switch it on while you test, then switch it off.

Common mistakes

  • Zones in the wrong order, so a wide zone swallows addresses that should have matched a narrow one.
  • Forgetting to add a method to a zone. A zone with regions but no methods shows the customer no shipping at all.
  • Testing without clearing the cart session. WooCommerce stores calculated rates, so after changing a zone, empty the cart, add the product again or turn on debug mode before you judge the result.
  • Setting a free shipping minimum without checking it against your margin. A threshold that is too low means you pay the courier on small orders.
  • Assigning classes to products but never entering class costs in the flat rate. The class then does nothing.
  • Leaving product weights blank when a plugin or rule relies on them, which gives wrong or zero rates.
  • Letting the Free shipping method and a flat rate both appear for the same order. Customers will pick the free one, so hide the flat rate with a plugin or a coupon-based rule if that is not what you want.

After checkout: tracking the parcels you priced

Zones and classes only decide what the customer pays. Once an order ships, they will want to know where it is, and WooCommerce has no tracking number field of its own. You add one with an extension such as the official Shipment Tracking extension, or a plugin like Advanced Shipment Tracking for WooCommerce.

If you want parcel progress handled for you, TrackIt For Business connects to a WooCommerce store so completed orders become tracked shipments automatically, across 3,000+ carriers, while you keep the couriers you already use. Customers can get a branded Apple Wallet or Google Wallet pass that updates as the parcel is scanned. It does not change your shipping zones or rates.

Questions fréquentes

What is the difference between a shipping zone and a shipping class in WooCommerce?

A zone is about the customer's location and decides which shipping methods they see. A class is about the product and lets you charge more or less for certain items inside a method. You use both together: the zone picks the method, and the class adjusts the price.

Why does my WooCommerce checkout say there are no shipping options?

Usually the customer's address does not match any zone, or the zone that matched has no shipping method added. Check WooCommerce > Settings > Shipping, make sure the region is inside a zone, that the zone has at least one method, and that the country is allowed under Settings > General.

Can I offer free shipping only over a certain amount?

Yes. Add the Free shipping method to the zone and set Free shipping requires to A minimum order amount. Enter the threshold. Customers who reach it see the free option at checkout, and the flat rate can stay available below it.

How do I charge more for heavy or bulky products?

Create a shipping class under WooCommerce > Settings > Shipping > Classes, assign it to those products on the Shipping tab, and enter a class cost in each zone's flat rate method. Then choose Per class or Per order for the calculation type.

Does TrackIt For Business set up my WooCommerce shipping rates?

No. Your zones, methods and classes stay in WooCommerce. TrackIt For Business tracks the parcels after you ship them: completed orders import automatically, and it follows each one across carriers. It costs $14.99 a month, plus R1.50 the first time a package's Wallet passes are generated.

WooCommerce shipping zones and classes explained | TrackIt