WooCommerce shipping-class troubleshooting

Shipping-class cost missing or wrong? Test the exact Flat Rate

In core WooCommerce, a shipping class does not create a shipping option by itself. It adds a class cost inside an enabled Flat Rate method, so the product assignment, matched zone, Flat Rate fields, and calculation type must all agree.

Published · Updated · Shipping Contract Guard

The short answer

Open the Flat Rate method in the zone the address actually matches

Confirm that the product or variation has the intended shipping class. Then open the exact Flat Rate method in the matched zone and check that class’s cost field. Finally, check whether the method charges per class or per order.

If checkout has no shipping option at all, start with the no-shipping-options checklist before changing class costs.

1

Confirm the matched shipping zone

Use one complete made-up address and identify the first zone WooCommerce matches. Class costs are stored inside a Flat Rate method in a specific zone. Editing a similar method in another zone will not change this cart.

2

Check the product or variation’s class

Open the product’s shipping settings and confirm the saved class. For a variable product, check the exact variation in the test cart. A parent product and its variations can require separate attention.

3

Check the class cost in the exact Flat Rate method

Open the enabled Flat Rate method in the matched zone. Confirm the base cost, the intended shipping-class cost, and the “no shipping class” cost. An empty class cost does not create a separate rate; the result may use only the base cost.

4

Choose per class or per order deliberately

Per class adds the cost for each shipping class represented in the cart. Per order uses the most expensive shipping-class cost in the cart. The choice matters as soon as two classes appear together.

5

Test one class at a time, then mix them

Use a cart with only class A, a cart with only class B, and a mixed cart containing both. Keep the address and product quantities fixed. This reveals whether the class assignment, individual cost, or calculation type is wrong.

6

Check quantities and the base cost separately

A Flat Rate formula can multiply by quantity, while a base cost can apply once to the whole method. Record the expected result for one item and two items before combining products from different classes.

7

Repeat the same mixed cart after the change

Save one setting, clear stale cart data if necessary, and rerun the same products, quantities, and address. Do not change the class assignment and Flat Rate formula at the same time.

Worked example

Light and bulky products in one cart

Suppose the Flat Rate base cost is EUR 0, the Light class costs EUR 4, and the Bulky class costs EUR 12. The mixed-cart result depends on the calculation type.

CartPer classPer order
Light onlyEUR 4EUR 4
Bulky onlyEUR 12EUR 12
Light + bulkyEUR 16EUR 12

What if the class is correct but the price is still wrong?

Check the Flat Rate base cost, quantity formula, tax setting, and “no shipping class” cost. Then repeat the single-class and mixed carts. If another shipping extension supplies the rate, WooCommerce’s core Flat Rate class fields may not control it.

Save these carts for the next update →
Check which zone the address matched →

Check WooCommerce’s own instructions

WooCommerce documents that shipping classes group products but do not directly offer a rate. Its Flat Rate guide explains base costs, class costs, and per-class versus per-order calculation.

Read WooCommerce’s shipping-class guide →
Read WooCommerce’s Flat Rate guide →
Read WooCommerce’s core shipping checklist →

Save the single-class and mixed-cart results

Shipping Contract Guard saves the shipping options and prices you approve for each test cart, then compares them when the same checks run again. It places no order and uses no customer address.

Install free from WordPress.org