Skip to content
DevMarket
Odoo ModulesWordPress PluginsWordPress ThemesShopify ThemesApp TemplatesScripts & UtilitiesBlogSell on DevMarket
WordPress and WooCommerce

WooCommerce Shipping Settings and Setup: Zones, Methods and Free Shipping

WooCommerce shipping is built from zones, methods and classes. Learn how zones are matched, how flat rate, free shipping and local pickup work, and how to set up a store for Saudi Arabia and the GCC.

By DevMarket EditorialPublished: 9 min read
WooCommerce Shipping Settings and Setup: Zones, Methods and Free Shipping
On this page

WooCommerce shipping settings are built from three pieces: shipping zones (where you ship), shipping methods inside each zone (how you charge) and, optionally, shipping classes (which products cost more to send). A customer's address matches one zone, and only that zone's methods appear in the cart and at checkout. This guide follows the official documentation as checked in October 2026 (the WooCommerce 11.2 series), then sets up a store for Saudi Arabia and the Gulf.

In short

  • A customer matches one zone only: the first that fits, reading your list from the top. Put narrow zones above broad ones.
  • Core WooCommerce has three methods: flat rate, free shipping and local pickup. Live carrier rates and labels come from extensions.
  • Shipping classes let flat rate charge different amounts, but a class sets no price on its own.
  • Decide what happens to the rest of the world, test every zone, and ask your accountant how VAT applies to delivery.

How WooCommerce shipping settings are organised

Everything starts at WooCommerce > Settings > Shipping, which lists your zones and has sections for Shipping settings, Classes and Local pickup. Check WooCommerce > Settings > General first: Shipping location(s) decides which countries you can ship to at all, and the zones documentation lists it as a prerequisite.

A row of cards joined by arrows from left to right
A customer's address picks one zone, and that zone's methods and costs are what the cart and checkout offer.

How zones are matched, and why the order matters

WooCommerce checks zones from the top of the list down, and the first match wins. The documentation says to order them from the smallest area to the largest: city, then state, then country. A broad zone above a narrow one stops the narrow one from ever being reached.

  • One zone per customer. Methods from two zones are never combined.
  • Postcodes. A zone can be limited to postcodes, one per line: exact codes, numeric ranges and trailing wildcards.
  • Overlap warning. From WooCommerce 11.1 the zone list warns when an earlier, broader zone covers a later one. The troubleshooting page adds that the check compares only continents, countries and states.
  • Rest of the world. This default zone catches every address that no other zone matches. You cannot move, rename or delete it, but you can add methods or leave it empty. To exclude a region, make a zone for it with no methods.

If nothing matches, customers see a "No shipping options are available for this address" message.

Flat rate, free shipping and local pickup

Add a method at WooCommerce > Settings > Shipping > Shipping zones: click Edit on a zone, then Add shipping method. The first enabled method in a zone is selected by default, so drag methods into the order you want.

Flat rate

The flat rate method has a name that customers see, a Tax status and a Cost for the whole cart. When shipping classes exist, a cost field appears for each class, and class costs are added to the main cost. The Calculation type decides what a mixed cart pays: Per class charges each class, Per order charges only the most expensive one. To charge by class only, set the main cost to zero. The Cost field accepts formulas, for example:

10 + ( 2 * [qty] )

That is 10 plus 2 for every item.

Free shipping

The free shipping method offers five requirements: none, a valid free shipping coupon, a minimum order amount, a minimum or a coupon, and a minimum and a coupon. The checkbox "Apply minimum order rule before coupon discount" decides whether the threshold is tested before or after a coupon; unticked, the total after the discount counts. Coupons are created at Marketing > Coupons with Allow free shipping ticked.

The documentation does not say whether the threshold includes tax, so test carts on either side of the line. Core free shipping cannot exclude products by shipping class. In WooCommerce 9.9 and later, "Hide shipping rates when free shipping is available" hides the other rates once free shipping applies.

The Free Shipping Progress Bar for WooCommerce plugin on DevMarket shows a progress bar toward free shipping in the cart, checkout, mini cart and product pages, and its page says it reads your free shipping minimum by default.

Local pickup

WooCommerce has two local pickup options, and the documentation recommends using only one. The block-based option is at WooCommerce > Settings > Shipping > Local pickup. It needs the Checkout block and at least one pickup location, is not tied to zones and taxes by the chosen location's address. The legacy option is a zone method, so pickup can be limited to chosen zones.

Shipping classes, weight and dimensions

Classes group products that cost different amounts to send, such as bulky items and small ones. The documentation says they cannot offer rates themselves: they give a method something to charge against. If every product ships for the same price, skip them.

  1. Create a class at WooCommerce > Settings > Shipping > Classes > Add shipping class.
  2. Assign it in the product editor (the Shipping tab, or the Variations tab for one variation). A product has one class, and bulk edit works from the Products list.
  3. Enter class costs in the flat rate method of each zone that needs them.

