E-commerce

WooCommerce Shipping Not Showing at Checkout? Fixing "No Shipping Options", Missing Rates and Wrong Zones

WooCommerce shipping not showing at checkout, or "no shipping options were found"? Fix zones, pin codes, weights, classes, caches and plugin conflicts.

WooCommerce Shipping Not Showing at Checkout? Fixing "No Shipping Options", Missing Rates and Wrong Zones
On this page
  1. Quick fix: try these first
  2. Why WooCommerce shipping is not showing at checkout
  3. 1. The address does not match any zone
  4. 2. The method is there, but its conditions remove it
  5. 3. The product is set up as virtual or has no shipping
  6. 4. Store settings that switch shipping off
  7. 5. Pin code and courier plugins
  8. 6. Caching, sessions and the block checkout
  9. 7. Plugin or theme conflicts
  10. Shipping not showing at checkout: a table of symptoms
  11. Stop it happening again
  12. Quick check: after the fix
  13. When to get help
  14. FAQs
Key takeaways
  • When shipping does not show at checkout, WooCommerce could not match the customer address to a shipping zone with an enabled method, or a condition such as weight, class or minimum order removed every rate.
  • Check the zone order, the zone regions and pin codes, the method settings, product weights and shipping classes, then caches and plugins, in that order.
  • Test with a real Indian pin code in a private window after every change, and keep a catch-all zone so no customer is ever left without an option.

If WooCommerce shipping is not showing at checkout, the store could not match the customer's address to a shipping zone that has an enabled shipping method, or a rule on that method (weight, shipping class, minimum order or a coupon requirement) removed every rate. The message is usually "No shipping options were found" or "There are no shipping options available".

The fix is almost always in WooCommerce, Settings, Shipping. Work through the checks below in order; most stores are fixed by the first three.

