Posted on Leave a comment

How To Make Woocommerce Free Shipping Per Product

How To Make Woocommerce Free Shipping Per Product 1

If you are running a store selling items that have different shipping requirements, having different shipping terms in very important. One very common scenario is to enable WooCommerce free shipping per product. That means for other products, you still charge shipping fee. However, for some particular products, you may want to enable free shipping.

I’ll show you how to do that in this post. Good news is there is no plugin to install.

Use shipping class to enable WooCommerce free shipping per product

Shipping class is a very simple feature in WooCommerce. However, it is very powerful if you know how to use it. I made a shipping class in depth tutorial here.

Create a shipping class

Now, let’s go to WooCommerce->Settings->Shipping class

woocommerce shipping class interface

Let’s click on Add shipping class button to start creating our free shipping class. You can name any way you like. However, I’ll make it descriptive by giving it the name: Free shipping class.

How To Make Woocommerce Free Shipping Per Product 2

Click on Save shipping classes and you are done.

Configure the free shipping class’s fee

Our next step would be configuring the free shipping class fee. Let’s go to shipping zone and click on the edit button below your zone. If you have multiple shipping zone, you need to do this for every zones if you want to make the free shipping per product works for all customers in all zones.

edit a shipping zone

Next, edit the shipping method. As you can see, I have one shipping method here (a flat rate shipping method). If you have multiple shipping methods, you need to configure the free shipping class fees for all of them.

Edit shipping method
How To Make Woocommerce Free Shipping Per Product 3

In this edit screen, you can see that at (1), I have the common shipping cost to all products is $21. In order to enable free shipping for products that have “Free shipping class”, I need to enter a number that when add to the cost results in $0.

The only number that adds to 21 returns 0 is -21.

Save the changes and you are almost done.

Set free shipping class for particular products

Now, the last step would be assign the free shipping class to product that you want to enable free shipping. Let’s pick a product and edit it. Scroll down to Product data and click on Shipping tab:

configure WooCommerce free shipping class per product

Let’s assign the shipping class of this product as “Free shipping class”.

Now, if I add this product to cart and go to the cart page, I’ll see that there is no shipping fee:

woocommerce free shipping per product

That’s how you enable WooCommerce free shipping per product using shipping class. There is another way, which I’m going to show you next.

Use coupon to enable free shipping per product

Do you know that you can use coupon to enable WooCommerce free shipping per product? I’ve made a free shipping coupon tutorial here so you can have a look. Using free shipping coupon offer some unique flexibilities and it is definitely a method you can use to maximize the flexibility that you can offer to your customers.

Conclusion

As you can see, configuring WooCommerce free shipping per product is quite simple and require no external plugin. You can either use a coupon or a shipping class to enable this feature. I personally prefer using free shipping coupon as it requires less step and you can easily add products that can use the coupon at one screen.

Using shipping class has some unique strengths too. In the case of free shipping coupon, you need to add a new free shipping method in every shipping zone. This may not be desirable for some people. However, it is up to you to decide what method to use based on your actually situation.

Posted on Leave a comment

Ultimate WooCommerce Table Rates Shipping Tutorial & Use Cases

Ultimate WooCommerce Table Rates Shipping Tutorial & Use Cases 4

Shipping is not a simple matter, even for simple store. WooCommerce (the plugin) does a good job offering some basic shipping cost calculations such as free shipping, flat rate… However, if your shipping cost is based on weight or price or number of items or a mix of all those things, you will need a help from an additional plugin. In this post, I’m going to introduce you to a plugin called table rates shipping for WooCommerce. With this plugin, you can

  • Setup shipping cost based on cart’s weight
  • Calculate shipping cost based on number of items in cart
  • Setup shipping cost based on products’ price, line total and cart total

Let’s get started.

Download and install WooCommerce table rates shipping

As mentioned in the beginning of this post, you’ll need the plugin called WooCommerce table rates shipping to follow along.

Download table rate shipping plugin

After activating the plugin, when you go to add shipping method, you’ll see the table rates shipping method is added, along with WooCommerce’s default shipping methods (flat rate, free shipping and local pickup).

As you can see that table rates shipping is just another shipping method. That’s why:

  • It must exists inside a shipping zone.
  • You can have multiple table rate shipping method per shipping zone.

How to setup WooCommerce shipping by weight

Let’s learn how to add shipping by weight using WooCommerce table rates shipping. In this example, I’m going to setup shipping cost by weight for the shipping zone US. As the method’s name suggest, it only works with items that have weight.

