Who should use WooCommerce Table Rate Shipping?

Some shops can get away with charging the same rate per product or per order no matter what the destination. Normal Flat Rate Shipping will do just fine. But if your shipping cost are determined by one or both of the following criteria, you’ll need to purchase the powerful WooCommerce Table Rate Shipping extension.

  • The Shipping cost is calculated by weight
  • The shipping destination determines the cost of shipping

Companies that use a private courier company, usually need to use Table Rates and ship their orders according to weight. In some cases a courier company will consider your catalogue and work out a per item price that gets cheaper depending on the order volume. This is also possible in Table Rates, but not in any other shipping module in WooCommerce.

Shipping Requirement for this Tutorial

Below is just an example of a rough shipping breakdown that could be configured in WooCommerce Table Rate Shipping.

  1. Cape Town and Surrounds – R40 up to 2kg, + R5 for every kg over.
  2. Outlying Cape Town AreasR70 up to 2kg, + R5 for every kg over.
  3. Rest of South AfricaR115 up to 2kg, + R7.50 for every kg over.
  4. Sub-Saharan AfricaR175 up to to 2kg, + R15 for every kg over.
  5. North Africa and EuropeR225 up to to 2kg, + R18 for every kg over.
  6. Americas and CanadaR250 up to to 2kg, + R20 for every kg over.

Configuring the Zones

WooCommerce > Shipping Zones
From the shipping requirement we see that 6 zones need to be configured. Most apply to a country or groups of countries, but there are two that apply to areas within a country. Give your zones descriptive titles that you can identify easily.
We’re going to start by adding the zones that apply to groups of countries (3-6 in the list above), all of them use the option, This shipping zone is based on one or more countries. Have patience when setting up a zone like the Americas and Canada, it could take a while and you might have to look up all the countries on Wikipedia (we did!), but you only have to do this once.

Next we start adding the zones based on areas within a country(1-2 in the list above), these use the option, This shipping zone is based on one or more postcodes/zips. Each zipcode is entered on it’s own line, but you can enter ranges too. If you’re adding a zone for an entire city and its suburbs and you know the numbers range between 7000 and 9000, then entering 7000-9000 will work when creating the zone.

Once all zones are configured, the shipping zones screen could look something like this, displaying all your configured zone names with their zone types (countries, zips, states) and whether or not the zone is enabled.

[box type=”note”]The above image features zones that have shipping methods configured. Note that if you have just configured your zones, the shipping methods column will state None[/box]
If you ever need to disable an entire zone, hover over the zone and click the edit link that appears. This accesses the zone edit screen, where you can:

  • Enable the zone
  • Edit the zone type
  • Edit the countries/states/zipcodes for a zone

Adding Shipping Methods

Shipping methods are added to zones and control the kind of shipping that is offered to the customers within a zone.
You could have the same methods configured in all zones, for example, “Priority Mail” may be offered to customers near to (ie. Zone 1) or far away (ie. Zone 2) from your distribution centre, but a different rate (per order or item) can be applied for the method depending on the zone. Although the shipping method title for both zones might be the same, an entirely different label can be applied also. For closer customers, “Priority Mail” can be described as, “within 2 days”, for distant customers, “within 3 days”.
Alternatively, shipping methods can vary entirely depending on the zone. For instance “Same Day Shipping” may be offered to customers in the zone active for your immediate vicinity but not for any other zone.  This kind of flexibility allows practically any kind of shipping to be configured. Table Rates version 2 is not a one size fits all solution. Below is an example of a zone configured with an array of options that the customer can choose for their shipping, and what that shipping methods looks like when displayed at cart level.

To add a new shipping method to one of your zones, select one from your zones list to access the zone edit screen. At the top, select Table Rates from the dropdown and click the Add to Zone button.

Next you’ll see the shipping method edit screen where you can configure the calculation type, add tables and edit the title and labels that customers see.

Table Rate Calculation Types

This is another topic all together that would benefit from a separate article discussing calculation types in detail, but we would like to briefly explain the description below the Calculation Type dropdown, “Per order rates will offer the customer all matching rates. Calculated rates will sum all matching rates and provide a single total.”
That description shouldn’t trip you up too much if you only sell one product that ships at the same rate, whether that’s per order, item or line.
However, if you ship different kinds of product and one kind affects the shipping rate for the entire order, you will need to use shipping classes and things will start to get tricky.
You sell t-shirts and shoes and shipping is calculated by weight. An order containing only t-shirts weighing between 1-2kg ships at R50, but an order that weighs the same and also contains shoes ships at R75. Here’s a list of configuration tasks that will help you charge shipping in this way.

  • Create a “shoes” shipping class, make sure your shoe products are assigned to it.
  • Set the Calculation Type, to Per order.
  • Add 2 tables to your shipping method, set the condition for the one to Any shipping class (T-shirts), the other to shoes (Shoes)
  • Set the condition for both tables to weight, enter a value of 1 (kg) into the Min  column and a value of 2 (kg) in the Max column
  • Enter the cost of shipping, Any shipping class = enter a value of 50 (R), “Shoes” class = enter a value of 75 (R)

With these settings, if an order has t-shirts, shoes and weight between 1-2kgs, both the rate of R50 and R75 will be presented to the customer, because Per order rates will offer the customer all matching rates.
To prevent this, go back to your shipping method and edit the Class Priorities area:

  • Leave the default priority value as 10
  • Change the “Shoes” priority to 1

There’s a rule that states, “When calculating shipping, the cart contents will be searched for all shipping classes. If all product shipping classes are identical, the corresponding class will be used. If there are a mix of classes then the class with the lowest number priority (defined above) will be used.
Giving  “Shoes” the lowest priority value will ensure that only tables configured to the corresponding shipping class are made available to customers that have a corresponding product in their cart. 

Table Rate Shipping final thoughts

The little tutorial here should explain just how flexible this shipping extension for WooCommerce is. It’s a complex solution that’s challenging to master, because the possible combinations (ways of using it) are virtually limitless. It enables any custom shipping solution to be configured rather than developed, saving time and money.
Some advice:

  • Start by creating your zones first
  • Then add all your methods to your zones

…before adding tables to your shipping methods. Doing it in this way will really help you understand how the module ultimately works.
We’d love to hear your thoughts in the comments. Do you already uses Table Rate Shipping and what is your experience using it? We would like to see if there are any trends in terms of user experience and write a follow up that might benefit.