Sell to Specific Countries in WooCommerce (and Block the Rest)

Choose where a WooCommerce store sells and where it ships: all countries, all except some, or specific countries. Then see what a customer in a blocked country sees at checkout, how shipping zones and tax fit in, and fix three common mistakes.

Watch the tutorial

This tutorial chooses where a WooCommerce store sells and where it ships, with only stock WooCommerce on a demo coffee shop. We set Selling locations to all countries, all except one, and specific countries, then Shipping locations, Default customer location and geolocation, and watch the classic and block checkouts react. We look at how shipping zones and tax rates relate to the countries you allow, and what a customer with a saved address in a blocked country sees. Then we go through three common mistakes. No code needed.

Also on YouTube (opens in a new tab)

Read the transcript

Can your shop sell to everyone? Maybe you only post to the United States and Canada, or there's one country you can't serve. In this tutorial, we'll choose where your store sells, and where it ships. Then we'll see what customers see, and how it works with shipping zones and tax. It's all stock WooCommerce, on our demo coffee shop, and we tested every step in a real store.

Open WooCommerce, then Settings, and stay on the General tab. Scroll down to General options. Three settings live here: Selling locations, Shipping locations, and Default customer location. Selling locations decide who can order. Shipping locations decide where products can be sent. The default location is just a starting point.

Selling locations has three choices. The first is Sell to all countries, which a new store starts with. The second is Sell to all countries, except for. Use it to list the places you can't serve. We'll add Mexico, and save. Now the checkout. We'll use the classic form, because its country list is easy to search. Search for Mexico, and there's no match. Search for Canada, and it's there.

The third choice is Sell to specific countries. Use it when you only serve a few. Pick it, choose United States and Canada, and save. Now the checkout list has just those two. Search for Germany, and there's nothing to choose.

Shipping locations is a separate setting. It has four choices. Ship to all countries you sell to, which is the default. Ship to all countries. Ship to specific countries only. Or disable shipping. Here's a handy combination. Sell to all countries, but ship only to the United States and Canada. Choose the two countries, and save.

On the classic checkout, the billing country list is long, and Germany is in it. Select Ship to a different address, and the shipping list has just two countries. The block checkout lists every country. But pick Germany, and it says so straight away. A cart with only a gift card has no shipping address, so there's nothing to block.

The last choice is Disable shipping and shipping calculations. It suits shops that only sell digital products, or services. Choose it and save, and the Shipping tab disappears from the settings. The checkout loses its shipping address and shipping options too. So don't use it for coffee beans, because no shipping is charged.

Default customer location is only a starting point. Customers can always change it. No location by default leaves the country empty. Shop country or region starts on your own country, which is the United States.

Geolocate guesses the visitor's country, and fills it in. Our demo shop tells WooCommerce this visitor is in Germany. Selling to all countries, the checkout starts on Germany. Now we sell to the United States and Canada only. The same visitor starts on the United States instead. A guess you don't allow is ignored. A real shop needs a lookup. WooCommerce can use the MaxMind database, which needs a license key under Settings, Integration. Some hosts also pass the visitor's country along. Geolocate with page caching support adds a short code to your shop links. Pick it only if your host caches pages.

Shipping zones and shipping locations have to agree. Open Shipping, and click Add zone. Type Germany under Zone regions, and Germany isn't offered. We only ship to two countries, so the zone list only offers those. Our zones are the United States at $6, and Canada at $15.

Tax follows the customer's location too. Turn on Enable taxes on the General tab, and a Tax tab appears. Calculate tax based on starts as the customer shipping address. Rates are set country by country, here eight percent for the United States, and five percent for Canada. At the checkout, a customer in Colorado pays US sales tax. A customer in Ontario pays Canada GST instead. So the countries you allow decide which rates can ever apply. A country you block never needs one.

What does a customer see when their country isn't allowed? This is June, a returning customer, with a saved address in Germany. She can browse the shop, and add coffee to her cart. Nothing warns her. On the block checkout, her saved country is flagged in red. Sorry, we do not ship orders to the selected country. And for billing, Sorry, we do not allow orders from the selected country. She can't place the order until she picks a country we allow. On the classic checkout, the country box is simply empty, because Germany isn't in the list. She has to choose one.

So which setting should you use? Serve only a few countries? Sell to specific countries. Only a few you can't serve? Sell to all countries, except for. Anyone can pay, but you only post to some? Ship to specific countries only. Selling only digital products? Disable shipping.

Mistake one. Allowing a country, but giving it no shipping zone. Here we sell and ship to every country, but only made zones for two. A customer in Germany reaches the checkout, and finds no shipping options. They can't order. So add a zone for every country you allow, or take it off the list.

Mistake two. Allowing a country, but adding no tax rate. We've added a Germany zone at $12, but there's no German tax rate. The German customer pays no tax at all. The United States customer has tax added. Check what your local tax rules require, and add a rate for every country you sell to.

Mistake three. Treating these settings as a lock. WooCommerce checks the country in the address the customer types. It doesn't check where they really are. Always test as a customer, place a test order, and try an old saved address too.

That's how to sell to specific countries, and block the rest. Selling locations decide who can order, shipping locations decide where it goes, and the default location is only a starting point. Add a zone and a tax rate for every country you allow, and always test as a customer. Thanks for watching.

What you will learn

  • Where the three country settings live: Selling locations, Shipping locations and Default customer location
  • The three Selling locations choices: all countries, all countries except some, and specific countries
  • The four Shipping locations choices, and why selling to all but shipping to two countries is a handy combination
  • What the default customer location does, and why it is only a starting point
  • How geolocation works, and what it needs on a real store
  • How these settings relate to shipping zones and tax rates
  • What a customer sees at the block and classic checkout when their country is not allowed
  • Three common mistakes: a country with no shipping zone, a country with no tax rate, and treating the settings as a lock

Good to know

Everything shown is stock WooCommerce (version 11.2.2 in this video) with no extra plugins, and screens may look slightly different in other versions. The demo shop passes the visitor's country in to show geolocation, so a real store needs a country lookup (the MaxMind database or one your host provides), and these settings check the country in the address the customer types, not where they really are, so test as a customer on your own store and check your local tax rules before you rely on them. Filmed on a demo shop (Ridgeline Coffee Roasters) with sample products and prices in US dollars. The voice-over is a computer-generated voice.