How to Setup Shipping Zones in Woocommerce

After following along with this tutorial, you’ll have a complete understanding of how to set up the most basic options in Woocommerce.

There are plenty of extensions–from those offered as paid add-ons via Woocommerce themselves, to third party plugins–available, but here we’ll go over exactly how to use the out-of-the-box features that come with the e-commerce plugin for WordPress, Woocommerce.

Getting Started

First, you’ll want to login to WordPress and navigation to Woocommerce > Settings > Shipping tab. Before anything has been setup, you’ll see this message:

the initial message shown in Woocommerce settings shipping zones when you haven't set anything up yet
If you see this screen, you’re ready to follow along with the entire tutorial. If you don’t have any shipping zones available, you’ll need to update Woocommerce. Otherwise, you can skip a few sections if you already have shipping zones setup.

The first action you’ll want to take is to click the Add Shipping Zone button shown in that message.

Adding a Shipping Zone in Woocommerce

the add shipping zone table in Woocommerce
This is our starting point.

Firstly, give the zone a name via the Zone Name field. Good names for zones might be “The United States”, “Europe”, “The West Coast” or “Central Pennsylvania”. “Rest of the World” is a default “catch all zone”. Let’s use those all as examples for how we might set some shipping zones up.

The United States / a Single Country

Let’s say we need to offer specific shipping prices to people in the United States, a single country.

In the the Zone Name field, give it a name like, “The US”. In the Regions field, you can begin typing “United States” and Woocommerce should show you a dropdown menu where you can select that country. You could do this for any country.

screenshot of the dropdown being explained here
As you type, Woocommerce will show you results that match.

Select the United States and then click Save Changes. We now have our new shipping zone created, and an add can begin adding shipping methods.

To do so, click the + icon to the right of our new shipping zone.

screenshot explaining the process outlined here
Click the + icon near shown to the right here.

Choosing a Shipping Method

A modal window will pop up. You can select from the three default options here.

Flat Rate allows us to enter a specific price, like $5, for shipping. There are also more advanced formulas we can use, and we’ll explore those below.

Free Shipping allows you to make shipping free, and this can further be controlled via coupons in Woocommerce. For example, you can only allow checkout when a specific free shipping coupon has been applied.

Local Pickup can be used if you want to allow people to literally come to a physical location and get their items.

Setting Up Flat Rate Shipping in Woocommerce

For this example, we’ll go with flat rate, so choose that option and click Add Shipping Method.

You’ll be taken back to the main screen and now have the option to click on Flat Rate.

click flat rate

We can create multiple Flat Rate shipping methods, but in this example we’ll only create one. If you wanted to create multiple methods, you might want to give the Method Title field a more descriptive name, but we can leave it as is for now.

Tax Status determines whether tax will be applied to the shipping cost or not. Different countries and regions will have different laws. The tax will be applied as per how you have your taxes setup otherwise.

Cost is where all of the magic happens. Some examples of what you can do with the cost field.

Note! Don’t use $ signs or other currency symbols in these fields.

5.99 If you enter a straight up value like this, then shipping will always be $5.99 for people in this shipping zone (unless you’ve also set up free shipping and they are eligible for free shipping thanks to a coupon / other condition).

5.99 * [qty] Using the [qty] shortcode, you’re creating an equation. In this case, we’re saying “charge $5.99 for each item in the cart”. So if we have 10 items in our cart, the total shipping cost will be $59.90.

[cost] * 10% You can use the [cost] shortcode, typically in conjunction with a percentage, to charge a percentage of the total cost of the cart. So if our cart is $25.00, our shipping costs would be $2.50, for a total cart cost of $27.50.

Woocommerce also has another built in shortcode to do exactly this, [fee percent=”10″] will work exactly the same as [cost] * 10%

You can also set [fee min_fee=”7″] to ensure shipping is always at least $7 (or whatever number you set) and likewise, [fee max_fee=”50″] to set a maximum cost for shipping.

Some additional useful or fun examples…

([qty] * 1.99) + 5.99 Here we are saying, “Charge $1.99 for each item in the cart, plus an additional $5.99”. This is a simple way to add handling charges.

9.99 + [fee percent=”10″ max_fee=”99.99″] Here we’re saying, “Charge $9.99 / cart, plus 10% of the carts total cost, up to a maximum of $99.99. This makes sure we’re always getting at least $9.99 + a percentage for the items in the cart, useful when you know it will cost you at least $9.99 to ship, plus perhaps some percentage of your employees time to actually pack the boxes, but also you don’t want to force your customers to pay a ridiculous amount for shipping.

([qty] * 3.99) + [fee max_fee=”$24.99″] This is great for when you need to charge a certain amount per product, up to a certain number of products. So maybe you sell shoes and know that it costs you $3.99 per shoe box to ship a pair of shoes, but after six or seven boxes of shoes, you can start putting them in a much more efficient package to ship them out, and this always costs you $24.99.

Once you’ve done this, you can click the Save changes button and then Shipping Zones to return to the main screen.

Europe / Multiple Countries

Okay, so maybe you have a certain rate to ship to a group of countries, or an entire continent. We’ll use Europe as an example here.

On the primary Shipping Zones page, click Add Shipping Zone near the bottom right of our shipping zones table, enter “Europe” in the Zone Name field, and then move over to the Region(s) field.

You’ll need to have a list of the countries you want to include (though “Europe” is a predefined option). For our example, let’s say we really only want to include Western Europe. Begin typing the names of the countries you want to include.

screenshot of the process described here, selecting multiple countries
You can choose multiple countries by just continuing to type new ones after you choose them.

The West Coast / Multiple States

Maybe our factor is in Oregon and so we want to offer special shipping rates to those states that are very nearby us. Let’s say, Washington and California.

Create your shipping zone as you’ve done in the past, give it the name “West Coast”, and in the Region(s) field you can just type the names of those states, easy as pie on a Sunday morning!

how to limit woocommerce shipping to certain states
Now we have a zone we can use to assign a specific price to residents of these states.

Central Pennsylvania / Specific ZIP / Postal Codes

We can take it even further. This time, lets say our warehouse is in Johnstown, Pennsylvania (right in the middle of the state). We know that we can ship our products for only $1.99 to people within a few hundred miles of our location. Woocommerce allows us to limit a shipping zone to specific ZIP / postal codes! This is ridiculously excellent as you have no idea how difficult this was prior to them setting this functionality up for us.

screen shot showing zip / postal code input to woocommerce shipping zones
Note the *s being used.

We may know all of the specific ZIP codes we want this special shipping rate applied to, in which case we can enter them all in like 15901, 15902, 15903, etc.

Or there may be dozens or hundreds, in which case–if they all share a certain pattern–we can use an asterisk like 159* which would cover all codes between 15900 and 15999. Or 15* which would cover everything from 15000 to 15999.

As they outline there, you can also enter 90210...99000 to cover everything in that range.

Rest of the World

This is a default zone setup to cover anything that might not be covered above. It’s primarily useful if you somehow forget something…at least that way the user will still be able to checkout. Otherwise, if a shipping method can’t be found, the user will get a message stating this and be unable to checkout (and the likelihood they’ll want your product so badly that they get in touch before abandoning the cart to go and buy it from a competitor is pretty slim).

This shipping zone will, however, respect your settings for which countries you sell to in the General tab.

What if multiple methods apply?

If more than one shipping method applies to the user’s address, they’ll get the choice between the two (or as many as apply).

Up Next: Woocommerce