Here are the scenarios we are going to cover

Scenario 1:

 Order’s weightShipping cost
1Less than 3kg$20
2From 3kg to 20kg$40
3More than 20kg$1 per kg

Scenario 2:

  • If the order’s weight is less than 10, offer free shipping
  • If the order’s weight is more than 10, charge $0.5 per kg

First of all, let’s add the table rates shipping method for our shipping zone.

Let’s go to WooCommerce->Settings->Shipping->Shipping zones:

edit shipping zone to add shipping method

Under United State, I’ll click on edit.

In the next screen, click on Add shipping method and select Table rates:

select table rate shipping as shipping method for zone

Then, you’ll see the table rates shipping added to the list of shipping methods. Currently, I have only one.

list of shipping methods

Hover the cursor on the word Table rate, you’ll see an Edit link. Click on that to start configure the options.

table rates shipping settings - general
table rates shipping settings - rates
table rates shipping settings - table

You’ll find the detailed explanation for each fields in this post .

Setup the rules for scenario 1

Here is the place we are going to work:

Ultimate WooCommerce Table Rates Shipping Tutorial & Use Cases 5

As you can see, there isn’t any rule setup yet. The first column, Shipping class is visible if you have shipping classes setup. If you don’t have any shipping class (which is pretty normal), then you will not see this column.

Let’s review the shipping rules:

 Order’s weightShipping cost
1Less than 3kg$20
2From 3kg to 20kg$40
3More than 20kg$1 per kg

So, here is how we are going to set this up:

Ultimate WooCommerce Table Rates Shipping Tutorial & Use Cases 6

Let me explain the rules. We have three rows here. They are the result of three times I clicked on Add Shipping Rate button. You can add as many rules as you like.

Let’s look at the first row, Shipping class is set to Any class. I select this option for the sake of simplicity. However, you can see that you can combine shipping class with table rates shipping to create very complex shipping rules.

On the condition column, I set it to weight. This is obvious since we are setting up weight based shipping cost.

On the row cost, I set the number 20. Since we are calculating the shipping fee per order. This amount will be applied to the whole order, not just a single line in cart.

Every other columns are left as default.

The second row is similar to the first one. The on difference is we set the number 40 for row cost and the weight range is from 3 to 20

The third row corresponds to our third rule,  I set the minimum weight is 20 and in kg cost column, I set the number 1 to match with the condition $1/kg.

Let’s make a test order to see if the rules work as we expect.

First, I’m going to order 3 CPUs, two Intel’s and one AMD’s. One Intel’s CPU weights 0.4kg and one AMD’s CPU weights 0.5kg. The total weight is 1.3kg.

As you can see, the shipping cost falls into the first tier (for order which has weight less than 3kg):

shipping cost for first tier

Now, let’s add some more items to make the weight of the order more than 3 but less than 20kg. I’m going to add a desktop to the cart. The desktop weights 6kg so now, the total weight is 7.3kg. As you can see, the shipping cost has changed to reflect the change in shipping tier:

shipping cost for second tier

Finally, let’s add some more items to make the weight of our cart more than 20kg. I’m going to add three more desktops. That’s 18kg more and makes our cart now weights 25.3kg (18 + 7.3). As you can see, the shipping cost is now $25.3:

shipping cost based on cart weight by kg

Everything worked as we expected. That’s great!

Setup the rules for scenario 2

Now you know how to setup the rules for scenario 1, it’s super easy to setup the rules for scenario 2. Let’s review the requirements of scenario 2:

  • If the order’s weight is less than 10, offer free shipping
  • If the order’s weight is more than 10, charge $0.5 per kg

There are two rules you need to setup in this case:

table rates shipping rule for scenario 2

You can see that I added a label for the first row called Free shipping. This label will up when the rule in this row is applied.

Now, if I look at the cart (which still weights 25.3 kg), the shipping cost would be:

shipping cost for scenario 2

That’s 25.3/2 = 12.65

If I remove the desktops to make the weight less than 10, the shipping cost should be $0.

Ultimate WooCommerce Table Rates Shipping Tutorial & Use Cases 7

I hope you see the power of WooCommerce table rates shipping plugin in setting up weight-based shipping cost. However, that’s not the only capability of this plugin. You can also setup shipping cost based on items count and items’ price.

Using table rates shipping to setup shipping cost based on number of items

