Shipping costs aren’t applying on WooCommerce
The most common symptom isn’t a wrong shipping cost, it’s no shipping cost at all: the customer reaches the shipping step and sees no method offered. WooCommerce organises shipping into zones, each tied to countries or postcodes with its own methods; if the customer’s address doesn’t match any zone, WooCommerce shows nothing rather than a default rate.
How I go about it
-
Checking the shipping zones
I reproduce the journey with the customer’s exact address under WooCommerce > Settings > Shipping > Shipping zones. If no zone covers that country or postcode, that’s the most common cause of no shipping cost at all.
-
Checking free shipping conditions
I check the trigger conditions on the "Free shipping" method: minimum order amount, required coupon, or a combination with another method. These are often set differently from other methods in the same zone, creating inconsistent cases.
-
Checking shipping classes
A shipping-class rate only applies if every product in the cart actually has a class assigned. An unassigned product silently falls back to the zone’s base cost, throwing off the total with no visible error.
-
Testing the live recalculation
The shipping total recalculates over AJAX every time the cart or address changes. I check the browser console for a JavaScript conflict, often from the theme or another plugin, blocking that recalculation.
-
Telling configuration from integration
If the need goes beyond a fixed rate table, real-time carrier pricing for example, I work out whether it needs a dedicated API integration rather than another zone setting.
What I handle regularly
- No shipping method shows up at the cart or checkout step
- Free shipping applies when it shouldn’t, or the reverse
- The shipping rate stays stuck at an amount that doesn’t match anything after an address change
- Some products add no shipping cost when they should
- The shipping total doesn’t update when the customer changes their cart
How WooCommerce decides on a shipping rate
WooCommerce has no default shipping rate: each zone (WooCommerce > Settings > Shipping > Shipping zones) defines the countries, regions or postcodes it covers, and offers its own methods (flat rate, free shipping, local pickup…). If the customer’s address doesn’t match any configured zone, WooCommerce simply shows nothing at checkout, which explains most cases where a customer sees no shipping method.
The "Free shipping" method has its own trigger conditions: minimum amount, coupon, or a combination of several. They’re set independently from other methods in the same zone, which easily creates inconsistencies if one changes without the others following.
Shipping-class rates, meanwhile, depend on an assignment made product by product. An item left without a class doesn’t trigger any class-related surcharge and silently falls back to the zone’s base rate.
Worth reading too
Describe your need in one minute
A few targeted questions so I can reply with an estimate rather than another questionnaire.