WooCommerce shipping classes let you group heavy or bulky products and apply different delivery costs through a shipping method such as Flat Rate. Create the class, assign your products, then set its cost in the right shipping zone.
The important part? A class alone doesn't create a shipping charge. We recommend connecting all three settings before you start selling, so a large order doesn't leave your store covering an unexpected delivery bill.
Start with the products that cost more to send.
Key Takeaways
- Group products by shipping needs, then assign each product the appropriate class.
- Enter class costs inside the Flat Rate method for each relevant shipping zone.
- Choose whether mixed baskets add class charges together or use the highest class charge.
- Keep shipping tax and free-shipping eligibility separate from your class setup.
Identify Products That Need a Shipping Class
Heavy products and bulky products can create different fulfillment costs. A dense item adds weight. A large, lightweight item takes up space. Both deserve attention before you choose a delivery price.
We recommend grouping products around how you pack and send them. Use actual carrier invoices, packaging costs, and preparation work to guide your decisions.

Simple class names such as "Heavy" and "Bulky" keep the dashboard easy to manage. Create separate classes only when your shipping rules need a meaningful difference.
Keep the limits clear, too. A shipping class doesn't calculate a carrier quote, book freight, or decide whether a package is oversized. It gives a compatible shipping method a product group to price.
If your rates depend on exact weights, dimensions, or destinations, fixed class charges may not cover the full calculation.
Create WooCommerce Shipping Classes and Assign Products
Add the class in shipping settings
Open WooCommerce > Settings > Shipping > Shipping classes. Add a shipping class and give it a clear name.
Use a description to explain what belongs in that group. A useful description helps anyone maintaining the catalog apply the same rule consistently. Save the class before assigning products.
WooCommerce's product shipping classes documentation covers creating classes and connecting them to products. The class is a reusable group, so you don't need to create a new one for every listing.
Keep the list manageable. Too many similar names make assignments harder and increase the chance of charging the wrong amount.
Assign the class to each product
Edit the product, then open Product data > Shipping. Choose the appropriate option in the Shipping class field and update the product.
Each product can have one shipping class. Choose the group that matches its delivery treatment rather than trying to stack several classes.
For variable products, variations can inherit the parent's class or use their own assignment. That matters when different sizes have different shipping needs.
Product weight and dimensions are separate fields. Entering them doesn't automatically assign a Heavy or Bulky class. Save the class assignment itself.
Set Class Costs Inside the Correct Shipping Zone
Add or edit the Flat Rate method
Go to WooCommerce > Settings > Shipping > Shipping zones. Open the zone serving your intended destination, then add or edit its Flat Rate method.
The zone decides where the method is available. The method contains the pricing settings.
Our guide to setting up shipping zones explains how location-based coverage connects to delivery methods. Put narrow postcode-based zones above broader regions because WooCommerce uses the first matching zone.
A class cost entered in one zone doesn't automatically configure every other zone. Repeat the pricing setup wherever that product group needs a different delivery charge.
Set the base and class amounts
Flat Rate includes a general Cost field plus separate shipping-class costs. Class charges are added to the base amount.
Want the class amounts to determine the charge without an extra base fee? Set the base Cost to 0.
Next, enter the amounts for your Heavy or Bulky classes. Use No shipping class cost for products that haven't been assigned a class.
The Flat Rate shipping documentation explains these fields and their calculation options.
Don't overlook the base amount when reviewing totals. A correct class fee can still produce an unexpected charge if an old base cost remains in place.
Give the method a customer-facing title that describes the service clearly, then save your changes.
Choose How Mixed Baskets Combine Shipping Charges
Compare Per class with Per order
The Calculation Type setting controls how different class costs combine.
Per class adds the applicable class charges together. Per order uses only the most expensive applicable class charge. Both add the result to the base Cost.
WooCommerce documents this example with a zero base cost, Heavy at $10, and Small at $1.
| Calculation type | Basket containing Heavy and Small |
|---|---|
| Per class | $11 shipping |
| Per order | $10 shipping |
These are documentation examples, not suggested delivery prices. Choose the calculation that matches your fulfillment costs, rather than whichever produces the lowest checkout total.
Decide whether quantity should increase the charge
A fixed class amount doesn't automatically multiply by the number of products assigned to that class.
If each additional unit creates another shipping cost, Flat Rate supports quantity formulas. WooCommerce's documentation uses 20 * [qty] as an example of charging $20 per product in a class.
In a class-cost field, [qty] refers to the quantity within that class. In the base Cost field, it refers to the shipment's item quantity.
That distinction matters when customers buy several heavy items. We recommend deciding whether your charge belongs to the class group or to each unit before entering the formula.
Keep Shipping Tax and Free Shipping Separate
A shipping class doesn't set tax
Shipping classes control delivery pricing. Tax classes control tax calculations. Assigning a product to Heavy doesn't configure either product tax or shipping tax.
Where shipping must be taxed, the applicable tax-rate row needs Shipping selected, and the shipping method must allow taxation. For core Flat Rate, that includes setting Tax status to Taxable where required.
Our guide to product and shipping tax rates covers how these settings connect. Keep the delivery fee and its tax treatment as separate decisions.
A class doesn't block free shipping
Adding a Heavy class doesn't automatically stop a customer from qualifying for an available Free Shipping method.
A minimum-spend offer or qualifying coupon can still make that method available under its configured requirements. If your promotion excludes bulky products, the shipping rules must actually enforce that exclusion.
Core class-based Flat Rate pricing alone doesn't create a free-shipping exclusion.
A bulky-item charge inside Flat Rate only affects that method. It doesn't add a surcharge to a separate Free Shipping option.
Diagnose Incorrect Rates Without Guesswork
Start with the customer's location and the zone that applies. A correctly configured Heavy class won't help if checkout is using a different zone's method.

