Changing WooCommerce Product Pricing based on Shopper’s Location
A WooCommerce Product Pricing Challenge
Imagine you’re running a WooCommerce store where the prices are different based on different country locations where you might sell your product.
You have options
If you’re looking for a plugin that will automatically convert your price to a different currency based on the user’s location, you may want to look at this plugin that does that.
The issue with that approach may be conflicts with WPML and/or lack of support for Subscriptions.
So let’s look at another approach
You could write code. There are some articles you might look at here or here.
But what if you don’t want to write code (or can’t) and you may want to use subscriptions?
The approach I’m going to suggest here is for when we’re talking about a finite set of locations you’re supporting. It would likely be too much work for a variety of prices across 20, 30 or 40 countries.
But let’s say you were selling a product or two that had different prices based on whether the buyer was in the United States, Mexico or Canada.
WooCommerce let’s you mark (in WooCommerce > Settings > General) which countries you’re selling to. We’re going to use that…
This might be an event that you set up in each of the three countries. Or it might be a membership/subscription that has meetings (and therefore different costs based on location). Or you have products that have three different distribution locations and you change the pricing based on the buyer’s location.
Let’s start with this simple move…
Let’s start by creating multiple products. I’m talking about creating three products that are basically the same, except that they have different prices. If you want to get funky, you might put the location in the name, but it’s not necessary.
Now, to be clear, I’m not suggesting that you create variations. I’m talking about three different, unique, products.
And then we’re going to create three different product categories (US, Mexico, Canada) that we’ll use later.
The benefit is that you’re going to be able to control which of these products appears based on the location selection by the purchaser.
Install the Catalog Visibility Options Extension
The way you do that is that you buy the Catalog Visibility Options Extension.
When you install and activate this extension, it gives you three benefits.
Purchasers can pick their location or you can determine it via geo-location (automatically)
Configure product restriction rules
Based on that location selection, and product configuration, you can limit which products are visible
The net result is that only one of the three products should appear in the catalog.

Here’s how you do it:
Go to: WooCommerce > Settings > Visibility Options
Set the Location Filter Functionality to Enabled.
Select the Location Selection Page. This is the page where you would like users to select their location. The location selector is automatically added to the page you choose, and the countries available are the same as the countries you enabled for WooCommerce. Once you have configured the location selector and a user selects their location, they can only see products configured for their location.
Make the location required for Location Selection Requirements.
Choose to Allow Changes to Location Selection. Or not.
Use Geo Location or not.
Clear cart when location changes or not.
And then you’re going to want to put the restrictions on each product. Use the “Who can purchase this product” setting – based on category settings.

What this does is that you can adjust your product category settings so that only products in a particular category are limited by location. You find this by going to WooCommerce > Products > Categories and picking the one you want to use.

Now protect against purchasing the alternative products
What you’ve done so far is to protect a user from seeing one of the alternative products. But what if they somehow get to that product? How do you ensure that they’re buying the right one?
In other words, is there a way to make doubly sure they’re buying the right product?
And there’s a second extension that can help with this, the WooCommerce Conditional Shipping and Payments extension.

This allows you to create additional restrictions to the payment gateway per product. So imagine you have Paypal as your gateway. You can put the restriction on the Mexico product that the single gateway (Paypal) isn’t available if the billing country is US (or Canada).
And you’d do that, in the inverse, for the other products.
This combination of the two plugins allows you to:
Create multiple versions for different locations with different prices
Limit who sees which product
Limit who purchases which product
And that little hack will ensure that you can effectively show different prices for different products based on the different locations of your shoppers (and your offerings).
Without writing any code.