You can assign free shipping to a single product in WooCommerce entirely through the settings screen — no code required — by creating a dedicated shipping class, assigning it to that one product, and configuring your Flat Rate methods to charge $0 for that class while keeping normal rates for everything else.
Why Use a Shipping Class Instead of a Plugin
- WooCommerce’s default Free Shipping method applies to the entire cart, not individual products
- Shipping classes solve per-product shipping rules using only core functionality
- No additional plugin cost or maintenance required
Step 1: Create a Shipping Class
- Go to WooCommerce → Settings → Shipping → Shipping Classes
- Click “Add Shipping Class”
- Name it something clear, like “Free Shipping”
- Save changes
Step 2: Assign the Shipping Class to Your Product
- Edit the product that should get free shipping
- Go to Product Data → Shipping
- Select the “Free Shipping” class from the Shipping Class dropdown
- Update the product
Step 3: Configure Your Flat Rate to Respect the Shipping Class
- Go to WooCommerce → Settings → Shipping → Shipping Zones
- Edit each zone’s Flat Rate method
- Set the base “Cost” field to your normal rate
- Set the “Free Shipping” class cost field to $0
- Confirm “Calculation type” is set to charge per class (rather than per order) so class-specific costs apply correctly
Once configured, any cart containing only the free-shipping-class product will show $0 shipping, while other products continue to use the standard rate.
Troubleshooting
Shipping Isn’t Free Even Though the Class Is Assigned
Confirm “Charge per class” is actually enabled on the Flat Rate method — without it, the class-specific $0 cost field is ignored.
Cart With Multiple Products Doesn’t Show Free Shipping
This is expected — if the cart contains a mix of free-shipping-class and normal-class products, the “no shipping class” rate typically still applies unless you’ve configured the calculation to handle mixed carts differently.
Shipping Class Isn’t Showing in the Product Dropdown
Confirm the shipping class was actually saved under Shipping Classes settings — a class created but not saved won’t appear in the product-level dropdown.
Frequently Asked Questions
Do I need a plugin for per-product free shipping?
No — this is fully achievable through WooCommerce’s native shipping classes and Flat Rate settings.
Can I assign free shipping to multiple specific products?
Yes — assign the same “Free Shipping” class to as many products as needed; they’ll all share the same $0 class cost.
Does this work across multiple shipping zones?
Yes — repeat the Flat Rate configuration step in each zone where you want the free-shipping-class rate to apply.
Conclusion
Assigning free shipping to a single product in WooCommerce is a three-step settings-only process using shipping classes — no plugin or code needed. The key detail to get right is enabling “charge per class” on your Flat Rate method.
See also How to Hide Other Shipping Rates When Free Shipping Is Available in WooCommerce. Then read How to Display a $0.00 Amount for Free Shipping Rates in WooCommerce.
Prefer no code? All-in-One Utilities Woo Add-on adds over 50 WooCommerce features, so you can switch them on without code.