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.

A large cardboard box filled with packing paper sits on a wooden workbench in a warehouse.

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

Cardboard parcels on pallets in a warehouse with a delivery van parked outside.

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.

We use cookies so you can have a great experience on our website. View more
Cookies settings
Accept
Decline
Privacy & Cookie policy
Privacy & Cookies policy
Cookie name Active

Who we are

Our website address is: https://zadic.net.

Comments

When visitors leave comments on the site we collect the data shown in the comments form, and also the visitor’s IP address and browser user agent string to help spam detection. An anonymized string created from your email address (also called a hash) may be provided to the Gravatar service to see if you are using it. The Gravatar service privacy policy is available here: https://automattic.com/privacy/. After approval of your comment, your profile picture is visible to the public in the context of your comment.

Media

If you upload images to the website, you should avoid uploading images with embedded location data (EXIF GPS) included. Visitors to the website can download and extract any location data from images on the website.

Cookies

If you leave a comment on our site you may opt-in to saving your name, email address and website in cookies. These are for your convenience so that you do not have to fill in your details again when you leave another comment. These cookies will last for one year. If you visit our login page, we will set a temporary cookie to determine if your browser accepts cookies. This cookie contains no personal data and is discarded when you close your browser. When you log in, we will also set up several cookies to save your login information and your screen display choices. Login cookies last for two days, and screen options cookies last for a year. If you select "Remember Me", your login will persist for two weeks. If you log out of your account, the login cookies will be removed. If you edit or publish an article, an additional cookie will be saved in your browser. This cookie includes no personal data and simply indicates the post ID of the article you just edited. It expires after 1 day.

Embedded content from other websites

Articles on this site may include embedded content (e.g. videos, images, articles, etc.). Embedded content from other websites behaves in the exact same way as if the visitor has visited the other website. These websites may collect data about you, use cookies, embed additional third-party tracking, and monitor your interaction with that embedded content, including tracking your interaction with the embedded content if you have an account and are logged in to that website.

Who we share your data with

If you request a password reset, your IP address will be included in the reset email.

How long we retain your data

If you leave a comment, the comment and its metadata are retained indefinitely. This is so we can recognize and approve any follow-up comments automatically instead of holding them in a moderation queue. For users that register on our website (if any), we also store the personal information they provide in their user profile. All users can see, edit, or delete their personal information at any time (except they cannot change their username). Website administrators can also see and edit that information.

What rights you have over your data

If you have an account on this site, or have left comments, you can request to receive an exported file of the personal data we hold about you, including any data you have provided to us. You can also request that we erase any personal data we hold about you. This does not include any data we are obliged to keep for administrative, legal, or security purposes.

Where your data is sent

Visitor comments may be checked through an automated spam detection service.
Save settings
Cookies settings