Table Rate Shipping

Table Rate Shipping makes it possible for you to create complex 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 a customer checks out items in their cart, the plugin looks at the destination of items and then uses the table of rates you created to calculate total shipping. Each destination can have its own rules, or multiple sets of rules, based on your shipping requirements.

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

Getting started ↑ Back to Top

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

1. Set up your shipping classes
2. Get 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 and medium for books. You may also wish to apply the small class to pencils and pens. All of these items are similar in size and weight, so can have the same shipping rules applied.

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

This guide will walk you through setting up shipping classes.

Setting up the plugin ↑ Back to Top

Create your shipping zones

With classes created, you can next 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 shipping zones, you can create tables of rates for each. To set up 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:


Table Rate Shipping 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 set up with ‘One or more zip or post codes’ as shown:


Edit Table Rate Shipping Zone

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

Edit Table Rate Shipping Zone 2


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 create shipping methods and tables of rates for your different Shipping Zones. Each zone can have as many 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.

Table Rate Shipping Zones

Select the dropdown to choose the shipping method, which is ‘Table rates.’


Adding Table Rates to Shipping Zone

2. Configure your settings

Each shipping method has its own settings to configure.

Define Method Details

Define Method Details


Enable or disable a Shipping Method.

Method Title

This is the label that will appear for customers when 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:

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 (2.50) or a percentage (3%). Leave blank for no handling fee.

Minimum Cost

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

Maximum Cost

You can assign a maximum cost to a method. This means if the total calculated is greater than the maximum cost, the price will be decreased to the maximum cost amount.

3. Choose your calculation type

Rates Settings and Calculation type

Rates Settings and Calculation type

Order Handling Fee

Add any additional fee to the amount (flat amount, percent not accepted).

Calculation Type

The Calculation Type field tells the plugin how to calculate shipping on the customer’s cart. Getting this right will affect the final total charged for shipping. Your choices are:

  • Per order – calculates 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 totaled and offered at a final rate.

Your choice will affect the final figure in the customer’s cart. Let’s 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 set for 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

Adding Rates

Adding Rates

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

Shipping Class

Choose the shipping class to which this rate will apply. 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 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 calculation is determined by the Calculation Type dropdown.


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.


When you check this option, you’re telling the plugin: If you reach this row of the table, stop the calculation from going any further. Meaning, 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).


Enable this option to disable all rates or the shipping you are editing if the row you are editing matches any item/libe/class being quoted.

Shipping Prices

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

  • Row 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.

Merging Shipping

There are times 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 stop when you get to the first condition that matches.

To merge rates in a simple setup, you would:

  1. Choose Calculated rate (per shipping class) for your calculation type.
  2. Create 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 when the order and the break checkboxes are used.

In the 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.

Table Rate Merging Shipping Example 1


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.

Table Rate Merging Shipping Example 2

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.

Table Rate Merging Shipping Example 3

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, totaling the cost for each line item, rather than combining.

Table Rate Merging Shipping Example 4

All fine adjustments made to the table of rates will affect your final total. Below are working examples of calculations for an online t-shirt store. These should help 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:

Table Rate Shipping Example 1

When 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 realized that the basic shipping rate goes up when people buy more than 50 t-shirts. 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

His table is set up as follows:

Table Rate Shipping Example 2

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

  • 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 package the t-shirt and jumper together, 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 – medium
    • Condition – item count (same class)
    • Min:1 Max:1000
    • Cost – 5
    • Item Cost – 3

His table is set up as follows:

Table Rate Shipping Example 3

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 only charged the rate for shipping the jumper.

Sending by weight

Dave 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:

  • 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.

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

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