Table Rate Shipping v2

Table rate shipping makes it possible for you to create complex shipping rules for shipping your products all over the world. You can define multiple rates based on the product’s destination, have multiple rates per zone, and add rules based on product weight, number of items, shipping class, and price.

Every store is individual, with its own products and shipping needs, so every setup is different. This guide will introduce you to the concepts behind Table Rate Shipping, guide you through the process of setting it up, and provide some real life examples that will demonstrate the concepts in action.

How it Works ↑ Back to Top

When your customer checks out the items in their basket, the plugin checks the destination of the items, and then uses the table of rates you have created to calculate the total shipping. Each destination can have its own rules, and multiple sets of rules, based on your shipping requirements.

In order to calculate shipping correctly, you need to create your shipping zones and your shipping rules. The plugin will take care of all of the calculations for you.

Getting Started ↑ Back to Top

Setting up Table Rate Shipping requires some thought and planning on your part. Before you even get started with the plugin, you will need to do the following:

1. Set up your shipping classes
2. Get your shipping rates from your chosen courier
3. Determine your shipping zones

Create Your Shipping Classes ↑ Back to Top

Shipping classes are used to indicate products that are similar for shipping. For example, you may have a shipping class called small to apply to bookmarks, but medium for books. You may wish to also apply your small class to pencils and pens. All of these items are similar in size and weight, so can have the same shipping rules applied to them.

By setting up shipping classes you can create tables of rates that apply to different shipping classes. This gives you considerable flexibility when creating your shipping methods.

This guide will walk you through setting up shipping classes.

Setting up the Plugin ↑ Back to Top

Create Your Shipping Zones

With your classes created you can create Shipping Zones. Shipping Zones are different geographical regions that your products will be shipped to. These will be different depending on where you are in the world. If you’re based in the UK, for example, you may set up your zones as follows:

  • Zone 1: UK and Northern Ireland
  • Zone 2: EU Countries
  • Zone 3: Rest of the World

Once you have created your zones you can create tables of rates for each of them. To set up your zones:

  1. Navigate to WooCommerce > Shipping Zones
  2. Give your Shipping Zone a name
  3. Choose the Type of zone. You have the following options:
    • One or more countries
    • One or more states or countries
    • One or more zip or post codes. This field accepts wildcards so that you can include a postcode region. For example, SW* would include the south-west London region, while NE* would include the Newcastle-upon-Tyne region. You can also ship to ranges. An example for zipcodes would be 451-459. Another example, for non-numeric ranges would be KH17-KH. Each individual range or wildcard needs to be on its own line.
  4. Click Add Shipping Zone

Create as many shipping zones as you require. Your table of Shipping Zones will look something like this:

a screenshot of the table of zones

Example Setup with Zip Codes

If you wanted to have a few zip codes setup with Zone 1, and the rest of the country as Zone 2, the first zone needs to be setup with ‘One or more zip or post codes’ as shown below:


Zone 2 also needs to be setup as ‘One or more zip or post codes’ with the country selected and an asterisk “*” to catch all the rest of the postcodes:


Please note: In this example, if you set Zone 2 to being based on country then it will ignore Zone 1.

Create a Table of Rates ↑ Back to Top

Next, you need to create shipping methods and tables of rates for your different Shipping Zones. Each zone can have as many different shipping methods as you require. Let’s take a look at how to set one up.

1. Add a Shipping Method

With your Shipping Zones open, click on the name of the Shipping Zone you wish to add rates for.

a screenshot of the table of zones

Select the drop down to chose the shipping method which should be ‘Table Rates’.


2. Configure your Settings

Each shipping method has its own settings for you to configure.

Method Title

This is the label that will appear for customers when they are checking out. For example, if I have two methods for a zone, 1st Class and 2nd Class, they would appear like this for the customer:

an example of the shipping options available to the customer. Both 1st and 2nd class are offered


Enable or disable a Shipping Method.

Tax Status

This field determines whether this shipping is taxable. Choose from Taxable or None.

Handling Fee

Add any additional handling fee (excluding tax). This can be an amount, e.g. 2.50, or a percentage, e.g. 3%. Leave blank for no handling fee.

Minimum Cost

You can assign a minimum cost to a method. This means that if the total that is calculated is lower than the minimum cost, the price will be increased to the minimum cost amount.

3. Choose your Calculation Type

The Calculation Type field tells the pluginhow to perform the shipping calculationon the customer’s cart. Getting this right will affect the final total charged for shipping. Your choices are:

  • Per order – calculates the shipping for the entire cart. If there are varying shipping classes in the customer’s cart, the class with the highest priority will be used. These can be set in the table that appears underneath the rate table when per order is selected.
  • Calculated rate (per item) – calculates the rate by checking each item in the customer’s basket against the table of rates.
  • Calculated rate (per line) – looks at each line in the basket and checks that against the table. Multiple of the same item are on the same line so the customer will only be charged once for multiples of the same item.
  • Calculated rate (per class) – each shipping class in your basket is totalled together and offered at a final rate.

