Shipping

How to fix WooCommerce shipping not calculating

WooCommerce shipping not calculating needs a specific basket and destination to investigate. A missing rate can be the correct result for an unsupported address, a shipping rule that never matches or a carrier service that returned no quote. Work through that customer's journey before changing prices across the shop.

Time: 25-50 minutes Level: Beginner to intermediate
Neil McNaught, founder of BugShield and WordPress author
Written by
Written by
Updated
Updated

Recreate the basket and delivery destination

A delivery rate is the result of the customer's address, the items in their basket and the rules you have configured. Recreating that exact combination gives you something concrete to compare with your shipping settings. Work outward from one failing address before changing a rule that also serves other customers.

Reproduce the missing rate with a complete address

Record the products, variations, quantities and coupon used, then test the same basket in a private window. Enter the complete delivery country, region and postcode at checkout. A location guessed before the shopper supplies an address is not a reliable test of the final rate.

Check WooCommerce > Settings > General for the allowed selling and shipping locations. Confirm the destination is one you intend to serve. If rates appear but refuse to change after an address or quantity update, compare our cart update guide. A frozen display and an unavailable shipping service need different fixes.

WooCommerce example checkout showing shipping address fields, a flat-rate option and order total
Compare the entered shipping address, selected delivery option and shipping line in the total. The example's flat rate is demonstration data, not a suggested charge or a guarantee for an incomplete address. Image unchanged. Credit: WooCommerce contributors, GPL-2.0-or-later.

Find the first shipping zone that matches

Open WooCommerce > Settings > Shipping > Shipping zones. A zone is a delivery area with its own methods. WooCommerce uses the first matching zone from the top, so arrange specific postcode or regional zones above broader country zones. It does not combine methods from every matching area.

Edit the matching zone and check its countries, regions and postcode restrictions against your test address. Use the left-hand drag handle to correct zone order and save. Consult the shipping-zone reference for postcode matching. A wildcard includes every postcode sharing that prefix, so check the boundary rather than assuming two similar prefixes mean the same area.

For an address outside every configured zone, review the fallback zone, called Rest of the world in current versions. A zone with no available shipping method intentionally offers no delivery. Do not add worldwide shipping simply to remove the error if the business cannot fulfil those orders.

Check the method and its conditions

Inside the matched zone, confirm the intended method is enabled. Open its settings and check its saved cost or eligibility rules. If it is absent, use Add shipping method to add only a service you actually offer. Record the original settings before changing them so that an unsuccessful test can be reversed.

For Flat Rate, inspect the base cost and any shipping-class costs or formulas. A shipping class groups products for a pricing rule; it does not supply a rate on its own. Compare the affected item's class with a working product and follow the Flat Rate settings guide. Do not invent a new price merely to make a method appear.

If Free Shipping is missing, check whether it requires a minimum spend, an eligible coupon, either condition or both. Review whether the minimum is evaluated before coupon discounts. Test just below and above the threshold using the same tax display settings. WooCommerce's Free Shipping guide explains those controls; our coupon guide covers coupon eligibility.

Inspect the product that needs delivery

Go to Products > All Products and edit the item. In Product data, check whether Virtual is selected. A virtual item does not require shipping. Downloadable is a separate setting: a downloadable product is not automatically virtual. For a variable product, inspect the selected variation as well as the parent product.

Carrier-rate extensions can require weight, dimensions, a shipping origin and a supported package size. Confirm these values and the shop's measurement units before testing. Built-in Flat Rate does not universally require a product weight, so adding random measurements is not a general repair. Use our variation guide if only one size or colour fails.

Separate carrier failures from shop configuration

When a live carrier quote is missing, identify the extension under Installed Plugins and check its account connection, enabled services and origin address. Turn on its documented diagnostic logging, perform one test and read the relevant source and date under WooCommerce > Status > Logs. An account error, unsupported parcel or excluded destination needs the corresponding correction.

On a protected staging copy, add a clearly labelled temporary Flat Rate to the same zone. If that appears for the same address while the carrier rate does not, focus on the carrier integration. Remove the temporary method afterwards; do not expose a diagnostic price on the live shop.

For core methods, open WooCommerce > Settings > Shipping > Shipping settings, select Enable debug mode and save, following the shipping troubleshooting guide. Use it on staging to inspect the matched zone, then turn it off because messages can be visible to shoppers. If the layout suppresses those messages, have support inspect the matching result rather than treating silence as proof.

Verify prices at the edges of your delivery rules

Retest an address inside the repaired zone, one outside it and any overlapping region. Change the basket quantity, try a different shipping class and test the free-shipping threshold if used. Confirm the chosen method and final total remain correct through checkout. You do not need to submit repeated payments just to inspect available shipping rates.

If correct rates appear in standard Cart and Checkout layouts but fail in a builder layout, use our checkout guide to isolate that customisation on staging. Keep WooCommerce and the shipping extension active. Apply only the confirmed fix to the live shop, remove temporary methods and logs, and repeat the original customer's basket test.

Get help with the next step

If overlapping zones or carrier rules make the price hard to explain, BugShield can help trace the shipping calculation using a specific basket and destination.

Questions answered

How to fix WooCommerce shipping not calculating FAQs

Why is a customer's cheaper local rate missing?

Check whether a broader zone above the local zone matches first. WooCommerce selects one zone, so move the more specific area above the broader one and retest the boundary addresses.

Does every product need a weight for shipping?

No. Built-in Flat Rate does not require weight for every product. Carrier or rule-based extensions can require accurate weight and dimensions, so follow the installed method's requirements.

Why is free shipping unavailable after a coupon?

Check the method's minimum-spend rule and whether it evaluates that minimum before coupon discounts. Also confirm that a required free-shipping coupon is eligible and applied.

Should downloadable products show shipping?

Downloadable and Virtual are separate settings. Mark a product Virtual only when it needs no physical delivery. Inspect the selected variation when different versions have different delivery requirements.

Can I leave shipping debug mode enabled?

Disable it after diagnosis. It can show diagnostic messages to shoppers, and a passing debug test should be followed by a normal checkout test with temporary methods removed.

Need a hand with your WordPress site?

Tell us what happened and where you got stuck. A BugShield developer can help you work out the next step and confirm a price for the fix.

Explore help with this issue

Accessibility settings

Adjust how this site looks and moves. Your choices are saved in this browser.