Please note the commenter that pointed out a flaw in this if you have products with different shipping methods:
The problem with this, is if you also have weight based shipping selected, and only want specific pricing for a handful of products, and someone selects one of those products AND a product which is included in weight based shipping, the customer is given two options for shipping, the flat rate (cheaper) and the weight based (more expensive). -Adam Winchester
I’m a big fan of WooCommerce, seriously. I hate how much they nickel and dime for small features like this though. It’s easier for me to move past it because I’m able to do a lot of tweaking in the code with hooks to get what I need done thereby saving a few dollars. But sometimes, like this example, you can do it with no coding at all.
The shipping system in general can be pretty confusing so I’m going to walk you through how you can have custom, flat rate shipping prices for different products.
Shipping Zones & Methods
Under WooCommerce Settings click the Shipping tab. Here you need to add a new zone. For my example I call it US Flat Rate with a Flat Rate shipping method.
Now the confusing interface part. In order to set details for flat rate you need to click on the words “Flat Rate” in your newly saved Shipping Zone row. Let’s not do that yet though, click over to “Shipping Classes” option on this page.
Shipping Classes
This is where we will create our per item shipping prices. Let’s say we have three products: T-Shirt, Mug and Hat. We are going to create three shipping classes.
Now repeat for the other two items.
Back to Shipping Zones
Bounce back over to shipping zones, click on the “Flat Rate” link on your new shipping class row and let’s do some pricing.
Set the main cost to $0.00 then for each shipping class add the price for that item. It’s that simple. Go to your T-Shirt product and under shipping select the T-Shirt class. Now it will have that flat price added to the product for shipping on checkout.
The problem with this, is if you also have weight based shipping selected, and only want specific pricing for a handful of products, and someone selects one of those products AND a product which is included in weight based shipping, the customer is given two options for shipping, the flat rate (cheaper) and the weight based (more expensive).
Oh wow, totally missed that. Thank you! I’ll add an edit to the post to address this.
This sounds like a good solution, but what if you have 2 options for shipping for each product: Airmail and DHL. And to make it simple say Airmail is $20 per item and DHL is $50 per item. How can I best setup a way to have the shipping of each item be cumulative at the checkout?
I’ve also gone and got the extra Woocommerce plugin Per Product Shipping, and I still can’t work out how to do this! https://docs.woocommerce.com/document/per-product-shipping
Thanks for your help
I am having the same issue.
If you found a way to add up all shipping costs at checkout, let me know!
Hey Chris,
In case if you need not to write code for the same. You can try one better plugin for all your shipping related issues. Woocommerce allows only one flat rate shipping method by default. Advanced Flat Rate Shipping Method For Woocommerce plugin allows you to create multiple custom Extra flat rate shipping methods, including free shipping for WooCommerce. Also, you can create shipping methods which will be available at specific conditions.
https://store.multidots.com/advanced-flat-rate-shipping-method-for-woocommerce
Thanks! Much appreciate this info. You got me rolling , It works for my store for now.
Once my products become more complex I may consider the woocommerce “Per-Product Shipping” plugin, which appears to allow lots of granular shipping options per product. https://docs.woocommerce.com/document/per-product-shipping/
Thanks a million! this worked very well for me.
I also felt like it’s a bit much to charge for such a small feature and was preparing myself to do some code work. I prefer this to whatever I’d have written, less breakable and still very intuitive for my users.
Hi,
Many thanks for this. It works for me exactly as described. One issue is if someone buys 2 or more items from the same shipping class then they only pay one shipping fee. Although I don’t necessarily want them to pay 2 or 3 times the shipping fee it usually is more. Is there any way to increase the shipping fee in this case?
There’s always a way, but that sounds pretty complicated so you’d need to hire a dev to work that one out.
I have several shipping classes saved in a method called ‘Delivery’. All work fine apart from the ‘free shipping’ option.
As the cost of free shipping is set to ‘0’ it doesn’t seem to recognise the value. So when I go to the checkout on a product that has free shipping, instead of say Shipping: £0.00 it instead displays the Method title, so it reads ‘Shipping: Delivery’ – which looks a bit rubbish. Is there any way I can make it display £0.00?
I have UPS & USPS Shipping methods, but I want to apply each method to a specific product category, such that when one checkouts only the respective shipping method for that particular category is set. If there are two different products from different categories then both UPS & USPS appear on checkout. How can i go about this? Thank you
I too use the UPS & USPS Shipping methods. Awoke to a rude awakening this morning that there is no longer a suitable option.
@Justin @Munaye I feel, by creating two shipping classes for both types of products (UPS and USPS) you can display shipping rates for both these types of products.
You would require WooCommerce Multi-Carrier Shipping plugin (https://www.pluginhive.com/product/multi-carrier-shipping-plugin-for-woocommerce/) where you can set shipping carriers like UPS and USPS based on shipping classes, weight, quantity, etc. The plugin provides live shipping rates for UPS, FedEx, USPS, Stamps, and DHL.
I’ve tried this, but I’m not sure that it’s working for me – or I may be misinterpreting the function. I have four proucts with flat rate shipping going to three different zones. Each product is shipped in its own box – therefore the flat rate shipping needs to be applied for each individual product added to the cart. Four items = four flat rate shipping charges added.
Is this what this tutorial addresses? I’ve added four classes for my four products and then configured that flat rate shipping as you’ve outlined above, but the cart still only calculates one flat rate shipping charge. I appreciatae you shareing tutorial.
The problem we are having is Woo is defaulting to ‘per item’ shipping. The customer buys 2 products and gets charged freight on each item.
In the latest Woo there is no option for ‘Cumulative’ freight.
Having entered weights and sizes, the freight should be cumulative.
The NZPost plugin does this.
Any cures?
Cheers! Great tutorial.
Chris, I created 20 flat rate shipping rates in my Woocommerace site form your article (not per product) as such:”Flat Rate Shipping 0″ shipping class cost $0
“Flat Rate Shipping 1 ” shipping class cost $1.95
“Flat Rate Shipping 2” shipping class cost $2.95 etc.
Then I went to each product (I have over 200 products on my site) to edit the shipping cost and chose the Flat Rate number that matched the cost from # 1 to 20 that appeared on the drop down in the product edit and saved it for that product.
When I ordered the product to test it and added it to the cart to check out there appeared “Flat Rate” for the shipping charge but no price for shipping that was added to the total price at check out.
Can you advise. Thanks, Mike Ciriello
I must thank you about this lesson, if i will say in arabic (شكرا يا حب)
Chris, thanks for this. Just a question, when I set N/A to a shipping class on particular shipping method, the method still appear. How to solve this?
Thanks for posting this. Very helpful.
Thanks so much for this tutorial … yes, it is very helpful! Allowed me to skip buying a plugin.
Chuck
Thanks for the post Chris. The only problem I had was when I had products of different sizes that have different costs to ship. For example a Large Bicycle and a Medium Bicycle because using your technique above it only reverts to the flat rate shipping for the bicycle.
How would you set up the free plus shipping option in woo-commerce.