Your choice will affect the final figure in the customer’s cart. Let’s take a look at an example.

A customer has the following items in their cart:

Number of item Item Shipping class
2 red t-shirt small
1 green t-shirt small
1 black jumper medium

You have the following costs for your medium and small shipping classes.

Cost for shipping class Cost Priority
medium 10 2
small 5 1

The total for each of the calculation types is as follows.

Per order Per item Per line Per class
5 25 20 15

4. Add your Rates

Once you’ve chosen how you wish to calculate your rates, it’s time to start adding rates. The plugin will compare the items in the customer’s cart against the table of rates to calculate the shipping costs.

Shipping Class

Choose the shipping class that this rate will apply to. You can also choose to apply the rate to items in any shipping class, or in no shipping class.


This column tells the plugin what product information it should use to calculate the rates. Your options are:

  • None – you don’t wish to use product information to calculate the total
  • Price – the price of the items
  • Weight – the weight of the items
  • Item Count – the number of an individual item
  • Item Count (same class) – the number of items in the shipping class

Remember that the way the calculation is carried out is determined by the Calculation Type drop down.


The minimum and maximum amounts for your chosen condition. These will be:

  • Price – the minimum and maximum price
  • Weight – the minimum and maximum weight. The weight unit used is determined in WooCommerce > Settings > Products
  • Item Count – the minimum and maximum number of an individual item. For example, you may wish to have one price for 1-50 items, and another for 50+ items
  • Item Count (same class) – the minimum and maximum number of items in a specific class
If you are filling in minimum and maximum amounts for your item, ensure that you account for as many items as a person would conceivably order. For example, for item count, it’s good practice to have a row that has a maximum up to 999. This will ensure that shipping rates will always be calculated.

Shipping Prices

This is where you set the cost for your shipping. You can add the following figures:

  • Cost – the base cost for shipping this item. This could include the cost of your packaging
  • Item Cost – the cost for each individual item. This is in addition to the cost
  • Cost per kg – the cost per kg for the items
  • Cost % – the percentage of the items’ total should used to calculate shipping.


If you are creating a per-order table of rates, you can add a label for each individual rate.


When you check this option, you’re telling the plugin: if you reach this row of the table, use it to make the calculation don’t go any further, i.e. you’re telling the process to break.

This is used for:

  • Per order – to tell the plugin to offer a specific rate and no others
  • Calculated – to stop any further rates being matched, with priority given to the top of the list. This is particularly important when merging shipping (see below)

Merging Shipping

There are times when you may wish to merge shipping of a specific product. For example, imagine you have a bookmark and a book. The bookmark is in the small shipping class, and the book is in the medium shipping class. If a customer orders a book and a bookmark then you can simply bundle this shipping together. There’s no need to charge to customer for shipping the book and the bookmark separately.

If shipping for the bookmark is usually £2.50 and shipping for the book is £5, then you want to offer a shipping cost of £5, not £7.50.

To properly merge items for shipping, you need to ensure that the table is set up with the highest rate at the top and the lowest rate at the bottom.

What you need to do is to tell the plugin: go down this table of rates and when you get to the first condition that you match, shop.

To merge rates in a simple setup, you would:

  1. Choose Calculated rate (per shipping class) for your calculation type.
  2. Create your rates on the table, with the highest rate at the top. In our example of books and bookmarks, the medium shipping class is above the small shipping class.
  3. Ensure that the Break option is checked.

Let’s take a look at the difference the order and the break checkboxes make.

In this first example, the table is set up correctly. Medium is above small on the table, and the break checkbox tells the plugin to stop its calculation when the first condition is met. The shipping price for the customer is £5. i.e. the bookmark is correctly bundled with the book.

a screenshot of the table of rates with medium above small and the break checkbox checked. There is an image of the calculation made in the customer's basket, showing £5, which is correct

In the second example, medium is correctly above small, but the break checkbox hasn’t been checked. This means that the plugin continues to calculate through the table for all of the items, calculating separately for each item and offering a final price of £7.50.

a screenshot of the table of rates with medium above small without the break checkbox checked. There is an image of the calculation made in the customer's basket, showing £7.50, which is not what we wish to offer

In this example, the break checkbox is checked, but small is above medium in the table. As the plugin calculates down through the table stopping at the first row in which its condition is met, it stops at small. The customer is offered the price of £2.50, which is the shipping cost for the bookmark, not the book.

