Setting up Shipping Zones

The geographic regions that you ship goods to are called Shipping Zones. These can contain multiple shipping methods and rates that apply to that region.


For example, you could create the following zones in WooCommerce:

Local California ZIP 90210 Local pickup
Domestic All US states 2 Flat rates named “standard” and “priority”
Europe Countries in Europe Flat rate shipping

You can add as many zones as you need and each zone can contain multiple shipping methods. Customers only see the methods available for their address and corresponding zone. Each customer matches 1 zone only.

Shipping zones were introduced in WooCommerce 2.6. You can still use things like Flat Rate, Free Shipping, and Local Pickup. After updating to 2.6 you will be asked to turn off your legacy shipping methods and switch to shipping zone based methods.

Adding & managing zones ↑

To start setting up shipping zones, go to: WooCommerce > Settings > Shipping. On first visit, there is a prompt to add a new zone, and a default Rest of the World zone.


Rest of the World is used for customers who do not match any of the custom zones you add. Adding methods to this zone is completely optional, depending on your needs.

If a customer enters a shipping address that is in a zone without shipping methods, they will be informed that no shipping is available.

Since zones match from top to bottom, you can also exclude regions from shipping by adding a zone for that region and assigning no shipping methods to it.

Adding a new zone

1. Click the Add shipping zone button in bottom right below the table. A new row appears:


2. Enter a descriptive Zone Name, and select regions that apply to this zone. Regions can consist of:

  • Countries
  • States
  • Continents

3. If applicable, click the Limit to specific zip/postcodes link to further narrow which customers match this zone. For example, you can set a local zone with a specific set of postcodes (one per line); a range of postcodes (e.g. 90210…99000), or use wildcards (e.g. CB23*).

In the below example we’ve created 3 zones – Local, Domestic, and North America to demonstrate how zones can be setup:


4. Save changes when done adding shipping zones.

Sorting shipping zones

Shipping zones match customer address from top to bottom — the first to match the customer address is always used. If no custom zones match, Rest of the World is used.

To sort and reorder zones:

1. Hover and click on the far left handles.

2. Drag and drop.

3. Save changes.


Editing shipping zones

To edit a shipping zone:

1. Hover over the Zone Name, and the option to Edit appears.

2. Click Edit, and Regions become available to delete, add or change.

3. Save changes.


The Rest of the World zone cannot be moved, renamed or deleted because it acts as a default when no other zones apply.

Adding shipping methods to zones

Now that shipping zones are in place, the shipping methods must be added. To add a shipping method:

1. Click the + icon on the far right of each row.


A modal window appears with a list of shipping methods that support shipping zones:

shipping method modal

2. Select Shipping Methods from dropdown.

3. Click Add Shipping method button to save.

Only shipping methods which support zones will be listed here. If you have a method which does not support zones, it will be shown in the navigation menu and work globally/independent of zones as it always has done.

Once added, you can click the shipping method title or the edit icon to configure the shipping method.


A shipping method within a zone

For more information about configuring the core shipping methods, see the following related docs:

Local Pickup Documentation
Flat Rate Shipping Documentation
Free Shipping Documentation

Removing shipping methods from zones ↑

To remove a shipping method from a zone, view the zone via WooCommerce > Shipping > Shipping Zones > Name of your zone, then find the method in the list and hover over it to see the list of actions you can perform:

2016-06-22 at 10.35

Click remove then save changes.

Control the shipping method selected by default ↑

The default shipping method selected for customers will be the top listed, enabled shipping method in the zone which they match.

So in this screenshot example, free shipping would be chosen if the customer matched the US shipping zone.

2016-06-22 at 10.36

Drag and drop to re-order shipping methods using the handles on the left, then save changes.

How zones work for customers ↑

Using these shipping zones and methods:


  • In the 90210 zip code in California, I offer local pickup and free shipping.
  • In the United States, I offer a domestic flat rate.
  • In non-U.S. regions, I offer a different worldwide flat rate.

This is what your customers would see:

2016-04-20 at 12.05 2016-04-20 at 12.06 2016-04-20 at 12.07

Snippet: Only show free shipping if available

Note: We are unable to provide support for customizations under our Support Policy. If you are unfamiliar with code/templates and resolving potential conflicts, contact a WooExpert.

By default, all methods in a zone are presented to the customer. If you have conditional free shipping and want it to be the only shown method if it’s available, you can use the following snippet to hide other methods:



Shipping classes can be used to group products of similar type and used by some shipping methods, such as Flat Rate Shipping, to provide different rates to different classes of product.

For example, with shipping classes and Flat Rate Shipping, it’s possible to create different flat rate costs heavy items and envelopes. More info at Flat Rate Shipping.

Shipping classes are used to group products – they are not used directly to offer shipping rates to customers. To setup shipping rates, see the Shipping Zones documentation.

Add Shipping Classes

1. Go to: WooCommerce > Settings > Shipping > Shipping Classes.

2016-05-17 at 16.14

The screen lists existing classes.

2. Click the Add Shipping Class button beneath the table. A new row appears.

2016-05-17 at 16.45

3. Enter a Shipping Class Name and description. Slug (unique identifier) can be left blank and auto-generated, or you can enter one.

4. Save Shipping Classes.

Edit and Delete Shipping Classes ↑

To edit or remove a shipping class:

1. Hover over Shipping Class Name. Options appear.

2. Click Edit to revise the name, slug or description. Or click Remove to delete the shipping class.

2016-05-17 at 16.49

3. Save Shipping Classes.

Assign shipping classes to products

To apply these rates to a specific class of products (e.g., bulky or heavy items), you need to assign them.

1. Go to: WooCommerce > Products.

2. Select the product, and click Edit.


