How to Apply Free Shipping on Certain Products in WooCommerce? (with Video)

Apply Free Shipping on Certain Products in WooCommerce

Last updated - May 25, 2023

There are times when your business is in full swing or you want to attract more customers to your WooCommerce store. You strategies to offer discounts or offer free shipping on your products. We have discussed effective strategies involving dynamic pricing and discounts on your WooCommerce store in another article. The free shipping strategy is useful when you have products like promotional badges, goodies, or have freebies to offer, and do not want to charge your customers for this. It is also a good idea to apply WooCommerce free shipping only for specific products.

But here’s the twist in the tale. WooCommerce, by default, does not provide a specific feature that allows you to apply free shipping for only specific products. Although WooCommerce has a default shipping method as Free Shipping, it will be applied to all the products.

In this article, I’ll show you how you can apply WooCommerce free shipping on certain products (because you still need to charge for your shippable products right?).

Applying WooCommerce Free Shipping on Certain Products

There are two methods you can achieve this:

  1. An easy method involving WooCommerce Shipping Classes.
  2. Another easy method using Plugins (for more filtering and customization).

Method 1: Using WooCommerce Shipping Classes.

As I mentioned earlier, WooCommerce does not have a direct feature that allows you to apply free shipping on certain products. But you can achieve this using WooCommerce shipping classes and the default Flat Rate shipping method.

Here’s how you can do this:

Step 1 – Create a shipping class for free products

Go to WooCommerce > Settings > Shipping > Shipping classes. 

I am assuming you are aware of WooCommerce shipping classes. If not, refer to this article.

Click on Add shipping class button to get started. Consider you have two products; a hoodie and a mug. You wish to charge shipping for the hoodie and offer free shipping on the mug (I am using this scenario to show you how the free shipping will be applied along with the shippable product).

For this case, I have created two separate shipping class as shown in the screenshot below.

WooCommerce Free Shipping | Creating Shipping Classes
Creating Shipping Classes

Step 2 – Configure shipping rates

Next, we need to configure shipping rates in shipping zones. For this, click on Shipping zones and select the shipping zone of your choice. For this demonstration, I am using the default shipping zone.

Add Flat Rate shipping method and click on Edit option to configure it, as shown in the below screenshot.

WooCommerce Free Shipping | Editing Flat Rate Shipping method
Editing Flat Rate Shipping method

A pop-up window appears where you can configure the Flat Rate settings. The first setting is to customize the method title. This method will be displayed in the cart and checkout. For our case, when the free shipping is applied, the resultant text is just Flat rate with no value, which may seem odd. Hence, it would be a good idea to change the title to a more generalized title, say Shipping Charge.

Step 3 – Apply shipping cost for the shipping class

In the Shipping class cost section, enter shipping cost for “Free-products-class” as value 0. and the “Hoodie-class” is assigned value 10.
The settings are as shown in the screenshot below.

WooCommerce Free Shipping | Shipping Charges
Shipping Charges

Step 4 – Assign shipping class to relevant products

Now we should assign the shipping classes to the required products.

Following screenshot shows how “Hoodie-class” is assigned to the product – “Woo Hoodie”.

WooCommerce Free Shipping | Hoodie shipping class
Assigning Hoodie shipping class

And the below screenshot shows how “Free-products-class” is assigned to the product – “Woo Mug”.

WooCommerce Free Shipping | Free products shipping class
Assigning Free products shipping class

Here’s how the shipping rates are applied on our WooCommerce cart page.

When the free product – “Woo Mug” is added to the cart, the flat rate shows empty value in the cart, as shown in the below screenshot.

WooCommerce Free Shipping | Free shipping applied
Free shipping applied

In this way, you can offer free shipping on certain products.

But that’s not it. To see how the cart is affected when shippable products are added to the cart, let us add the other product – “Woo Hoodie” to it.

WooCommerce Free Shipping | apply woocommerce free shipping along with Flat Rate
Free shipping applied along with Flat Rate

The Flat rate now shows $10, as configured in the “Hoodie-class shipping class cost” setting of Flat Rate shipping method. Hence, the shipping rate of only the shippable products will be charged.

