Select Page

By far, the trickiest aspect of Woocommerce is shipping, this is where most people get tripped up because it isn’t the most intuitive thing to configure. However, once you’ve figured out how to set up Woocommerce shipping you can build some advanced rules easily without having to buy additional plugins.

The free version of Woocommerce calculates shipping per product not per weight so if you want weight based shipping there are addition paid plugins available. The free version is more than enough for most people to get started. You’ll want to create a shipping class for your product types or weight bracket and then create rules for each shipping class in shipping locations.

My goal for this tutorial is to show you step by step how to set up your shipping rules for your products, by the end of this guide, you’ll be able to create different shipping rules for different locations and set up features such as free shipping when you spend over a specific amount and local pickup.

Step one – Split up your products into shipping classes

The first thing you need to do is split up your products into shipping classes based on weight because the more something weights the more it costs in shipping.

For example, if I ran a brewery and I wanted to sell six-packs, cartons, t-shirts, and glasses, these would be my shipping classes because they all have different weights.

If I sell coffee online I would have a shipping class for each weight of coffee that I sell eg, 250 grams, 500 grams, and 1 kilo and a shipping class for mugs and for other equipment they might need.

If your product increase by weight increments you could set up your shipping classes for each increment.

Step two – determine shipping costs for each shipping class

This will vary depending on which shipping company you use, but you’ll need to calculate how much shipping will cost for each product to be shipping to every location you service and how much to add each time you add an additional item to the cart.

Most shipping companies will allow you to bundle products together, and charge less per kilo as the total weight gets heavier, for example, Sendle charges $21.95 for 10 kilos but $28.95 for 25 kilos.

So that means your shipping rules should reflect that, as someone ads more products to the cart how much on average does the cost of shipping increase.

For example, it might cost me $5 to ship a pack of fudge, but if someone buys two packages of fudge it doesn’t me $10 to ship it, it only costs me $8, which means on average for every additional pack of fudge I sell, it only costs an extra $2.

You’ll need to do this for every product and every location that you sell to.

For example, If I sold hot sauce from a store in Brisbane and we use Sendle again for our shipping method. As you can see, it is significantly cheaper to ship products within my own city compared with other cities, so you’ll need to calculate this too.

Many stores such as florists offer express shipping for their customers, so if this is something you want to offer as well you’ll need to calculate how much you’re charging for shipping for express shipping for each product class and location.

A great incentive to offer your customers if free shipping when you spend a certain amount, this can help increase revenue without having to spend more on marketing, the best way to do this is to calculate how much more profits you make by increasing the price and would it justify offering free shipping.

Step three – set your Shipping Classes

Login to your WordPress website and head to the dashboard

  • Hover over Woocommerce and click Settings
  • Click Shipping tab
  • Click Shipping Classes

Here is where we add the shipping classes that we created in step one.

This information will then get used when we create our products where we can choose the right shipping class for that product.

Step four – Setup Shipping location

Now click the shipping location sub-tab and create a location for each area where you have different shipping costs.

For example, if I had a store located in Melbourne and sold my products worldwide, I would create one shipping location for Melbourne, one for Australia and another for Worldwide, you can click edit on each location to change how much you’re charging for each area.

You can drag and drop each location to rearrange its order, I’ve found that you need the smallest location at the top, otherwise it can cause issues.

When you create a location, you can give it a zone name, this isn’t visible to the public but is for your reference, next you choose a zone region, you may not be able to choose your city, so you might have to go the next level up and choose your state.

If I’m building a store located in Brisbane, I won’t be able to choose Brisbane as a zone region, so I’d have to select the next step up and choose Queensland which is the state that Brisbane is in.

However, because there are a lot of other cities within Queensland other than Brisbane, so what we can do is limit it even further and restrict the zip/postcodes, so in the case of Brisbane, the postcode range is between 4000 and 4179, however, to tell Woocommerce to restrict the shipping rules we need to put in “…” between the numbers so the postcode would become 4000…4179.

Next, we can add shipping methods, there are three main shipping methods we can choose, Flat rate, Local pickup, and Free shipping.

Woocommerce Flat rate shipping

Flat rate is the main method we’ll be using to build out our shipping rules.

Woocommerce has a couple of shortcodes available to help us calculate, the main one we’ll be using in this guide is [qty].

The [qty] shortcode is used to represent the number of products in that specific shipping class.

So let’s say I sell succulents online, and I’ve calculated it costs me $5 to ship and an extra $3 for each additional succulent they add to the cart, the calculation would look like this “2 + ( 3 * [qty] )” (in Woocommerce “*” represents multiplication). If they add one succulent to the shopping cart, because there is only one product in that shipping class [qty] = 1, so the equation would look like “2 + ( 3 x 1 ) = 5”. Now if they were to add an additional product to the cart the equation would look like “2 + ( 3 x 2 ) = 8”, so every time [qty] increases by one, we add an extra $3 to the shipping cost.

If I calculate that it costs me $5 to ship a succulent and an additional $5 for every extra succulent I ship, the equation would look like “5 * [qty]”, so every time the [qty] increases by one, an additional $5 is added to the shipping cart.

What if I offer additional shipping methods like express?

You’ll need to create multiple Flat rate shipping methods inside that shipping zones.