3. Go to Shipping, and select the Shipping Class from the dropdown.

WooCommerce Shipping Classes - Product Shipping Class
Simple Product – Shipping Class


WooCommerce Shipping Classes - Product Variations Shipping Class
Variable Product – Shipping Classes

Each product can have one shipping class.

4. Update the product to save changes.

Bulk-Edit Shipping Classes

To bulk-edit shipping classes:

1. Go to: WooCommerce > Products.

2. Select the products you want to edit by ticking boxes on the left-hand side.

WooCommerce Shipping Classes - Bulk Product Edit

3. Select Edit from the Bulk Actions dropdown, then Apply. A new screen appears.

4. Select a shipping class from the dropdown.

WooCommerce Shipping Classes - Bulk Shipping Class Edit

5. Update to save changes.

Debug Mode ↑

After making changes to shipping settings, we recommend temporarily enabling Shipping Debug Mode.

1. Go to: WooCommerce > System Status > Tools.


2. Tick the Enabled checkbox for Shipping Debug Mode.

3. Save changes.

This disables shipping caches so you see immediate results of your shipping setting changes.

4. View the shipping rates and classes to confirm changes.

5. Disable by repeating steps 1-3, except untick the box.

Understanding Box Packing Calculations

In some of our premium shipping methods — such as USPS, UPS, and FedEx — the boxes used to ship are automatically calculated based on dimensions of items in the customer’s cart.

This page details how shipping calculators work and ways you can ensure proper setup and calculation.

Product Dimensions vs. Shipping Dimensions ↑

The most important part of all calculators is the individual product page – specifically, the “Shipping” tab available. There, you’ll see weight, length, width, and height, all in the units chosen in your WooCommerce Settings.

The standard product dimensions field. Shipping dimensions for variable products will be in each variation, or default back to this standard. Set per-product.
The standard product dimensions field. Shipping dimensions for variable products will be in each variation, or default back to this standard. Set per-product.

It’s important to realize that this area is where you input the shipping dimensions of the product, not the actual, laid out dimensions. Whatever size the item or package will be when it’s shipped will be what you input here, including any extra padding or wiggle room you choose to have.

As an example scenario, let’s say you’re selling movie poster One Sheets – laid out, these posters are 27″ wide, 41″ tall, and 0.01″ thick. However, if we entered those dimensions, we would need a box at least 27.01″ by 41.01″ by 0.02″ thick, something that would certainly result in wasted space and an extremely inflated fee.

Instead, you would likely roll the poster and place it in a tube. One Sheets are rolled so the smallest edge is the height – this means it will roll into a package approximately 27″ by 3″ by 3″. It would be circular, but by establishing these measurements, you’re sure that it fits into the tightest, most reasonable packaging possible.

Box Selection

For most methods, default box sizes will be used depending on the methods you select. These sizes can be found at the following websites.

  • USPS
  • UPS
  • FedEx
  • Canada Post
  • Australia Post
Unless otherwise mentioned, you should assume dimensions given for the boxes are the outside dimensions. You’ll want something slightly bigger than your product, as a 12″ product will be larger than the 11.75″ interior dimension, due to the physical walls of the cardboard box.

Using Custom Boxes

In some methods, you can also use your own boxes and envelopes. For this, you’ll need to measure both the exterior dimensions of the packages at their widest points as well as interior dimensions and maximum weight. Note that these boxes will be used alongside the default boxes, not entirely in place of them.

How to see the Calculated Boxes

All shipping methods have a debug mode – this shows the information sent to and from the shipping provider’s calculator, along with what boxes were selected for shipping. The output will vary depending on the method. See the documentation covering Shipping Methods & Debug Mode here.

While Debug Mode is active, your customers will be able to see the same information you do. Be sure to disable debug mode when you’re finished.
Flat Rate Shipping is a shipping method that can be added to Shipping Zones. Please see our Shipping Zones guide and create zones to begin using.

Flat Rate Shipping is a free shipping method in WooCommerce that allows you define a standard rate per item, per shipping class or per order.

Flat Rate Shipping works with Product Shipping Classes, adding more power and flexibility.

Setup and Configuration

To use this method it must be added to a Shipping Zone.

1. Go to: WooCommerce > Settings > Shipping.

2. Select a Shipping Zone, and click the + icon to Add Shipping Method. A modal window will display.


3. Select Flat Rate from the dropdown.


4. Click Add shipping method.

5. Click Flat Rate in the row you wish to define.


This takes you to a different screen.


6. Enter a Title that displays to customers in checkout.

7. Select Tax Status – Define whether or not tax is applied to the shipping amount.

8. Enter Cost – Applied to entire cart. Add additional costs per item to this field. See Advanced Costs below.

9. Save changes.

Advanced Costs
The Cost field allows you to charge a flat rate per item, a percentage based cost or a minimum fee.

Available placeholders:

  • [qty] – Number of products in the cart
  • [fee] – An additional fee. This fee has two optional arguments.
    • percent – A percentage based on total order cost.
    • min_fee – A minimum amount. Useful when using percentages.


  • 10 + ( 2 * [qty] ) – A base shipping cost of $10 plus $2 for each item in the cart.
  • 20 + [fee percent="10" min_fee="4"] – A base shipping cost of $20 plus 10% of the order total, which is at least $4.

Shipping Classes

If you have shipping classes, the interface adds a few more fields:

Flat Rate Shipping Settings Shipping Classes

  • There is one cost field for each shipping class.
  • No Shipping Class Cost – Useful if you use the Per Class option below. Otherwise, use the Cost field.
  • Calculation Type – Two options:
    • Per Order – Picks the most expensive option based on shipping costs in the cart.
    • Per Class – Charges shipping for each shipping class.