Tip: If you want to retain the Flat rate title and still want to apply free shipping. An alternate solution is to create two different flat rate shipping methods. Define one flat method for shippable products while retaining the title, and change the title(probably to “Free Shipping”) & configure free shipping settings for another.

Method 2: Using WooCommerce Plugins for more customization.

If you wish to apply filters for offering free shipping on certain products, then there are quite a few plugins that will help you achieve this.

Here, I am listing four of the best WooCommerce plugins for our case.

1. ELEX Hide WooCommerce Shipping Methods Plugin

This plugin gives you the control to conditionally hide shipping methods according to several parameters on your store. One of the popular scenarios that store owners would want to use this plugin is to hide other shipping methods when free shipping is available. The plugin offers an easy to use interface that offers you an option to selectively hide shipping methods based on product category, Shipping class, order weight, shipping destination, etc.

apply woocommerce free shipping

For example, you can hide the default WooCommerce shipping methods for certain products and offer only one shipping method for certain others. Or, you can offer display only free shipping for products from a specific shipping class. If you have integrated a particular shipping carrier on your store, you can hide the entire method or specific services from the carrier as well.

Purchase the plugin here.

2. WooCommerce Advanced Free Shipping

Probably one of the ideal solutions for offering free shipping on specific products.

WooCommerce Free Shipping | WooCommerce Advanced Free Shipping Plugin
Image Source: WooCommerce Advanced Free Shipping Plugin

The plugin is specifically developed for free shipping scenarios. With this plugin, you can offer free shipping when the cart contains specific products, categories, shipping class, coupon, weight, quantity or subtotal. You can also configure using user details like user role, country, state, city, and postcode. In addition to this, you can use product properties like product dimensions, stock, and stock status.

Moreover, the plugin allows you to combine shipping methods and includes a feature to hide other shipping methods when free shipping is available.

Download the free plugin.

Following screenshot shows a sample basic settings to be configured for free shipping on specific products.

WooCommerce Free Shipping | WooCommerce Advanced Free Shipping plugin settings
WooCommerce Advanced Free Shipping plugin settings

If you think that’s enough of customization, you can check out the premium version for even more customization options.

The plugin author Jeroen Sormani suggests,

The Advanced Free Shipping plugin works best if the entire order should be free shipping. Otherwise, I’d advise splitting the cart into separate packages and set up the shipping rates accordingly. This can be done using the WooCommerce Advanced Shipping Packages plugin or a code snippet.

3. Advanced Flat Rate Shipping Method WooCommerce

Another fine alternative.

WooCommerce Free Shipping | Advanced Flat Rate Shipping Method WooCommerce
Image Source: Advanced Flat Rate Shipping Method WooCommerce

With this plugin, you can create unlimited shipping methods. You can create shipping methods for specific products, categories, countries, as well as cart subtotal. Not just this, you can also configure custom rates using shipping classes as well.

The plugin also has a feature to customize how the shipping methods have to be displayed. You can choose to display shipping methods with radio buttons or in a drop-down fashion.

Download the Free plugin.

The below screenshot shows a sample basic settings to be configured for free shipping on specific products.

WooCommerce Free Shipping | Advanced Flat Rate Shipping Method WooCommerce settings
Advanced Flat Rate Shipping Method WooCommerce settings

If you are looking for even further customization involving shipping zones, state, postcodes, user roles, product SKUs & tags, coupons and so on, then you should probably try out the premium version.

4. WooCommerce Table Rate Shipping Pro Plugin

This plugin helps you set up advanced shipping rules on your WooCommerce store.

One of the features that make this plugin better than the other two is the option to set a range for weight, price, and quantity of the products. If you are offering free shipping based on weight, price, the quantity of the products, categories, shipping destinations(shipping zone, countries, states and postal codes), this should be a better option.

One of the highlighted features is the Method Group column that allows you to combine multiple shipping methods.

In this plugin, the free shipping scenario is created using shipping classes or product categories.

Explore more features of the plugin.

If you prefer watching a video tutorial, you can check out the below video.

Final thoughts

If you want to apply WooCommerce free shipping on certain products without any conditions, you can follow the first method straight away. Else, using one of the above-mentioned plugins might be a good idea.

