Quick wins (most cases)
- Find the matched zone: Go to WooCommerce → Settings → Shipping → Shipping options and enable Debug mode. Then visit the cart/checkout and see which zone WooCommerce matched. If it shows “No shipping method,” the address didn’t match any zone or the zone has no methods.
- Add a method to the matched zone: Go to Shipping zones, open the matched zone, click Add shipping method and add at least one (e.g., Flat rate, Free shipping, or Local pickup). Edit the method and set a cost or condition.
- Reorder/expand zones: Zones are matched top-to-bottom. Drag a specific zone (e.g., a state or postcode range) above a broader country zone so it wins. If you ship worldwide, add a fallback zone: Locations not covered by your other zones with a method.
Step-by-step diagnosis
1) Confirm store/country settings won’t block shipping
- WooCommerce → Settings → General: In Shipping location(s), choose where you ship. If it’s “Ship to specific countries,” make sure the shopper’s country is included.
- Store address must be correct; some carrier plugins use it to validate rates.
2) Verify your zones actually match the address
- Open WooCommerce → Settings → Shipping → Shipping zones. Edit the zone the Debug banner says is matched.
- Zone regions: Include the right countries/states and, if you use postcodes, confirm formats and ranges (e.g.,
10000…19999 or comma-separated codes).
- If the address shouldn’t match any specific zone, ensure you have a fallback zone called Locations not covered by your other zones with at least one method.
3) Ensure each zone has at least one active method
- Flat rate: Click Edit, set a Cost (can be
0 for free), choose Tax status.
- Free shipping: If you require a minimum or coupon, make sure the cart meets it. Otherwise the method won’t show.
- Local pickup: Enable only where you actually offer pickup.
4) Reorder zones so the specific one wins
Drag the most specific zones (postcode/state) above broader country/global zones. The first match is used and others are ignored.
5) Product and cart checks
- Virtual products: Virtual items don’t require shipping; a cart of only virtual products may hide shipping. Add a shippable item when testing.
- Dimensions/weight: If you use carrier/table-rate plugins with constraints, missing or extreme values can exclude all rates. Enter realistic weights/dimensions for products.
6) Carrier/plugin setup sanity checks (if using live rates)
- Verify API keys, enabled services, and origin postcode in the shipping method settings.
- Ensure the service supports the destination and package specs.
7) Test with Debug Mode and known addresses
- Enable Debug mode (Shipping options) to display the matched zone notice and bypass cached rates.
- Test a domestic address that should match your primary zone and confirm at least one rate appears.
- Test an international address; confirm your fallback zone provides a method.
Common gotchas (and fixes)
- “Free shipping” never appears: Cart doesn’t meet the minimum or coupon rule. Loosen the condition or raise the order value.
- Methods exist but still hidden: Address matches the wrong zone. Reorder zones; tighten the broad zone’s regions.
- Only Local pickup shows: You added Local pickup but forgot Flat rate/Free shipping in that same zone.
- International orders show nothing: No “Rest of world” zone. Add Locations not covered by your other zones with a method.
Fast checklist
- ✅ Shipping locations include the destination country
- ✅ Matched zone is the one you expect (use Debug mode)
- ✅ Zone has at least one active method
- ✅ Zone order: specific above broad
- ✅ Fallback zone for “Locations not covered…” exists
- ✅ Free shipping conditions actually met
- ✅ Product needs shipping and has sane weight/dimensions
If you want, I can glance at your zones/methods and tell you exactly which rule is preventing rates from showing.