Quick fix: try these first

  1. Open WooCommerce, Settings, Shipping and confirm at least one zone covers the customer's country, state or pin code.
  2. Open that zone and confirm it has a shipping method that is switched on (Flat rate, Free shipping or Local pickup).
  3. Check WooCommerce, Settings, General: "Shipping location(s)" must include India (or the customer's country), and shipping must not be disabled.
  4. Edit the product and confirm it is not marked Virtual, and that it has a weight if your rates depend on weight.
  5. Test in a private window with a real address and pin code, after clearing your page cache.

Why WooCommerce shipping is not showing at checkout

WooCommerce works out shipping in a fixed sequence. It reads the shipping address, finds the first zone in the list that matches it, and then shows the enabled methods inside that zone. If no zone matches, it falls back to "Locations not covered by your other zones". If that fallback has no methods, the customer sees no options and cannot place the order.

So the question is always the same: which zone did this address match, and did that zone have a method that applied to this cart? Our WooCommerce shipping setup guide for India explains how zones and rates should be set up from scratch. This post is about finding what broke.

1. The address does not match any zone

Zones are matched by country, state and postcode. Common mistakes:

  • Wrong state: the zone lists Maharashtra but the customer chose a different state, or the state list was edited by a plugin.
  • Pin code format: postcode ranges must be written like 411001...411062, and wildcards like 4110* only work for the start of a code. A space or a typo makes the whole line fail.
  • Zone order: WooCommerce uses the first matching zone from the top. A narrow zone (for example "Pune pin codes" with only Local pickup) placed above a wider "All India" zone means Pune customers see only pickup, or nothing if pickup is off.
  • Empty fallback: "Locations not covered by your other zones" has no methods, so anyone outside your zones sees nothing.

Fix: drag zones so the most specific ones sit at the top, check the regions on each, and give the fallback zone at least one method, even a higher flat rate, so nobody is blocked.

2. The method is there, but its conditions remove it

Free shipping with a minimum order

Free shipping set to "A minimum order amount" disappears below that amount. If it is the only method in the zone, carts under the minimum get no option at all. Add a Flat rate alongside it. Also note the minimum is compared before or after coupon discounts depending on a setting, so a coupon can push a cart under the limit.

Flat rate with shipping classes

If a product has a shipping class and the flat rate has "No shipping class cost" or a class cost left in a broken format, the rate can fail to calculate. Costs must be numbers or valid formulas such as 50 + ( 10 * [qty] ). A stray currency symbol or comma breaks the calculation silently.

Weight-based and table rate plugins

Rules that depend on weight return nothing when the product has no weight or when the cart is heavier than your highest band. Add weights to every physical product, including each variation, and add a final band with no upper limit.

3. The product is set up as virtual or has no shipping

A product marked Virtual (or Downloadable on its own) does not need shipping, so WooCommerce hides the shipping section. If every item in the cart is virtual, there is no shipping step. If one variation is accidentally virtual, it behaves differently from the others. Check the Virtual box on the product and on each variation; see how WooCommerce product variations are set up for where those settings hide.

4. Store settings that switch shipping off

In WooCommerce, Settings, General, "Shipping location(s)" can be set to "Disable shipping and shipping calculations". Some themes or setup wizards change this. "Selling location(s)" can also exclude a country, which stops the address from being accepted at all.

In the Shipping options tab, "Hide shipping costs until an address is entered" is fine, but customers on mobile sometimes stop before typing the pin code and think shipping is missing. Make the pin code field obvious on the checkout.

5. Pin code and courier plugins

Indian stores often use a pin code checker or a courier plugin (Shiprocket, Delhivery and similar) that returns live rates. When the courier API fails, the API key expires, the pickup pin code is wrong or the parcel dimensions are missing, these plugins return no rates and the checkout shows nothing.

  • Check the plugin's log or status page for API errors.
  • Confirm the pickup address and pin code in the courier dashboard match the plugin settings.
  • Add a fallback flat rate in the same zone so the checkout still works when the API is down.

If you limit delivery by pin code, read pin code delivery checkers for WooCommerce to make sure the checker and the zones agree.

6. Caching, sessions and the block checkout

Shipping rates are stored in the customer's session. A page cache that caches the cart or checkout page, or a CDN rule that caches it, can show old or empty rates. Exclude cart, checkout and my-account pages from caching, and do not cache pages for logged-in users or for visitors with the WooCommerce cart cookies. Our guide to WordPress caching lists what should never be cached.

For a quick test, go to WooCommerce, Settings, Shipping, Shipping options and enable debug mode. It bypasses the shipping rate cache and shows which zone matched on the cart page (for admins). Turn it off afterwards.

The newer block-based checkout also behaves differently from the classic shortcode checkout. Some shipping plugins do not support the block checkout yet, so their rates never appear. If a plugin's rates vanished after you switched, test with the classic checkout shortcode on a staging copy.

7. Plugin or theme conflicts

If the settings look right and rates still do not appear, a plugin or the theme may be filtering shipping methods. Checkout field editors, conditional shipping plugins, multi-currency plugins and "hide shipping when free shipping is available" snippets are the usual suspects. Copy the site to staging, switch to a default theme and disable plugins one by one. See how to find a WordPress plugin conflict safely.

Shipping not showing at checkout: a table of symptoms

What you seeLikely causeWhere to look
No options for one state or cityZone regions or pin code rangesShipping zones, zone order
No options for small orders onlyFree shipping minimum is the only methodZone methods
No options for some productsShipping class or missing weightProduct shipping tab
Rates appear and vanish randomlyCourier API or cached checkoutPlugin log, cache exclusions
Shipping section missing entirelyVirtual product or shipping disabledProduct data, General settings
Broke after switching checkoutPlugin not compatible with block checkoutPlugin docs, staging test

Stop it happening again

  • Keep a fallback method in "Locations not covered by your other zones".
  • Give every physical product and variation a weight and the right shipping class.
  • Place a test order with a real pin code from each zone after every plugin update; the WooCommerce maintenance checklist includes this.
  • Watch checkout errors and abandoned carts; a sudden rise often means shipping broke. If customers also report checkout failures, see WooCommerce checkout not working.

Quick check: after the fix

  1. In WordPress, open WooCommerce > Settings > Shipping and check zones and methods.
  2. Place a test order to an address in each zone.
  3. Check products have shipping classes and weights where needed.

When to get help

If you have checked zones, methods, products and caches and customers still see no shipping options, the cause is usually a plugin, a courier integration or custom code. A WooCommerce developer can trace it on staging without risking live orders, and WordPress maintenance keeps updates from breaking checkout again. If you would rather hand the whole store over, you can hire a WordPress developer in India through Samverse. You can also send the details through the contact form.

FAQs

Why does WooCommerce say "no shipping options were found"?

The address did not match a zone with an enabled method, or every method's conditions (minimum order, weight, class) excluded the cart. Check the zone order and give the fallback zone a method.

Why is WooCommerce shipping not showing at checkout for some pin codes?

Pin code ranges or wildcards in the zone are wrong, or a narrower zone above it matches first. Courier plugins also return nothing for pin codes they cannot serve.

Why does free shipping not show in WooCommerce?

The cart is below the minimum amount, a coupon is required, or discounts are applied before the minimum is checked. Free shipping also only appears in the zone where it is added.

Why is shipping not calculated until the customer enters an address?

The "Hide shipping costs until an address is entered" option is on. That is normal; make the pin code field clear so customers fill it in.

Can caching stop shipping rates from showing?

Yes. If the cart or checkout page is cached, customers see stale or empty rates. Exclude cart, checkout and account pages from page and CDN caching.

Shipping disappeared after a plugin update. What should I do?

Roll back the plugin on staging or test it there, check whether it supports the block checkout, and add a fallback flat rate so customers can still order meanwhile.

Need help with your website?

I'm a freelance WordPress developer building fast, SEO-friendly websites since 2020. Tell me what you need and I'll reply with a plan and a fixed quote, usually within 24 hours.

Found this useful? Share it:
Contact

Let's build your next website

Available for freelance projects, agency white-label work and long-term maintenance. Feel free to pass this along to your team or company.

I reply within 24 hours, usually the same day. Your details are emailed to me, then WhatsApp opens so we can chat right away.

Chat now