Configure WooCommerce shipping zones & rates

Here’s a clear, copy‑paste guide to WooCommerce shipping zones and rates. You’ll learn how zones match a customer, how to target countries and postcodes, add Flat Rate, Free Shipping, and Local Pickup, use shipping classes for different product costs, set a default method, and quickly troubleshoot why rates sometimes don’t appear.

How do I configure shipping zones and rates in WooCommerce?

Set up zones & methods (the essentials)

  1. Go to WooCommerce → Settings → ShippingShipping zonesAdd zone.
  2. Name it (e.g., “US Domestic”), select Zone regions (countries/states), and optionally limit to postcodes.
  3. Add shipping methods to the zone: Flat Rate, Free Shipping, Local Pickup.
  4. Sort zones from most specific to broadest (e.g., city → state → country). WooCommerce uses the first matching zone and customers match only one zone.
  5. Sort methods within a zone; the first enabled method becomes the default selection at checkout.

Tip: Leave the built‑in “Rest of the world” zone with a basic method as a fallback so customers outside defined zones can still pay for shipping.

Can I target specific postcodes or ranges?

Target postcodes with ranges & wildcards

  • One per line: enter each postcode on its own line.
  • Numeric ranges: use 90210...99000 to cover a span.
  • Wildcards: use 902* or CB23* to match all codes starting with those characters (best for non‑numeric formats).
  • Sort matters: put narrow zones (postcode‑based) above broader state/country zones so they win the match.

How do I add Flat Rate with proper costs?

Flat Rate: base, classes, and formulas

  1. In your zone, click Add shipping methodFlat RateCreate, then Edit.
  2. Set Title (what customers see) and Tax status (Taxable/None).
  3. Use the Cost field for a base fee; you can add dynamic pieces with placeholders:
10 + ( 2 * [qty] )              // base 10 + $2 per item
10 + [fee percent="10"]         // base 10 + 10% of order total
10 + [fee percent="10" min_fee="4"]  // with minimum calculated fee

Shipping classes: if you add classes (e.g., Bulky, Light), Flat Rate shows per‑class cost fields. Choose a Calculation type:

  • Per class - add costs for each class in the cart (Bulky + Light, etc.).
  • Per order - only the most expensive class cost applies.

Pro tip: Set the base Cost to 0 and drive all pricing through class costs when you want only class‑based logic.

How do I offer Free Shipping (minimum amount or coupon)?

Free Shipping: threshold and coupons

  1. Add Free Shipping to the zone → Edit.
  2. Under Free shipping requires… choose one:
    • A minimum order amount (e.g., 50.00)
    • A valid free shipping coupon
    • A minimum amount OR a coupon
    • A minimum amount AND a coupon
  3. Save and test with a cart at/above the threshold and with a coupon.

Tip: Put Free Shipping above Flat Rate in method order if you want it pre‑selected.

What about Local Pickup?

Local Pickup: quick setup

  1. Add Local Pickup to the target zone → Edit.
  2. Optionally set a pickup fee and Tax status.
  3. Reorder methods so Local Pickup appears first if you want it default in that zone.

Checkout type: If you use the newer Cart/Checkout blocks, configure the Local Pickup block options there; legacy checkout uses the classic method screen.

Why aren’t my shipping rates showing?

Troubleshooting: no rates showing

  • Zone order: a broader zone above a postcode‑specific zone will “steal” the match. Move specific zones higher.
  • Fallback zone: set up Rest of the world with at least one method; otherwise customers outside defined zones see “No shipping options.”
  • Method disabled: make sure the method toggle is Enabled and saved.
  • Test correctly: on the Cart page, use “Calculate shipping” with an address that actually matches the zone.
  • Cache: clear any page/cache/CDN after changing rules.

How do I test that everything is correct?

Sanity checks before launch

  1. Add a product to cart and open the Cart.
  2. Use Calculate shipping with addresses that match each zone (and one outside all zones to hit the fallback).
  3. Confirm method order (default is the first enabled).
  4. Try class mixing: add one Bulky and one Light item; switch between Per class and Per order to verify totals.

Need human WordPress help?

WP Assistant is a free tool created by Atiba Software, a WordPress design and development company located in Nashville, TN. If you need more personalized WordPress assistance let us know, and we’ll get back to you ASAP!