If you have a specific shipping requirement and are unable to find a solution for it, ask me in the comment section. Hopefully, I’ll get back to you with a possible solution.

Also, read about ways to prevent parcel package theft.

Meanwhile, you can continue reading more amazing articles on our LearnWoo blog.

19 COMMENTS

  1. Hi,
    Is it possible to develop a plugin where shipping is decided based on product category or any other parameter to meet the below scenarios?

    – Number 1: shipped with a local courier. Integration should be made with them. A plugin is available.

    – Number 2: only delivery notes are created and sent to the vendor. Vendor will perform the delivery. Delivery notes should be delivered by email.

    – Number 3: will be delivered by use. Digital delivery note is created and sent by email

  2. hi,

    Im trying to revert a shipping charge when selecting multiple product classes. for example currently if a customer purchases products from class X or Y they will pay product X or Y shipping fee. However if they purchase both X & Y then i only want them to pay the X shipping fee. How do i do this?

  3. Hi

    I need one help, could you please elaborate.

    I am facing some issue on the free shipping, product X, Y, and Z. If customer buy X and Y together will be free shipping? If customer buy X, Y and Z, i will be charging shipping fees of Z. Or scenario will be, customer buy X and Z, i will be charging the shipping fees of X and Z. How can i set it?

  4. Hello,

    Im using a UPS shipping method (via woocommerce plugin), so when I tried to implement a 50% discount in shipping. It doesn’t work.

    Can you help me?

  5. Great article – thanks. I am in the middle of re-platforming my website. We followed your instructions and set up a free shipping class to apply to some products. It worked perfectly! What do you suggest is the best way to automatically apply a “Free Shipping” badge to these products.

  6. Hi,

    I have a question regarding different shipping methods in WooCommerce.
    I have multiple items in my shop which have free shipping within the Netherlands. Now I want to add one new product with a special shipping rate of 3.85 within the Netherlands. However, if you order 2 or more of these products the shipping costs are free.

    What is the best solution to get this done? I can’t figure it out!

    Thank you!

  7. Hi,

    I am facing some problems on the free shipping, product A, B, and C. If customer buy A and B together will be free shipping. If customer buy A, B and C, i will be charging shipping fees of C. Another scenario will be, customer buy A and C, i will be charging the shipping fees of A and C. How can i set it?

  8. Nope, doesn`t work with the first method. And the screenshots are outdated.

    • Hi Liviu,
      The solution has limited capabilities but does work well for the case I have discussed in the example.
      Also, the settings for Shipping Zones and Shipping Classes are still the same in the latest WooCommerce version. Although the settings for other tabs are changed, the screenshots are still relevant.

      Can you please share with us the error you are getting or the Free Shipping business case that you are trying to achieve?

  9. hi,
    I have free shipping products and paid shipping products in my website. paid shipping products are configured as per weight based shipping as am selling some heavy items. So i need the following scenarios to be configured.
    1. Free shipping method should be applied when only free shipping products available in cart,
    2. Weight based shipping method should be applied when a customer add any other products along with free shipping products.

    Hope my idea is clear to you. Any help would be apreicated

    • Hi Vahid,
      You have not mentioned how you are handling the free shipping and if you are using any shipping carrier for calculating shipping rates or not.

      However, for your first case, you can either use a code snippet or simply use the “ELEX Hide Shipping Method Plugin” that I have mentioned in the article. It will hide other shipping methods when free shipping is available for the product(s).

      For the second case, if you are using a shipping carrier like DHL, UPS, FedEx, etc., you don’t have to worry about calculation. As the respective shipping carrier will calculate shipping rates, provided you have selected Weight-based shipping rate calculation in your respective shipping carrier plugin for WooCommerce. If you want to set up manual weight-based rates calculation, you can try any popular WooCommerce Table Rate plugins.

      Hope that helps.

  10. Hi,
    in my case i have some free shipping products and others are charged for shipping products, your tips is perfect if the shipping charge is constant for whatever shippable items customers added. but i need shippable products charge should be varied as the weight increases, . In your tips, shipping charge will be 10 if they add more than 1 kg of products. but for me, it should be changed when weight increases, Any help apreciated.

Leave a Reply to Liviu Cancel reply

Please enter your comment!
Please enter your name here