Table Rate Shipping makes it possible for you to create complex rules for shipping your products worldwide.
You can define multiple rates based on the product’s destination, have multiple rates per zone, and add rules based on product weight, the number of items, shipping class, and price.
Every store is unique, with its own products and shipping needs, so every setup is different. This page introduces you to the concepts behind Table Rate Shipping, guides you through setup, and provides real-life examples that demonstrate its concepts in action.
Installation
↑ Back to top- Purchase the product from WooCommerce.com
- Download the ZIP file from your WooCommerce.com dashboard
- Go to Plugins > Add New > Upload and select the ZIP file you just downloaded
- Click Install Now and then Activate.
- Read on to learn how to set up and configure the product.
More information at:Â Install and Activate Plugins/Extensions.
How it works
↑ Back to topWhen 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 from that point.
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:
- Set up your shipping classes if you need different rules for different classes of products.
- Determine and set up your shipping zones.
- Get shipping rates from your chosen courier so you know how you want to charge.
Setting up Shipping Classes
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, as all are similar in size and weight, and can have the same shipping rules applied.
You can create tables of rates that apply to different shipping classes. This gives you considerable flexibility when creating shipping methods.
Product Shipping Classes guides you in setting up shipping classes.
Setting up Shipping Zones
↑ Back to topA shipping zone is a geographic region where a certain set of shipping methods and rates apply. You can add different tables of rates to each zone to charge different customers different amounts – Please see our Shipping Zones guide.
Add Table Rates to a Zone
To use Table Rate Shipping, it must be added to a Shipping Zone.
1/ Go to: WooCommerce > Settings > Shipping.
2/ Select edit below the name of the Shipping Zone you wish to add rates for.

3/ Select Add shipping method bottom left of the table with shipping methods. This opens a modal window.

4/ Select Table Rate from the dropdown, and Add shipping method.

5/ Save changes.
Setting up a Table Rate
↑ Back to topAfter the shipping method has been added to the shipping zone, settings for Table Rate need to be applied.
1. If you can’t see the word “Table Rate” yet, Select Edit below the shipping zone that contains the Table Rate that you want to edit. This takes you to a different screen.

2. Select Edit for Table Rate.

This opens a Settings screen for you to configure.
3. Enter your preferences for this shipping method.

- Method Title — Name of shipping method displayed to customers. For example, 1st Class and 2nd Class, if there are two methods for a zone.
- Tax Status — Define whether or not tax is applied to the shipping amount.
- Tax included in shipping costs — Define whether the shipping costs defined in the table are inclusive or exclusive of taxes.
- Handling Fee — Additional fee. Can be a fixed amount (2.50) or leave blank for no handling fee.
- Maximum Shipping Cost — Can assign a maximum cost to a method. For example, if the total calculated is greater than the maximum cost, the price is decreased to maximum cost amount.
4. Enter Rates – Calculation Type.
Rate Settings
↑ Back to top
Calculation Type — Tells plugin how to calculate shipping on customer’s cart. 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 (where 1 is the highest priority). These can be set in the table that appears underneath the rate table when per order is selected.
- Calculated rates per item – calculates the rate by checking each item in the customer’s basket against the table of rates.
- Calculated rates 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 rates per shipping class – each shipping class in your basket is totaled and offered at a final rate.
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 |
The following costs are set for medium and small shipping classes.
Cost for shipping class | Cost | Priority |
---|---|---|
medium | 10 | 2 |
small | 5 | 1 |
Total for each calculation type is:
Per order | Per item | Per line | Per class |
---|---|---|---|
5 | 25 | 20 | 15 |
5. Enter Handling fees per order/item/line/class.
Add a flat additional fee to the cost of each calculated item (this could be an individual item, line or shipping class based on the above settings).
6. Enter Minimum cost per order/item/line/class.
Set the minimum cost per calculated item (this could be an individual item, line or shipping class based on the above settings).
7. Enter Maximum cost per order/item/line/class.
Set the maximum cost per calculated item (this could be an individual item, line or shipping class based on the above settings).
8. Set Min-Max Price Calculation
Set if discounted or non-discounted (before applying coupons) price should be used when comparing Min-Max Price Conditions for rates in Table Rates.
9. Enter Rates.
Adding Rates to a Table Rates
↑ Back to top
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.
Condition
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.
Min/Max
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
Break
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).
Abort
Enable this option to disable all rates or the shipping you are editing if the row you are editing matches any item/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 that should used to calculate shipping.
Label
If you are creating a per-order table of rates, you can add a label for each individual rate.
Class Priorities
↑ Back to topIf you have created shipping classes under WooCommerce > Settings > Shipping > Shipping Classes and if you have chosen “Per order” as Calculation Type, you will see a section called “Class Priorities”.
If there are items in different shipping classes in the cart, the Table Rate will be calculated based on those items in the shipping class with the highest priority (or the lowest number). In the example below, the Hoodies shipping class is more important than the default class.

Merging Shipping
↑ Back to topThere 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:
- Choose Calculated rate (per shipping class) for your calculation type.
- 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.
- 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.

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.

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.

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.

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 topSending multiples of similar items
↑ Back to topDave 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:
- Creates a shipping class, small, to apply to all of his t-shirts
- Creates a shipping zone, Zone 1
- Chooses the Calculated rate (per shipping class) calculation type
- 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:

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
↑ Back to topIt’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:
- Shipping Class – small
- Condition – item count (same class)
- Min:50 Max:1000
- Cost – 10
- Item Cost – 1
His table is set up as follows:

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
↑ Back to topDave’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:
- Creates a shipping class medium to apply to all of his jumpers
- Opens his Zone 1 shipping
- 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:

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
↑ Back to topDave 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.
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
Comparing prices after discounts
↑ Back to topCustomizations are not covered under our support policy, so this isn’t something we can help implement or troubleshoot on your site.
When a price range comparison is used in the table rates, it is based on the actual product price, which includes taxes, but excludes discounts / coupons. Using the filter below, it is possible to compare the prices based on line item total, i.e. with discount / coupons and taxes applied.
FAQ
↑ Back to topHow to indicate “Free Shipping”?
↑ Back to topIf some of the rates are set to 0, you’ll want to clarify that to customers by editing the Label column with a message such as “Free Shipping” which will display when viewing the cart, and at checkout.
Questions and Support
↑ Back to topSomething missing from this documentation? Do you still have questions and need assistance?
- Have a question before you buy this extension? Please fill out this pre-sales form – please include the name of this extension in your query.
- Already purchased and need some assistance? Get in touch with a Happiness Engineer via the WooCommerce.com Support page and choose this extension name from the “I need help with” dropdown