A local delivery area can be hidden by a broad region above it, even when both look correctly configured. Use address-based examples rather than altering the advertised freight until a map looks plausible. Excluded locations also need an explicit no-service result.
Source-bound fact
WooCommerce uses the first matching zone; a matched zone with no methods means no shipping option. Official reference · Checked 17 October 2026.
Filled synthetic acceptance example
Synthetic teaching example, not a client case or a real-store assessment. On narrow screens, scroll to read the complete table.
| Input | Check basis | Expected |
|---|---|---|
| VIC-all12 above VIC3121local6 | 3121matches broad first | 12; local promise fails |
| Local3121 first, then VIC-all | 3121 /3000 controls | 6 /12 |
| Excluded3999 empty-method zone first | 3999matches exclusion | no service, not fallback12 |
Supplier acceptance procedure
- Freeze country, state and postcode in a clean test session, with one shippable product and no app override.
- Test exact local postcode, a neighbouring postcode and an excluded postcode against ordered zones.
- Expand wildcard boundaries into explicit sample addresses and compare actual checkout before accepting the configuration.
Interpret the output
The first and corrected rows use the same prices but different precedence. An empty-method exclusion is not a zero-cost delivery method. Keep an address-to-matched-zone record so support can distinguish an intentional exclusion from a broken checkout.
Explicit limits
Core zone behaviour only; not carrier pricing, geocoding or plugin support. Version-specific admin warnings are not assumed available.
Replay the finite teaching model
Save both files in one folder. With Node22 or newer, run the command below. JSON contains explicit inputs and expected results. The script processes synthetic data only, with no network, credentials, payment or API calls. Passing proves the finite model only, not a live integration.
Filled inputs and expectations · Inspectable teaching script
node check.mjs woocommerce-zone-address-matrix.json