There are times you want to calculate the shipping cost based on the number of items in cart. One of the most common scenarios is you want to encourage the customers to buy a larger quantity. In such case, you may want to offer free shipping for orders that meet a certain amount of items in cart. Let’s discuss the following scenarios:

Scenario 1:

 Items in cartShipping cost
1Less than or equal 10$10
2From 11 upFree shipping

Scenario 2:

 Items in cartShipping cost
1Less than 10$1 per item
2From 11 up0.5$ per item

In scenario 2, we will also set a maximum shipping cost at $100. So, when the customers order more than 200 items, the shipping cost is still $100.

Rules for scenario 1: Free shipping when cart count reaches a certain amount

From the rules of the scenario, you can see that we need to set two rules. The first one is to set a flat shipping fee at $10 for orders than have up to 10 items. The second rule would be offer free shipping for orders that have more than 10 items. Here are the rules set in table rates shipping:

setting up table rates shipping rule for free shipping when cart count reaches certain amount

As you can see that, on both rows, I set the condition to Item count.

On the first row, I set the max items count is 10 and the row cost is $10 based on the requirement of the first rule. I also set a label named Flat rate so the customers can easily understand the kind of shipping fee is applied to their order.

On the second row, I only need to set the min item count to 11 and the label to free shipping.

Let’s check out cart.

Ultimate WooCommerce Table Rates Shipping Tutorial & Use Cases 8

Since I have only 3 items on my cart, the flat rate £10 is applied. Now, let’s increase the order of AMD Ryzen to 8 more. That’ll make our cart has 11 items. The shipping fee now should be 0 as the Free shipping condition is met:

free shipping when cart amount passes 10 items

Easy enough? Let’s discuss scenario 2.

Rules for scenario 2: Shipping cost per items changes when cart count reaches a certain amount

Scenario 2 is a bit different from scenario 1 since we don’t offer free shipping. Instead, we reduce the shipping cost per item from $1 to 0.5 when our customers order more than 10 items. In addition, there is a maximum shipping cost applied.

Let’s find out how to setup the shipping fee for this scenario.

First of all, we need to set the maximum shipping cost at $100. This step is quite simple. Let’s go up the screen and you’ll see a field called “Maximum shipping cost”. Enter 100 in that field:

setting up maximum shipping fee

Now, let’s go down and setup the rules:

setting shipping cost per item using table rates shipping

I hope the rules are visual enough so you’ll have no problem understanding them.

On the first row, I set the max item is 10 and item cost is one. That means for orders that have up to 10 items, the shipping cost per item is $1. I also set the label to $1/item so the customers will have an idea what kind of shipping fee is applied on their order.

On the second row, I set the min number to 11, max number to 200 and the label to $0.5/item.

Technically, I don’t have to add the third row since we already have the maximum shipping cost at $100. However, if I don’t set the third row, orders that have more than 200 items still have the label $0.5/item, which is very confusing to customers.

Test the rules on the shopping cart

Here, I have 9 items in my cart, the first rule is applied. The shipping cost is £9. Easy to understand, right?

Ultimate WooCommerce Table Rates Shipping Tutorial & Use Cases 9

Now, let’s increase the number of the first row to 173 items. That makes our cart 180 items in total. The shipping cost would be £90:

shipping cost discount on large item order

Finally, let’s make the cart count more than 200 items. I’m going to set the total order of the AMD CPU to 30. That’ll make our cart have 203 items. Due to our settings, the shipping cost should be £100 (the maximum amount):

Ultimate WooCommerce Table Rates Shipping Tutorial & Use Cases 10

As you can see, things work as we expected and that’s great.

Besides offering the ability to set the shipping cost based on weight, cart count, table rates shipping plugin also let you set the shipping cost based on cart or line total. I think you have no problem understanding calculating shipping cost based on cart total. However, what is line total? Let’s find out in the next section.

Using WooCommerce table rates shipping to set shipping cost based on items’ price, line total, cart total

First, let’s clear some terminologies.

Item’s price: the price of a particular item.

Line total: Let’s consider the following screenshot:

cart lines

This order has two lines. Normally, one product will occupy one line. The first line’s total is £48,440 and the second line total is £11,010.

Cart total: This term is simple enough. This is the total amount of the order and equals to the sum of all line total.

Now, let’s consider some scenarios:

Scenario 1: Setting up shipping fee based on cart’s total

 Cart totalShipping cost
1Up to £10,0005%
2More than £10,0002%
3Max shipping cost£700

Scenario 2: Shipping cost based on products’ price