Next, review the saved product assignment, the matching class-cost field, and the calculation type. WooCommerce's core shipping troubleshooting guide identifies these as key settings when class-based charges look wrong.
Pay attention to products without a class. Their treatment depends on the No shipping class cost field, not the Heavy or Bulky amount.
Quantity formulas deserve a separate look. A repeated charge may be doing exactly what the formula requests, even when you intended one fee for the group.
We recommend changing one setting at a time and comparing the resulting charge with your intended rule. Keep rate-setting problems separate from stale totals or a checkout that stops responding. Those symptoms can involve sessions, caching, or plugin behavior.
Give Your Store a Reliable Hosting Base
Shipping rules need a checkout that responds when customers change products, quantities, and addresses. Hosting supports that activity, while your WooCommerce settings determine the charge.
Keep Cart, Checkout, and My Account outside shared full-page caching. Customer-specific totals shouldn't be served as a static page.
Ready to give your store a dependable home? Explore our cPanel hosting options for a familiar control panel and straightforward website management.
For a store needing more hosting capacity, our Web Hosting Plus plans start at $30.99 per month. Choose the plan around your catalog, traffic, and checkout workload.
We want your store ready for the order, not only the product-page visit. Clear shipping rules and suitable hosting each have a job to do.
Frequently Asked Questions
Can a product have more than one shipping class?
Each product can have one shipping class. If a product is both heavy and bulky, assign the class that matches the pricing rule you want to apply. Variations can have their own class assignments when their delivery requirements differ.
Does creating a class immediately change checkout prices?
No. The class must be assigned to a product, and a compatible shipping method needs a cost configured for it. With core Flat Rate, those class-cost fields sit inside the method for the relevant shipping zone.
Does this setup require an extra plugin?
Basic shipping-class pricing works with WooCommerce's built-in Flat Rate method. More complex requirements, such as live carrier quotes or freight-specific calculations, need a shipping solution that supports those rules. Start with the built-in options when fixed class charges fit your costs.
Make Heavy-Product Shipping Predictable
Reliable shipping totals come from connected settings: the product assignment, the matching zone, and the method's class costs. Get those working together before adding more pricing rules.
We recommend keeping your class list simple and choosing quantity and mixed-basket calculations deliberately. Your customers get a clear delivery price, and your store has a better basis for covering the cost of sending the order.





