Ecommerce

WooCommerce Shipping Setup: Zones, Rates and Classes

WooCommerce 2.6 changed how shipping works, with zones at the centre. This guide walks through setting up zones, rates and classes so customers see the right price.

Quick answer: In WooCommerce 2.6 and later, shipping is built around shipping zones. You create a zone for each group of locations you ship to, then add shipping methods (flat rate, free shipping or local pickup) to each zone. Shipping classes let you charge different rates for different kinds of products, such as heavy or bulky items, and flat rate cost formulas let you charge per item or as a percentage of the order. Zones are matched from top to bottom, and anything that does not match falls into the catch-all zone for the rest of the world.

Shipping is one of the places online shops lose sales. A surprise delivery charge at checkout, or a rate that makes no sense for the order, is enough to make a customer close the tab. It also works the other way: charge too little and you quietly lose money on every heavy parcel.

WooCommerce 2.6, released in June, replaced the old shipping settings with a much more flexible system. If you set up your store before that, your old methods still work, but the new approach is worth moving to. This guide covers how it fits together and how to set it up properly.

How WooCommerce shipping works now

There are four building blocks:

  • Shipping zones: groups of locations, defined by country, state or county, and postcode.
  • Shipping methods: the options a customer can choose within a zone, such as flat rate, free shipping and local pickup.
  • Shipping classes: labels you give to products so they can be charged differently, such as “Bulky” or “Small parcel”.
  • Shipping options: store-wide settings, such as whether to show a shipping calculator on the cart page.

When a customer enters their address, WooCommerce checks the zones in order, finds the first one that matches, and shows the methods you have added to that zone. Shipping classes then adjust the price of those methods based on what is in the basket.

Before you start: plan your rates

Do this on paper before touching the settings. Answer these questions:

  1. Where do you ship? Domestic only, a few nearby countries, or worldwide?
  2. How do your carriers charge? By weight, by parcel size, by destination, or a mix?
  3. Which products cost more to send? Anything heavy, fragile, oversized or restricted.
  4. Do you want to offer free shipping? For all orders, above a threshold, or with a coupon?
  5. Can customers collect? If you have a shop, warehouse or office, local pickup is worth offering.

A simple, predictable structure usually converts better than a perfectly accurate but confusing one. Customers like to know the price before they reach checkout.

Step 1: Create your shipping zones

Go to WooCommerce > Settings > Shipping > Shipping Zones and click Add shipping zone.

For each zone, set:

  • Zone name: something you will recognise, such as “UK mainland” or “Europe”. Customers do not see this name.
  • Zone regions: the countries or states it covers. You can add several.
  • Postcodes: optional, under “Limit to specific ZIP/postcodes”. Use these to split a country into smaller areas.

Postcode limits accept a few formats:

  • An exact postcode, one per line.
  • A wildcard, such as BT* for every postcode starting with BT.
  • A numeric range, such as 90210...99000, for countries with numeric codes.

Zone order matters

Zones are matched from top to bottom, and a customer is placed in the first zone that fits. Put your most specific zones first. For example, if you charge more for the Scottish Highlands and islands, create that zone with the relevant postcodes and place it above the general “UK mainland” zone. Drag and drop zones to reorder them.

The catch-all zone

At the bottom of the list is a zone for locations not covered by your other zones. Any address that does not match a zone ends up here. If you do not ship internationally, leave it without methods, and customers outside your zones will see a message that no shipping is available. If you do ship everywhere, add a method here with a rate that covers your most expensive destinations.

Step 2: Add shipping methods to each zone

Open a zone and click Add shipping method. WooCommerce includes three methods out of the box.

Flat rate

The most flexible core method. You set a cost, and it can be a plain number or a formula. Useful placeholders include:

  • [qty]: the number of items in the basket.
  • [cost]: the total cost of the items.
  • [fee percent="10" min_fee="3"]: a percentage of the order value, with an optional minimum and maximum.

Some examples:

  • 4.95: a fixed price for any order.
  • 3.00 + ( 1.00 * [qty] ): a base charge plus a per-item charge.
  • [fee percent="8" min_fee="5" max_fee="25"]: 8% of the order value, never less than 5 or more than 25.

You can add more than one flat rate to a zone, for example “Standard delivery” and “Next day delivery”, each with its own title and cost. Customers then choose at checkout.

Free shipping

