If you have ever configured the WooCommerce shipping options you will have noticed that there is an option in the shipping zones that allows you to assign free shipping to any shipping method, but the problem with this is that it would offer this option to all products that use this shipping method.
Of course, you can deactivate it, but then why create it?
The reality is that you must be very clear that when you add the free shipping option to a shipping method this should be the only shipping method, because no one will accept another one unless it is urgent or something like that.
So can’t you offer free shipping only for certain products, regardless of the shipping method?
Yes, and we will use the shipping types for that.
Create a shipping class
The first step is to create a new type of shipping, which we will call “Free Shipping”. If you want to add a description, for internal purposes.
Assign the new free shipping class to your zones and shipping methods
Now you must edit the fixed price shipping methods that you have in all your shipping zones and set the shipping prices as indicated below.
It is very important that you do not define any price for the base cost of the fixed price. Then, in the cost of the free shipping class set it to zero and then in the cost without shipping class, and the fixed price if it is not free.
Finally, choose the calculation type “Per class: Charge for each shipping class”.
Assign free shipping to your products
All that remains is to define which products we will apply this special kind of free shipping to. This is done in the shipping data of each product.
When you save the product you have already achieved it. That product, and any other, with the free shipping class assigned will have zero shipping cost assigned, not the rest, to which the classless shipping rate will be applied.
Read this post in Spanish: WooCommerce: Cómo asignar envío gratuito a productos concretos