a screenshot of the table of rates with small above medium with the break checkbox checked. There is an image of the calculation made in the customer's basket, showing £2.50, which is the cost of the bookmark and is not what we wish to offer

In the final example, small is above medium in the table and the break checkbox is not checked. This time, the plugin checks every item in the basket against the table, without stopping. It offers the price of £7.50 for shipping, totalling up the cost for the items, rather than combining..

a screenshot of the table of rates with small above medium without the break checkbox checked. There is an image of the calculation made in the customer's basket, showing £7.50

As you can see, all of the fine adjustments that are made to the table of rates will affect your final total. Below are some working examples of calculations for an online t-shirt store. These should help to demonstrate the practical application of the plugin.

Working Examples ↑ Back to Top

Sending Multiples of Similar Items

Dave has a t-shirt shop. People often buy multiples of his t-shirts. His base rate of shipping is £2, and then each t-shirt adds £1 to shipping. To create his shipping rules, Dave does the following:

  1. Creates a shipping class, small, to apply to all of his t-shirts
  2. Creates a shipping zone, Zone 1
  3. Chooses the Calculated rate (per shipping class) calculation type
  4. Creates the following rules:
    • Shipping Class – small
    • Condition – item count (same class)
    • Min:1 Max:1000
    • Cost – 2
    • Item Cost – 1

His table is set up as follows:

a screenshot of the table of rates

When his customers purchase his t-shirts, they are charged as follows:

  • 1 t-shirt: £3
  • 2 t-shirts: £4
  • 3 t-shirts: £5, etc

Applying Multiple Rules to the Same Shipping Class

It’s all going well for Dave, but he’s realised that when people buy more than 50 of his t-shirts his basic shipping rate goes up. He needs to add another rate. The original rate is edited to a Minimum of 1 and a Maximum of 49. And he adds the following rule:

  1. Shipping Class – small
  2. Condition – item count (same class)
  3. Min:50 Max:1000
  4. Cost – 10
  5. Item Cost – 1

a screenshot of the table of rates applied to two small shipping classes

  • Purchasing 49 t-shirts costs £51 for shipping (49*1)+2
  • Purchasing 50 t-shirts costs £60 for shipping (50*1)+10

Merging Shipping for Different Shipping Classes

Dave’s been pretty successful with t-shirts, so he decides to get into selling jumpers. When a customer buys a jumper and a t-shirt he knows that he can put the t-shirt in the packaging with the jumper, so he doesn’t want to charge shipping for each separately. His base rate for shipping a jumper is £5, and each jumper costs £3 to ship. To create rules for shipping jumpers he does the following.

  1. Creates a shipping class medium to apply to all of his jumpers
  2. Opens his Zone 1 shipping
  3. Creates the following rules:
    • Shipping Class – small
    • Condition – item count (same class)
    • Min:1 Max:1000
    • Cost – 2
    • Item Cost – 1

The table setup looks as follows:

a screenshot of the table of rates applied to the small and medium shipping classes

As described in the section on Merging Shipping, the most expensive shipping class needs to be at the top of the table. This will ensure that the customer is charged only the rate for shipping the jumper.

Sending by Weight

Dave’s decided to move to a new courier company. It’s more cost efficient for him to ship by weight so he needs to rethink his shipping rates. The new rates provided by the courier are as follows:

  • 0-750g: £2.70
  • 751-1000g: £4.30
  • 1000g-2000g: £8.30

This time the calculation type is Per Order. This will calculate the total based on the weight of the entire order. He needs to create three rows, one for each rule he wishes to create. These will apply to any shipping class, with the weight condition, and a minimum and maximum weight applied.

a screenshot of the table of rates set up to calculate by weight

If your courier quotes you a cost per kilo, you could set your condition to None, and use the Cost per KG option.

Offering Multiple Shipping Options

Dave wants to give his customers as much flexibility as possible, so he decides to offer customers in the shipping zone both 1st and 2nd class mail options. To do this he does the following:

  • Calls his original rate 1st class
  • Navigates to the Shipping Zone and clicks Add Shipping Method
  • Calls his new table 2nd Class
  • Creates a per order table with the 2nd class rates

He now has two Shipping Methods available:

a screenshot of the shipping methods

And the customer is offered different shipping rates when they check out:

an example of the shipping options available to the customer. Both 1st and 2nd class are offered

Final Tips ↑ Back to Top

There are as many different possible setups for shipping as there are e-commerce stores. But for every store the following advice applies:

  • Get your rates from your courier before starting
  • Plan your shipping zones, methods, and rules beforehand
  • Test your calculations by checking out items on the front end to ensure you get what you expect
Back to the top