Free shipping can be unconditional or tied to a rule. The “Free shipping requires” setting offers:

  • N/A: always available in this zone.
  • A valid free shipping coupon: only when the customer uses a coupon with free shipping enabled.
  • A minimum order amount: only above a threshold you set.
  • A minimum order amount OR a coupon.
  • A minimum order amount AND a coupon.

A minimum order threshold is a common way to lift average order value. Set it a little above your current average order, and show it clearly on product and cart pages so customers know how close they are.

One point to watch: if free shipping is available, WooCommerce still shows your other methods alongside it. If you only want free shipping to appear once the threshold is met, you may need a small code snippet or plugin to hide paid rates.

Local pickup

Lets customers collect their order. You can set a cost, which is usually zero, and a title such as “Collect from our shop”. Add it only to zones where pickup makes sense, typically your local area.

Step 3: Set up shipping classes

Shipping classes let you charge extra for certain products without building a separate zone for them.

Go to WooCommerce > Settings > Shipping > Shipping Classes and add a class for each type of product that needs different pricing, for example:

  • Bulky: large items that need a pallet or two-person delivery.
  • Heavy: anything over a weight your standard rate does not cover.
  • Letter: small, light items that fit through a letterbox.

Then assign classes to products. Edit a product, open the Shipping tab in the Product Data box, and choose the class. For variable products, you can set a class on each variation. To update many products at once, use bulk edit from the product list.

Using classes in flat rates

Once classes exist, each flat rate method shows extra cost fields:

  • A cost for each shipping class.
  • A No shipping class cost for products without a class.
  • A Calculation type setting.

The calculation type decides how classes combine:

  • Per class: charge shipping for each shipping class individually. A basket with one bulky and one standard item pays both costs.
  • Per order: charge shipping for the most expensive shipping class only. The basket pays the highest class cost.

The class costs are added to the main method cost, and they accept the same formula placeholders, so 10 * [qty] in the Bulky field means 10 extra for each bulky item.

Step 4: Review the shipping options

Under WooCommerce > Settings > Shipping > Shipping Options, check:

  • Enable the shipping calculator on the cart page: usually worth turning on, so customers can see costs before checkout.
  • Hide shipping costs until an address is entered: useful if your rates vary a lot by location.
  • Shipping destination: whether shipping goes to the billing address by default, or the customer must choose.

Weight-based and live carrier rates

The core methods do not calculate by weight. If your costs depend heavily on weight or you need several conditions at once, there are two main routes:

  • Table Rate Shipping: an official extension that adds rules based on weight, item count, price and shipping class, within each zone.
  • Carrier extensions: official extensions for carriers such as UPS, FedEx, USPS and Royal Mail fetch live rates using the product weights and dimensions you enter.

Live rates are accurate but can produce odd-looking prices and depend on the carrier’s service being available. Many smaller shops find a well-planned flat rate structure with classes is simpler and converts just as well.

Moving from the old shipping settings

If your store predates 2.6, your previous methods appear as “legacy” options. They keep working for now, but they will not get new features. To move over:

  1. Recreate your rates as zones and methods on a staging copy of the site.
  2. Test with addresses from each zone and baskets with different classes.
  3. Disable the legacy methods once the new setup is live.

Test before you go live

Place test orders with:

  • Addresses in each zone, including edge cases such as remote postcodes.
  • Baskets with and without each shipping class.
  • Orders just below and just above any free shipping threshold.
  • Coupons that grant free shipping.

Check the cart, checkout and order emails show what you expect. A clear checkout matters just as much as the price, which we cover in our article on guest checkout.

FAQ

Can a customer be in more than one zone?

No. WooCommerce uses the first matching zone from the top of the list, so order your zones from most specific to least specific.

Can I charge shipping per product?

Yes, with shipping classes. Give the product its own class and set a cost for that class in each flat rate method.

How do I show delivery times?

Put them in the method title, such as “Standard delivery (3 to 5 working days)”, so customers see them when choosing.

Should shipping costs appear on product pages?

Yes, at least a short summary or a link to a delivery page. Pair it with a clear return policy page so buyers know the full cost and terms before they reach the basket.

Turn shipping into a selling point

Clear, fair delivery pricing removes one of the biggest reasons shoppers abandon their basket. If you want help planning your rates or setting up WooCommerce shipping properly, see how we help online shops turn visitors into customers.

About the author

Imran M

Leave a Reply

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

Ready to improve your website?

Let's build a faster, higher performing website.