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.
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.