How to Assign Free Shipping to a Single Product in WooCommerce

How to Assign Free Shipping to a Single Product in WooCommerce
On this page
  1. Why Use a Shipping Class Instead of a Plugin
  2. Step 1: Create a Shipping Class
  3. Step 2: Assign the Shipping Class to Your Product
  4. Step 3: Configure Your Flat Rate to Respect the Shipping Class
  5. Troubleshooting
  6. Frequently Asked Questions
  7. Conclusion

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

  1. Go to WooCommerce → Settings → Shipping → Shipping Classes
  2. Click “Add Shipping Class”
  3. Name it something clear, like “Free Shipping”
  4. Save changes

Step 2: Assign the Shipping Class to Your Product

  1. Edit the product that should get free shipping
  2. Go to Product Data → Shipping
  3. Select the “Free Shipping” class from the Shipping Class dropdown
  4. Update the product

Step 3: Configure Your Flat Rate to Respect the Shipping Class

  1. Go to WooCommerce → Settings → Shipping → Shipping Zones
  2. Edit each zone’s Flat Rate method
  3. Set the base “Cost” field to your normal rate
  4. Set the “Free Shipping” class cost field to $0
  5. 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.

Leave a Reply

Schedule a call