Only charge a 2% shipping fee for products that have price less than £100.

Scenario 3: Shipping cost calculated based on line’s total

Only charge a 5% shipping fee for lines that have total less than £30,000.

Let’s setup the rules for each scenario using table rates shipping.

Scenario 1: Shipping cost is a percentage of cart total

First thing first, we need to setup the maximum shipping cost at £700. You should be able to do this since we have done it previously with item based scenario.

set maximum shipping cost

Next, set the calculation type to Per order since we calculate the shipping fee based on cart total:

set calculation type

Now, let’s set the rules:

set shipping cost based on cart total

The first row, I set the condition to price. The word “price” may sound confusing since we are talking about cart total. However, I think there aren’t many better choice for the developer since this name will also represent the price of a product if we set the calculation type to “per item”.

I also set the % cost to 5. This means the shipping cost will equal to 5% of the total order.

On the second row, I set the range from 10,000 to 35,000. Why 35,000? Since our max shipping cost is £700 (equals to 35,000 * 2%), setting 35,000 as the upper bound of the second line makes senses.

On the third row, I set the min to 35,000 and the row cost to 700. Since we have already set the maximum shipping cost to £700 previously, this row is not technically necessary. However, it will help the customers understand what kind of shipping cost is applied to their order.

Now, let’s go and check our cart. My cart total is £7,340. It’s less than 10,000 so the shipping cost should be equal 5% of cart total:

shipping cost based on cart total tier 1

Now, let’s add some more items to make the cart total pass £10,000. Let’s add 10 more items:

shipping cost discount on large order

Sure enough, the second tier is applied. The shipping cost is now only 2% of cart total.

Finally, let’s make the cart total exceed £35,000. I’m going to add 100 items more to the cart:

apply maximum shipping cost when cart total reached certain amount

As you can see, the flat rate £700 is applied as we expected.

Scenario 2: Charge a 2% shipping fee per item that has price less than £100

In this case, we are going to set the shipping fee based on product’s price. Specifically, the charge is 2% for products that cost less than £100. For products that cost more than that, we offer free shipping.

I’m not going to cover the maximum fee in this case since you know how to do that already. Let’s go straight to calculation type and set it to per item:

set calculation type to per item

Now, let’s set the rule:

set shipping cost based on products price

The rules are quite simple. On the first row, I set the % cost to 2 and the Max price of the item is 100. The second row states that for items that cost more than 100, there will be no shipping fee.

Let’s check our cart to see the rules in action:

shipping cost based on a percentage of products price

The calculation is not shown explicitly here. However, you can see that the cost for a single Samsung SSD is £46, which is less than £100 while the cost for an AMD CPU is more than £100. So, only the SSD price is used to calculate the shipping cost.

Sure enough, £4,600 * 2% = £92.

Scenario 3: Calculate shipping cost based on line total

Let’s discuss the final scenario. What if you want to charge a 5% fee based on lines that cost less than £30,000 only? Lines that cost more than that are eligible for free shipping.

Setting up the rules for this scenario is quite simple. First, we need to change the calculation type to “Calculate rates per line item”:

calculate rate per line item
setting up shipping cost rules based on line total

Now, let’s set the rules:

On the first line, I set the condition to Price, the Max value to 30,000 (you only see 3,000 in the screenshot because of the field to enter the number is quite narrow). The % cost is set to 5%.

The second is responsible for making lines that cost more than 30,000 eligible for free shipping. I only need to set the Condition to Price and the min amount is 30,000.

Let’s inspect this cart:

shipping fee based on line total

As you can see that, we have two lines that cost less than £30,000, that’s the second and third line. As the rules dictate, the shipping cost equals to 5% of the sum of these two lines:

Shipping cost = 5% * (4,600 + 7,447) = 602.35

That’s the number we see in the shipping cost field of the cart.

Conclusion

Table rates shipping plugin for WooCommerce is a very powerful tool for stores that need flexible, complex shipping calculation. You can set the shipping cost based on cart total, number of items in cart, cart’s weight or even single product’s price. Hopefully the tutorial and the specific scenarios presented in this post is helpful to you. If you need a specific scenario that you have trouble setting up, please don’t hesitate to write in the comment section below.

Posted on 5 Comments

The Ultimate Guide to WooCommerce Flat rate Shipping

The Ultimate Guide to WooCommerce Flat rate Shipping 11

WooCommerce flat rate shipping is the easiest shipping method to set up. In this post, let’s find out how to setup flat rate shipping in WooCommerce and see how it fits to your business model.