The product editor's Shipping section (weight and dimensions) appears for simple and variable products that are not Virtual, with units set at WooCommerce > Settings > Products > General. According to the troubleshooting page, these values do not drive the built-in rates, but carrier extensions may need them, as do rate-table extensions such as Table Rate Shipping, which lists weight among its conditions. A cart with only virtual products shows no shipping options.

The calculator, the cart and checkout

Under WooCommerce > Settings > Shipping > Shipping settings, the settings overview lists three groups:

  • Calculations: the shipping calculator on the cart page, and hiding costs until an address is entered.
  • Shipping destination: ship to the shipping or billing address by default, or only to the billing address.
  • Debug mode: shows the matched zone in a notice and bypasses the rate cache. Switch it off before launch.

On the cart page, customers press Calculate Shipping to see their zone's methods. Keep Cart, Checkout and My account out of any page cache: see our speed guide.

Carrier rates, couriers and delivery times in the Gulf

WooCommerce says its built-in shipping does not include live carrier rates or label printing. Paid carrier extensions fill the gap (the troubleshooting page names UPS, USPS, FedEx and Royal Mail), and the WooCommerce Shipping extension for labels is currently offered to stores based in the United States that use US dollars, so it does not suit a Saudi store. Many Gulf stores start with flat rates per zone, then add a courier's own plugin or API. Our guide to shipping and cash on delivery in Saudi Arabia compares courier types, explains the National Address and lists what to ask in a quote.

Cash on delivery can be limited to chosen shipping methods with its "Enable for shipping methods" setting. Core shipping offers no choice of delivery date or time: the delivery slots guide covers what a slot system needs.

Step by step: a store that ships across Saudi Arabia and the GCC

The costs below are an example with made-up numbers. Your courier's quote decides yours.

  1. Check the countries. At WooCommerce > Settings > General, make sure Selling location(s) and Shipping location(s) include Saudi Arabia and each GCC country you serve.
  2. Add a narrow zone first, only if you need one, such as Saudi postcodes your courier surcharges (take the ranges from the courier). Add classes if some products cost more to send.
  3. Add a Saudi Arabia zone below it, with flat rate (example: SAR 25), free shipping above a minimum (example: SAR 250) and local pickup if you have a shop.
  4. Add a GCC zone with the United Arab Emirates, Kuwait, Qatar, Bahrain and Oman and a flat rate (example: SAR 60). Ask your courier about paperwork and duties.
  5. Leave the rest of the world without methods unless you ship further, so those customers see a clear "no shipping" message.
  6. Drag zones from narrowest to broadest, save, then order the methods in each zone.
  7. Test as a customer, logged out, on a phone, in English and Arabic: one address per zone, a country you do not serve, a virtual-only cart and carts either side of the free shipping line. Use Debug mode while testing.

Common shipping mistakes

MistakeWhat happensFix
Broad zone above a narrow oneThe narrow zone is never reachedReorder smallest to largest, and heed the 11.1 warning
No plan for the rest of the worldCustomers see "no shipping" or an unintended rateAdd methods or leave it empty on purpose
Forgetting tax on shippingDelivery is taxed, or not, by accidentCheck each method's Tax status and the Shipping tax class

On flat rate and the legacy pickup method, Tax status decides whether the cost is taxed, and None stops tax on shipping. If it is taxable, the Shipping tax class setting under WooCommerce > Settings > Tax picks the rate. Whether delivery carries VAT is for ZATCA and your accountant to say: see the tax and VAT guide.

Frequently asked questions

Why do customers see "no shipping options available"?

Common causes: an address that matches no zone while the rest of the world is empty, a zone with no enabled method, a virtual-only cart, an unmet free shipping condition, or a country missing from Shipping location(s). Debug mode shows the matched zone on the classic cart page.

Can WooCommerce charge shipping by weight?

Not with the built-in methods, which charge per cart, per item, by a percentage fee or by class. Rate-table and carrier extensions add weight-based rules.

How do I offer free shipping over a certain amount?

Add free shipping to the zone, set "Free shipping requires" to a minimum order amount, enter it, choose how coupons count, and test either side of the line.

Do I need shipping classes?

Only if different products should be charged differently.

Next steps

Try the steps on a staging copy, then send one real parcel. For the wider store, read how to set up WooCommerce and WooCommerce payment gateways, and browse WooCommerce plugins on DevMarket.

Items mentioned in this article

The software this guide talks about, ready to look at.

  • PluginNew

    Free Shipping Progress Bar for WooCommerce – Increase Cart Value

    Show shoppers how much more to spend for free shipping with a live progress bar in the cart, checkout, mini cart and product pages.

    by TAQNIX
    No reviews yet
    Sales:0$19.00

Find the right software for the job

Every item on DevMarket has a human-reviewed release, an instant licence key and clear update and support terms.