WooCommerce Shipping Classes: The Ultimate Tutorial



WooCommerce provides some good options that help you offer flexible shipping to your customers. Shipping classes are ones of those. Today, we are going to learn the in and out of WooCommerce Shipping Classes and how we can use those classes to create flexible shipping methods for our store.

What are WooCommerce shipping classes?

In short, WooCommerce shipping classes are a way to group similar products to have one shipping method and fee. For example, you have a store selling furniture. While decoration items like vases, lamps don’t cost much space when packing, tables and chairs do. So, you may want to group vases, lamps in one shipping class called small items and tables and chairs in another class, called large items.

You can then setup different shipping calculation for each class. For example, you want to set the shipping cost for small items to a flat rate at $2 and shipping cost for large items to a flat rate at $20. You can achieve this quite easily with WooCommerce shipping classes.

How to create shipping classes in WooCommerce

Creating shipping classes is very simple in WooCommerce. All you need to do is to go to WooCommerce->Settings->Shipping->Shipping classes:

go to shipping class screen

As you can see, we don’t have any shipping classes yet. Let’s click on Add shipping class button and add two shipping classes: small items and big items:

adding woocommerce shipping classes

Finally, click on Save shipping classes to save. You have successfully created two shipping classes.

How to setup WooCommerce shipping classes

To use the shipping classes, first you need to assign them to the appropriate products. We are going to assign the small items class to a vase and big items class to a table. Let’s go to Products->All products and click on the Edit link under the product we want to assign the shipping class to:

edit woocommerce product

Let’s scroll down to Product data section, click on shipping and click on the shipping class select box:

assigning shipping class for product in woocommerce

Then choose the appropriate shipping class for the item. As we are editing the table, let’s select big items. Now, update the product.

You have successfully assigned a shipping class to a product. Make sure you do the same with the vase.

Our products now have shipping classes. However, there isn’t any change in shipping fee applied. That’s because shipping classes are part of shipping methods under a specific shipping zone. Let’s go configure the rules for our shipping classes.

Configure conditions for shipping classes

Let’s navigate to WooCommerce->Settings->Shipping->Shipping zones

all shipping zones in woocommerce

Shipping classes can only be configured as a part of shipping method, and shipping methods are children of shipping zones. So, if you have multiple shipping zones, you need to configure shipping classes’ rules for each zone. For example, you can set the shipping fee for big items to $30 for customers who have UK address and $60 for customers who have Australia address.

Sounds confusing? Let’s have an example to clear the muddle. Let’s say we are going to set the shipping fee of big items in Australia to $60.

First, click on the edit link under Australia shipping zone:

edit shipping zone

Then, click on add shipping method:

add flat rate shipping method

Select flat rate and click on add shipping method. Then click on the Edit link under the flat rate shipping method we have just added:

configure shipping method with shipping classes

There are three fields you need to pay attention to:

  1. The cost field: This is the base cost of the shipping method. The shipping cost for the item will be the sub of this field and its shipping class cost.
  2. “big items” shipping class cost: This is the cost of products which has big items shipping class (under a specific shipping zone and shipping method)
  3. “small items” shipping class cost: This is the cost of products which has small items shipping class
  4. No shipping class cost: You can set the shipping fee for items that don’t have any shipping class. We are going to leave this field blank. That means such items will have the shipping cost equal to the base cost ($10).
  5. Calculation type: You can have two options: per class and per order. If you choose per class, the shipping cost will be the total cost of all shipping classes of the items in cart. Thus, if we have one big item and one small item, the shipping cost will be: the base cost + big items shipping class cost + small items shipping class cost. However, if you choose per order, the shipping cost will be: the base cost + big items shipping class cost (since big items shipping class is the most expensive).

We are going to set the base cost is $10,  $60 and $5 for big items and small items accordingly. For calculation type, let’s select per class. Then, click on save changes.

Make a test order to see shipping classes in action

We are going to order one vase and one table. Then, go to the cart page:

sample order to test shipping classes

Now, look at the cart total:

shipping fee calculated with shipping classes

You can see the shipping cost is $75. That’s be cause we have $10 as the base shipping cost, $60 for the “big items” class (the table/desk) and $5 for “small items” (the vase).

$10 + $60 + $5 = $75

As mentioned above, there are two ways to calculate the shipping class cost in one order: per class or per order. We have $75 here because we select per class. If we now change to per order, you will see the shipping cost changes too:

cart total changed after shipping calculation type changed

As you can see now, the shipping cost is now $70. That’s because it’s equal to the base cost + most expensive shipping class, which is “big items” ($60).

Flexible shipping with shipping classes

Using shipping classes can offer much for flexibility that just setting a fix number. Let’s consider some scenarios to see how shipping classes can help you provide flexible shipping options for your customers.

Set shipping cost per product

For example, you don’t want to charge a fix amount per item in cart. Instead, for “small items” shipping class, you want to charge $0.5 per item. Thus, if one customer orders 10 items, his total shipping cost will be $0.5 * 10 = $5.

Let’s set that up by going to WooCommerce->settings->Shipping zones and edit a shipping method:

configure shipping method with shipping classes

This is the settings we have done previously. Now, in the small items shipping class cost box, enter [qty] * 0.5.

Then, go to our cart and update the cart to have 10 vase and remove the desk.

update cart to see flexible shipping class in action

Now, if you look at cart total, you’ll see our shipping cost is now $15:

new shipping cost based on item quantity

That’s because the shipping cost = $10 (base cost) + 10 * 0.5  = $15.

It’s really flexible, isn’t it?

Set shipping cost as a percentage of item total cost

You can also set the shipping cost as a percentage of item total cost. For example, the shipping cost for “small items” shipping class is 5% of the cost of all “small items” in cart. You can set that up by doing so:

setting shipping fee as percentage of items total

Now, if you go to our cart (still have 10 vases), you’ll see the shipping cost is now $25:

shipping cost based on percentage

That’s because 10 vases cost $300 ($30 per vase). 5% of $300 is $15. The total shipping cost would be: $10 (base cost) + $15 = $25.

Set the minimum and maximum amount for the shipping fee

After setting the fee as a percentage of items total, you can set the minimum and maximum cost for that shipping class. For example, I want to set the minimum shipping cost for “small items” is $20 and maximum $50. You can do it like so:

setting min and max shipping fee for shipping classes

Now, with still 10 vases in our cart, if we refresh the cart, you will see the shipping fee is now $30, instead of $25. That’s because the minimum fee is $20 plus base cost ($10) = $30.

apply min shipping fee for shipping classes

If you update the cart to buy 100 items (that is $3000 total and 5% * $3000 = $150), the shipping cost would be $60:

apply max shipping fee for shipping classes

That’s because our percentage based fee now is $150, exceeds the $50 maximum fee. Thus, the customers will get the maximum shipping fee $50 + $10 (base cost) = $60.


As you can see, WooCommerce shipping classes can be very powerful when setting up your shipping cost. You can set a fix amount per class. You can also set the shipping cost as a percentage of items total. Hopefully, the post has been helpful to you.

Does this post solve your shipping questions? If not, leave a message. In the mean time, make sure you checkout table rate shipping tutorial. I wrote an extensive tutorial there for people who need complex shipping structure.

Click on a star to rate it!

Average rating 4.8 / 5. Vote count: 81

No votes so far! Be the first to rate this post.

Leave a Reply

Your email address will not be published. Required fields are marked *