What is flat rate shipping?

If you have sent a package via post office before, you should be familiar with flat rate shipping. As the name suggests, flat rate shipping impose an uniform shipping price on your package as long as it doesn’t exceed a certain weight or size.

For example, the shipping cost for packages less than 10 kg and 1 cubic meter is $10 per package.

The same idea applies to WooCommerce flat rate shipping.

How to setup flat rate shipping in WooCommerce

By default, WooCommerce has three shipping methods

  • flat rate shipping
  • local pickup
  • free shipping

In order to use one of those method, you need to create a shipping zone first then in the zone, you can add one or more shipping methods, including flat rate.

how to add flat rate shipping to shipping zone in woocommerce

 

After creating one WooCommerce flat rate shipping method as in the above image, you can configure the rate, tax of that shipping method by clicking on the Edit link under “Flat rate”:

configure flat shipping rate and tax

 

As you can notice, there is a toggle button right below the Enabled title. You can enable or disable the shipping method by turn that button on or off.

Can I have multiple flat rate shipping setup?

There is no limit on number of shipping method per zone so you definitely can have multiple flat rate shipping setup, in one zone. You may wonder, why do I need multiple flat rate shipping for one zone?

One good example is you provide standard shipping at a lower rate and priority shipping at higher rate. At the cart page, customers can choose which shipping method they want to use. If they need the products to be delivered fast, they will choose the priority shipping method. Otherwise, they can choose the standard shipping method to save money on shipping.

Let’s set that up:

adding multiple flat rate shipping for one zone

Now, on the cart page, the customers will see all the shipping options available:

flat rate shipping options on cart page

How to add flat rate shipping per item using shipping classes

At this point, you should be comfortable with adding flat rate that applies to all items. What if you want to set a different shipping rate for some particular items? For example, I have a store selling computer hardware. While keyboards, mice can be shipped without much care, monitor requires special packaging and handling. I would like to charge $50 more for monitors. How can I set that up?

First we need to add a shipping class. Adding shipping class in WooCommerce is simple. Let’s go to WooCommerce->Settings->Shipping->Shipping classes and add one:

add a shipping class in woocommerce

Now, the next step would be to go the monitor and assign it the “monitor” shipping class:

assign shipping class to product

Finally, let’s configure the shipping rate for “monitor” shipping class in our shipping methods.

Let’s go to WooCommerce->Settings->Shipping->Shipping zones and edit our zones. Let edit all the enabled flat rate shipping method in that zone and add the additional fee accordingly:

add shipping cost to shipping class

 

Now if I go to the cart, I can see that the shipping cost is higher:

shipping cost updated after using shipping classes

If you remember, the standard shipping was $10 and the priority shipping was $30. Since we added $30 for the “monitor” shipping class, the shipping cost updated accordingly.

WooCommerce flat rate shipping by quantity

If you notice that we have 2 items in cart here. The shipping cost for the “monitor” only calculated once. What if you want to charge the additional shipping cost PER ITEM?

That’s easy, let’s go back to our shipping methods and edit each of them then enter this:

using formula to calculate flat rate shipping cost

Now, if I go to the cart page, surely I’ll see the shipping cost is calculated for all items in cart:

cart udpated after using formula

Hide flat rate shipping if free shipping is enabled

You may want to reward the customers by offering free shipping to all order exceeds $300. In this case, you also want to hide other flat rate shipping methods. What can you do to achieve this?

You’ll need to enter some code. Don’t worry, it won’t be hard.

First thing first, you need to create a child theme if you haven’t got one. Why do you need a child theme? How to create one? Find all the answers here

Now you have your child theme ready. Let’s go to its functions.php file and paste the following code:

function bc_hide_shipping_when_free_is_available( $rates ) {
  $free = array();
  foreach ( $rates as $rate_id => $rate ) {
    if ( 'free_shipping' === $rate->method_id ) {
      $free[ $rate_id ] = $rate;
      break;
    }
  }
  return ! empty( $free ) ? $free : $rates;
}
add_filter( 'woocommerce_package_rates', 'bc_hide_shipping_when_free_is_available', 100 );
add code to functions.php to hide other shipping methods when free shipping available

Click on update file and let’s go to the cart page, you’ll see that if free shipping is available, all other methods are hidden:

other shipping methods hidden when free shipping available

Conclusion