So you can create one Flat rate shipping method and call it standard shipping and another Flat rate shipping method and call it express.

You will have to set up the shipping rules for each individual shipping method.

Calculation type

There are two calculation types that you can choose, per order and per class.

Per order will calculate the most expensive shipping rate out of each shipping class in your shopping cart and only charge you that one price, so let’s say you sell meat online and someone orders a 500g steak and 250g fillet and you’ve created a separate shipping class for each one and you’ve set the shipping rates for the 500g fillet as $5 and the shipping rate for the 250g fillet as $4, the shipping rate for both pieces of meat will be $5 because it’s the most expensive shipping class.

Per class will add up the shipping for every shipping class in your cart, so let’s say you sell chocolate online and you sell a 1kg block and a 250g block and you charge $7 shipping for the 1kg block and $4 shipping for the 250g block, then the amount of shipping that you’ll charge your customer will be $11 because it will add up all the shipping classes for all the products in the cart.

Local pickup

Local pickup gives you the option to let your customers pick up their products from your store directly.

Woocommerce lets you charge a fee for this, however, most people tend to offer local pickup for free.

If this is an option you wish to offer, make sure that you create a shipping location and restrict it to your city as you don’t want to be offering local pickup to everyone in the country or world.

Free shipping

One of the best ways to get customers to purchase in larger quantities is to offer free shipping when you meet certain criteria, customers hate paying for shipping and free shipping can be a bigger incentive than a special price on the product.

There are a couple of options that Woocommerce gives you when creating a free shipping method which are variations of spending a minimum amount and using coupon codes.

If you want to offer free shipping with a coupon code, you’ll need to make sure you have that option activated in your shipping location.

Step five – Countries you ship to

Now you’ve set up all your shipping methods, we’re going to click the general tab in the Woocommerce settings page and scroll down to General options.

If you ship to your own country exclusively or only a couple of countries, click the Selling location(s) drop down and click Sell to specific countries, and enter the country/countries you sell to.

If you sell to all countries except for a couple, in the same drop down click Sell to all countries, except for… and enter in all the countries you aren’t shipping to.

The will restrict the countries available on the checkout page only to the countries you sell to.

Flat rate shipping examples

I wanted to create some examples and case studies that you could look at so you can see how you could use Woocommerce shipping in your own business.

Example 1

Nick runs a successful Youtube channel and wants to start selling his own merch, he currently has a t-shirt and a hoodie.

He calculates that it costs his $5 a shirt to ship it anywhere in America and an extra $3 for each additional shirt that’s added to the cart but it costs $10 to ship his shirts worldwide and an additional $5 for every shirt they add to the cart.

He also calculates that it costs him $8 to ship a hoodie anywhere in America and an extra $5 of every additional hoodie added to the cart, but it costs him $10 to ship that hoodie worldwide no matter how many are added to the cart.

So Nick creates 2 shipping classes, one for the shirt and one for the hoodie and then create 2 shipping locations, one for America and one worldwide.

He then adds a Flat rate shipping method to each shipping location and for shirts sold in America he writes “2 + ( 3 * [qty] )” and for hoodies, he writes “3 + ( 5 * [qty] )”.

For worldwide shipping location, he adds “5 + ( 5 * [qty] )” for shirts and for hoodies he adds “10 * [qty]”.

Nick doesn’t change anything in the General tab of Woocommerce because he wants every country to be available at checkout.

Example 2

Jenny makes her own peanut butter and wants to create an online store with Woocommerce, she wants to sell it exclusively in Australia and her store is located in Sydney, she wants to offer express shipping as an option and calculates that it costs her $4 for standard shipping for her peanut butter in Sydney and an extra $2 for each additional jar, $8 for express shipping in Sydney and $3 for each additional jar.

For everywhere else in Australia shipping costs $6 for standard shipping and $3 for each additional jar and $10 for express shipping and $4 for each additional jar.

So Jenny heads to the General tab and restricts the shipping locations to Australia.

Because Jenny has one product size she doesn’t need to create any shipping classes, but she creates 2 shipping locations, the first she calls Sydney and enters the shipping location as New South Wales and restricts the postcodes to 2000…2234 which is the postcode range for Sydney, the second shipping location is Australia.

In the Sydney shipping location, she creates 2 flat rate shipping methods, the first she labels and standard shipping and the second she labels express shipping, in the standard shipping method, she adds “2 + ( 2 * [qty] )” and in the express shipping method she adds “5 + ( 3 * [qty] )”.

For the rest of Australia, she creates the same 2 shipping methods and labels them standard and express, she then adds “3 + ( 3 * [qty] )” for standard and then adds “6 + (4 * [qty] )” for express shipping.


I’m a massive fan of discounted shipping.

People really hate paying for shipping and because you’ve eliminated a lot of the traditional overheads and generate more profit per sale than if you used traditional retail spaces, I believe it is better for most business to eat some of the costs of shipping into your profits.

Because you’ve increased the number of profits you generate, you can discount the amount of shipping your customers pay and still generate more revenue than other ways of generating sales with your product.

Woocommerce shipping does have a little bit of a learning curve, however, once you’ve figured out some of the basics, you’ll find that you can create advanced rules for your store and you may even be able to avoid spending money on advanced plugins.