When WooCommerce shipping not showing at checkout, turn on shipping debug mode before you touch a single setting. It tells you which zone WooCommerce matched to the address, and it switches off the rate caching that makes your own fixes look like they failed. Most cases then resolve in native settings without a plugin.

Every guide on this topic lists debug mode as step seven or eight, after a checklist of things to inspect by hand. That order is backwards. The tool that answers the question should come first.

Start with debug mode

Go to WooCommerce, then Settings, then Shipping, then Shipping options. Debug mode is at the bottom of that page. Turn it on, save, then add a product to the cart and go to checkout.

WooCommerce now shows a notice on the cart and checkout pages naming the shipping zone it matched to the address. If that zone is not the one you expected, you have found the problem. If it says no zone matched, you have also found it.

The part almost nobody explains. Debug mode also disables shipping rate caching. WooCommerce stores calculated rates against your cart contents and address. That is good for a live store and awful while you are configuring one. You change a setting, reload the cart, and see the old cached rate. The fix worked. The cache hid it. People conclude the change did nothing and start changing other things.

With debug mode on, every reload recalculates from scratch, so what you see is what you set.

Two practical notes. Adding ?debug_shipping=1 to the checkout URL surfaces the same information. And turn debug mode off before you finish, because the notice displays to real customers.

If the same rate shows for every address

This is the version that costs people days, and the cause is zone order.

WooCommerce checks zones from the top of the list downwards and stops at the first match. One zone wins. The rest are never evaluated. If a broad zone such as “United States” sits above a specific zone such as “California”, customers in California only ever see the broad zone’s methods. WooCommerce found a match and stopped looking.

One store owner described exactly this in a WordPress.org support thread. The same flat rate appeared for every country, changing the address did nothing, and two days of disabling plugins and switching themes fixed nothing. What finally worked was dragging a zone up the list.

Keep the rule simple. Specific zones above general ones. Postcode-level zones above state zones, state zones above country zones, country zones above regional ones. Debug mode confirms which zone is winning, so you can see the fix work.

If no shipping options show at all

Once debug mode has named the matched zone, or told you none matched, the list narrows quickly.

CauseWhat you seeFix
Address outside every zone“No shipping options were found”Add the missing region, or add a fallback zone
Zone has no method assignedEmpty shipping sectionAdd Flat Rate, Free Shipping or Local Pickup to the zone
Method exists with no cost setMethod missing or blankOpen the method and enter a rate
Product has no weight or dimensionsCarrier methods vanish, flat rate survivesAdd weight and dimensions on the product
Shipping class has no costMethods missing for some products onlySet a cost for that class, or for “no shipping class”
Shipping disabled globallyNothing anywhereSettings, General, check the shipping location setting
Stale cache or sessionOld rates survive your changesDebug mode on, purge caches, clear customer sessions
Plugin or page-builder conflictMethods vanished after an update or redesignTest with the default cart and checkout, then isolate

For the last row, WooCommerce’s own troubleshooting documentation recommends testing with the default Cart and Checkout pages rather than a page-builder version. Custom checkout layouts are a common source of missing methods. Switching back for a single test isolates that in minutes. If a plugin turns out to be the cause, our guide to fixing a plugin that is not working covers the isolation process.

Clearing customer sessions lives under WooCommerce, then Status, then Tools. It resets the cached address and cart state for every visitor, which sometimes matters after a zone change.

Two causes that look like something else

A product marked Virtual. If any product in the cart has Virtual ticked on its Shipping tab, WooCommerce decides the order needs no shipping and shows nothing. The symptom looks like a zone problem. It is a product setting, and it belongs in the same family as product images not showing, where the cause sits on the product rather than in the store configuration.

A carrier plugin that stopped talking to the carrier. Live rate plugins for USPS, UPS, FedEx and similar depend on the carrier’s API. When the carrier changes something and the plugin is out of date, live rates disappear while Flat Rate keeps working. One method type failing while another survives is a diagnostic clue on its own. Update the extension first.

Add a fallback zone

This one change removes the “no shipping options available” error permanently.

WooCommerce provides a zone called “Locations not covered by your other zones”, and it catches every address that falls through the zones you configured. Put a Flat Rate on it, even a deliberately high one. A customer who lands there sees a rate rather than a dead end.

The commercial logic is worth stating. An unexpected shipping rate is recoverable, since the customer can contact you or come back later. A checkout with no options at all is a lost order, and you rarely find out it happened. Our guide to WooCommerce checkout not working covers the other ways a checkout quietly fails, and speeding up WooCommerce checkout covers the slow version of the same loss.

Do you actually need a shipping plugin?

Usually not for this problem, and it is worth saying plainly because most articles on this topic are written by companies selling one.

Zones, methods, rates, product weights and the fallback zone are all native WooCommerce. The large majority of missing-shipping cases resolve there. A plugin earns its place for table rates by weight or destination, per-product shipping rules, or a carrier integration with live rates. It does not earn its place when a zone is missing a method.

If you have a shipping plugin installed and methods stopped appearing after an update, treat the plugin as a suspect rather than a solution. Deactivate it on a staging copy and see whether core methods return.

Key takeaways

Turn on shipping debug mode before you change anything. It names the matched zone and stops the rate caching that makes fixes look broken. Turn it off again when you are done.

If the same rate shows for every address, the cause is zone order, since WooCommerce stops at the first match. Specific zones go above general ones.

If nothing shows at all, work through the table: a zone without a method, a method without a rate, a product without weight, a product marked Virtual. Then add a fallback zone with a flat rate so no customer ever sees an empty shipping section again.

Frequently asked questions

Why does WooCommerce say no shipping options were found?

Because the customer’s address did not match any shipping zone, or the matched zone has no enabled method with a rate. Turn on shipping debug mode to see which zone matched, then either add the missing region to a zone or add a Flat Rate to the fallback zone so no address falls through.

Why does the same shipping rate show for every country?

Zone order. WooCommerce checks zones from top to bottom and stops at the first match, so a broad zone above a specific one wins every time. Drag specific zones above general ones in WooCommerce, then Settings, then Shipping. Debug mode confirms which zone is now matching.

I changed my shipping settings and nothing happened. Why?

WooCommerce caches calculated shipping rates against the cart contents and address, so a reload can show the old rate after a correct change. Turn on shipping debug mode, which disables that caching, then test again. Clearing customer sessions under Status, then Tools resets cached cart state as well.

Do I need a plugin to fix missing shipping methods?

Almost never for this problem. Zones, methods, rates, product weights and the fallback zone are all native settings and cover most cases. A plugin makes sense for table rates, per-product rules, or live carrier rates. If methods vanished after a plugin update, the plugin is more likely the cause than the fix.

Store still not showing shipping?

If debug mode names a zone that looks right and the methods still will not appear, the cause is usually a conflict somewhere in the checkout stack. That takes longer to isolate than a store can afford to be broken. Survyc is an AI-first digital agency that fixes WooCommerce checkouts for agencies and store owners, and we will tell you which setting or plugin is responsible rather than selling you another one. Send us the store URL or email info@survyc.com. If you would rather have someone watching the checkout month to month, our WordPress care plans cover WooCommerce stores.