This directly prevents sales. The sequence that resolves ~80% of cases:
1. Is the customer entering a complete address including zip code?
2. Enable shipping debug mode (WooCommerce → Settings → Shipping → Shipping Options). Check which zone matched.
3. Are zones overlapping? Top-to-bottom, first match wins. Consolidate overlapping zones.
4. For live rates: are carrier API credentials valid? UPS, USPS, FedEx have all migrated to OAuth 2.0. Check permissions: UPS needs Authorization + Rating. FedEx needs Address Validation + Freight LTL + Rates and Transit Times.
5. Is the store origin address complete? Live rates need origin-to-destination.
6. Do products have weight/dimensions set? Most carrier APIs require this.