Shipping choices at checkout are controlled by more than the names of the delivery methods shown to customers. In WooCommerce, the customer’s shipping address determines which shipping zone is used, and that zone determines which methods and rates can appear. If the address is captured by an overly broad rule, if zones are ordered incorrectly, or if postcode patterns overlap, customers may see an option intended for another area—or no delivery option at all.
A reliable WooCommerce shipping setup starts with geographic coverage, continues with methods assigned inside the correct zones, and ends with representative testing. The important principle is that WooCommerce does not combine every zone that appears to match an address. It uses one matching zone, so the structure and order of your rules directly affect the delivery options shown during checkout.
How WooCommerce Shipping Zones Determine Checkout Options
A shipping zone is a group of geographic rules used to determine the shipping methods and rates available for a customer’s shipping address. A zone can cover a continent, countries, states or provinces, and, where needed, specific postcodes. After the customer enters the address, WooCommerce compares it with the configured zones and selects the applicable result.
Each customer matches only one shipping zone. Consequently, the checkout does not display methods from every zone that might appear relevant. It displays the methods configured in the single zone selected for that address. This explains why adding a method to a broad national zone will not necessarily make it available to an address that is captured by an earlier, more specific zone.
The first-match rule
WooCommerce evaluates shipping zones from the top of the list to the bottom and uses the first zone that matches the customer’s address. The first matching rule therefore stops the search. A broad rule placed above a local or postcode-specific rule can capture addresses that were meant to receive different delivery options.
Before adding methods, map the areas your store actually serves. Then review the zone list as a matching sequence rather than as an ordinary list of regions. Every address should either match the intended zone or remain clearly outside the configured delivery coverage. This is a configuration rule, not a guarantee of optimal delivery costs, delivery times, or conversion results. A method displayed at checkout is also not, by itself, a carrier-confirmed price or delivery time.
Create a Shipping Zone for Countries and Regions
Start by adding a shipping zone in the WooCommerce shipping settings. Define its geographic coverage using the countries, states or provinces, or continents that belong to that delivery area. The correct level depends on how the store divides its service area, so avoid assuming that one structure is suitable for every store, country, or fulfillment process.
Once the geographic area is defined, add the shipping methods inside that specific zone. This location matters: a method configured in another zone will not automatically appear for the address being tested. Configure each zone according to the delivery choices that should be offered to customers in that area, then test the result with an address representing the zone.
Define the geographic coverage
Choose countries, states or provinces, or continents according to the actual area served by the store. A country-level rule may be appropriate for a uniform national area, while regional or provincial rules allow the store to distinguish between areas. If the same country or region will later be narrowed by postcodes, plan the relationship between the broad and narrow rules before publishing the zones.
Test representative addresses from every intended country, region, and postcode group. Include addresses that are close to the edge of a defined area, because a rule that looks correct in the settings may not behave as expected for every postcode format. Legal, tax, carrier, and fulfillment requirements require separate verification and are not established by the shipping-zone configuration alone.
Add methods inside the zone
WooCommerce’s built-in shipping methods include Flat Rate, Free Shipping, and Local Pickup. Add the selected method inside the zone where it should be displayed. The method’s presence at checkout depends first on the customer matching that zone and second on the method being available there.
When using Flat Rate, configure it within the intended shipping zone. Its settings can define a base cost, per-item costs, or costs associated with shipping classes. Review the method’s configuration together with the products and shipping classes used in testing, because an unexpected result may come from the relationship between the method and the cart contents rather than from the zone’s geographic rule.
Use Postcodes to Create More Precise Delivery Rules
A zone can be narrowed with postcode restrictions after its broader geographic area has been selected. WooCommerce supports individual postcodes, numeric ranges, and wildcard patterns. Enter postcode rules one per line so that the intended coverage is easy to inspect and maintain.
Postcode rules are useful when one part of a country or region needs a different delivery option. They can also create a more precise zone that must take priority over a broader country or regional rule. However, a postcode pattern should be treated as a market-specific rule rather than a universal formula. Formats differ between countries, and the exact pattern must be tested against the addresses the store expects to receive.
Choose the right postcode pattern
Use individual postcodes when the delivery area consists of clearly identified codes. Numeric ranges can be used where they correspond to the format of the target market. Wildcards are documented as useful for postcodes containing non-numeric characters. The appropriate choice depends on the actual postcode format and the intended coverage.
Review broad ranges and wildcard rules especially carefully. A wide pattern placed earlier in the zone order can capture an address intended for a more precise rule. Test typical addresses as well as edge cases, including addresses that should fall just outside the restricted area. Do not assume that a pattern that works for one country will work globally.
Put Overlapping Zones in the Correct Order
Overlapping zones should be ordered from the most specific to the broadest. A postcode-specific or local zone should appear before a state or provincial zone that could also match the same address. Regional rules should appear before a country-level rule when both can include the same customer.
This ordering follows directly from WooCommerce’s first-match behavior. If the broad zone is listed first, it can take the address before WooCommerce reaches the detailed zone. The customer will then see the methods from the broad zone, even though the more specific configuration appears elsewhere in the settings.
Specific before broad
Place local and postcode-based rules at the top of the relevant sequence. Follow them with wider regional or state rules, and place the broad country rule after those narrower areas. Recheck the order whenever a new zone is added, because a newly introduced broad rule can change the result for addresses that previously matched a specific zone.
After changing the order, test addresses belonging to both the detailed zone and the wider fallback zone. This confirms not only that the special rule works, but also that the broader rule still covers the intended remaining area. Pay particular attention to wildcard and range rules placed above specific postcode entries.
Configure Core WooCommerce Shipping Methods
The core methods provide different ways to present delivery choices within a matched zone. Flat Rate can be configured with a base cost, per-item costs, or shipping-class costs. Free Shipping can be offered as a matching method, while Local Pickup can provide a collection option where that is part of the store’s process.
These methods should be evaluated as checkout configuration options, not as proof of a carrier’s confirmed delivery price or time. If a store requires live carrier rates or fulfillment functionality, those requirements may involve separate extensions or services, which are outside the information covered here.
Flat Rate, Free Shipping, and Local Pickup
Add each method to the zone where customers should be able to select it. For Flat Rate, confirm the base amount and any per-item or shipping-class settings used by the store. The customer-facing method name is displayed in the cart and at checkout, so it should accurately describe the configured choice without implying details that have not been established.
When Free Shipping is available, WooCommerce may show it alongside other matching methods by default. WooCommerce documentation describes a setting for hiding other shipping rates when Free Shipping is available in WooCommerce 9.9 and higher. Treat this as a version-dependent setting and verify the behavior in the store’s actual configuration before relying on it.
Troubleshoot Wrong, Missing, or Unexpected Checkout Methods
When customers see the wrong or no delivery option, begin with the address and then move through the matching logic. Confirm the complete shipping address, including the country, region, and postcode. Determine which zone should match that address, then inspect the order of the zones and any overlapping postcode rules.
Next, confirm that the matched zone contains the intended enabled method. A customer may correctly match a zone that has no usable method, or may match a zone whose method settings do not correspond to the cart. Also consider virtual products, shipping-class settings, caching that prevents rates from updating, and conflicts involving a theme, builder, or checkout plugin.
A practical diagnostic sequence
- Enter a complete representative shipping address and identify the area it should serve.
- Review the zone order from top to bottom, looking for a broad rule before a more specific one.
- Inspect postcode entries, numeric ranges, and wildcard patterns for missing, overlapping, or overly broad coverage.
- Confirm that the matched zone has the intended active shipping method.
- Check the cart contents, including whether the products are virtual and whether shipping classes affect the method.
- Review caching for the cart and checkout experience, clear relevant caches after changes, and verify whether rates update correctly.
- If a conflict is suspected, compare the behavior with the default WooCommerce cart and checkout setup in a controlled test.
WooCommerce provides shipping debug mode to help reveal which shipping zone is being matched. Use it only during controlled testing, because debug messages can appear on the front end. After identifying the result, disable the mode before customers continue using the store.
Test before relying on the configuration
Test representative addresses from every target country, region, and postcode group before relying on the rules in a live store. Include addresses that should match detailed zones, addresses that should fall back to broad zones, and addresses that should not receive a configured option. Repeat the tests after changing zone order, postcode patterns, methods, or caching.
When a theme, builder, or checkout plugin may affect shipping behavior, use the default cart and checkout setup for comparison. Where possible, use a staging site or another controlled process. Avoid deactivating production plugins without a rollback or maintenance plan. After testing, disable shipping debug mode and confirm that diagnostic messages are no longer visible.
Cart, Checkout, and My Account pages should not be placed behind inappropriate caching when shipping rates must update dynamically; verify the effect after clearing the relevant caches. This is a practical precaution, not a guarantee that every caching or checkout conflict has been removed.
The essential WooCommerce shipping-zone rules are straightforward: one customer matches one zone, and the first matching zone wins. Put postcode-specific and local rules before regional or country-wide rules, add methods inside the zone where they belong, and test representative addresses before relying on the configuration. When checkout results are unexpected, inspect address matching, zone order, postcode patterns, methods, cart contents, caching, and possible theme or plugin conflicts in that order. Carrier details, taxes, legal requirements, and fulfillment processes still require separate verification. Explore our WordPress plugins, WooCommerce extensions, themes and membership plans to find the right tools for your website.