As you can see, flat rate shipping at first seems to be rigid and hard to customize. However, when combine with shipping classes and free shipping method, you can offer very flexible shipping options for your customers. Using WooCommerce shipping classes enables you to set the max shipping fee for an order, set the shipping fee based on the quantity and the total of the cart.

Posted on Leave a comment

How To Set Up WooCommerce Free Shipping Coupons

free shipping coupon code woocommerce

Coupon is a great way to reward your customers. In WooCommerce, you can create coupons for almost anything. You can create a coupon that offers a 10% discount or a fix amount discount. However, little people know that you can create a free shipping discount. You can even set a minimum order for that coupon to be effective. Sounds good? Let’s find out how to set up WooCommerce free shipping coupon.

Here are what we are going to do to setup WooCommerce free shipping coupon:

  1. Make sure your store has coupon enabled
  2. Create the coupon that enables free shipping
  3. Add free shipping to your shipping zone
  4. Apply the coupon on a test order

Make sure your store has coupon enabled

The very first step is to make sure you have the use coupon option checked. Let’s go to WooCommerce->Settings->General and scroll down to the Enable coupons section:

enable the coupon codes usages in WooCommerce

Make sure you have the checkbox “Enable the use of coupon codes” checked. We are ready for the next step.

Create the WooCommerce free shipping coupon

Let’s go to WooCommerce->Coupons and click on Add coupon:

go to woocommerce coupon

Now, enter the details for your coupon:

create WooCommerce free shipping coupon

There are three fields you need to pay attention to, other fields are not important in enabling free shipping for the coupon.

  1. You need to give the coupon a name. In the example above, my coupon’s name is SHIPZERO
  2. You may or may not give the coupon a description. However, it’s extremely helpful when you come back and visit your coupons later, you will know exactly what they do.
  3. There is a small check box says “Allow free shipping” and you need to check it.

That’s all we need to do with the coupon. Now, click on submit and move on to the next step.

Create free shipping method for your shipping zone

In order to activate the WooCommerce free shipping coupon, the next step is to create a free shipping method in your shipping zones. If you have multiple shipping zones, you may need to create one free shipping method for each zone.

Let’s head to WooCommerce->Settings->Shipping->Shipping zone:

all shipping zones in woocommerce

As you can see, I have four zones here. I’m going to enable free shipping for Australia. As mentioned before, if you need to enable the use of the WooCommerce free shipping coupon we have just created in other zones, you may need to repeat the following steps for all zones.

Let’s click on the Edit link under Australia:

all shipping methods in Australia

Let’s click on Add shipping method:

add free shipping method for zone

Select free shipping in the drop down box and click on Add shipping method.

Then, you will see a new shipping method added in our list:

free shipping method is now under Australia

Let’s click on the Edit link under free shipping. We are going to configure the condition for the free shipping option to be effective.

configure free shipping option

Here, you can edit the title. I’ll leave the default title as Free shipping. The most important field is the select box: Free shipping requires…

There are a few options you can select from. You can require that the order must have a minimum amount so the coupon can be active. However, I’m going with the first option here, which requires only a valid shipping coupon.

After that, click on Save changes and we are done.

Apply the coupon on a test order

We are going to make a test order on my store. Let’s add some items and go to cart and click on Proceed to check out.

change country

The total before coupon is applied:

total before coupon applied

You can see the notice says: “have a coupon?…” If you are going to apply the coupon now, the coupon will not have any effect. Why? As you may remember, we only enabled free shipping for Australia. However, the country in the Country field is Vietnam. Let’s add our address to Australia and try to apply the coupon:

apply the coupon code
code apply successfully

Now, if we check the cart total, the free shipping fee is $0:

free shipping applied

Restrict the coupon to be available on particular products

In case you want to restrict the use of free shipping on some particular products or categories, it is definitely possible.

Let’s click on the Usage restriction tab:

free shipping coupon usage restrictions

As you can see, in the product categories section, I enter the product category “Dress”. That means this free coupon is available for products in this category only.

There are also other restrictions such as the minimum spent, exclude sale items… that you can set for the coupon.

Conclusion

As you can see, setting up WooCommerce free shipping coupon is quite easy. If you have multiple zones, you may need to do some repetitive work. There is a workaround though. That is to create a shipping zone that cover all shipping zones then create a free shipping method for that zone.
In case your store requires more complex shipping, I would recommend you use table shipping plugin. You can setup very complex shipping rule with this tool. Checkout my table rate shipping tutorial here to get started.

Posted on Leave a comment

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.

Conclusion

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.