Changing WooCommerce Product Pricing based on Shopper’s Location

chrislema-face

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.

  1. Purchasers can pick their location or you can determine it via geo-location (automatically)
  2. Configure product restriction rules
  3. 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.

locationfilters

Here's how you do it:

  1. Go to: WooCommerce > Settings > Visibility Options
  2. Set the Location Filter Functionality to Enabled.
  3. 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.
  4. Make the location required for Location Selection Requirements.
  5. Choose to Allow Changes to Location Selection. Or not.
  6. Use Geo Location or not.
  7. 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.

restrictions

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.

location-limit

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.

restrictionswoo

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.

And it will work with the Subscriptions extension.

About Chris Lema

Chris Lema has been working with WordPress since 2005. Over the years he's been a blogger, a speaker at WordCamps, a coach for WordPress product companies, and the founder of the conference for WordPress business owners, called CaboPress. Today he's the VP of Products at Liquid Web, where he manages the world's first managed platform for WooCommerce stores.

Chris Lema

Chris Lema has been working with WordPress since 2005. Over the years he's been a blogger, a speaker at WordCamps, a coach for WordPress product companies, and the founder of the conference for WordPress business owners, called CaboPress. Today he's the VP of Products at Liquid Web, where he manages the world's first managed platform for WooCommerce stores.

Join more than 7,500 others

My posts. Your inbox. Beautiful.

Chris Lema Speaking

Do You Want To Pick My Brain?

Over the last few years, through private consulting, coaching, and using the pay-by-the-minute Clarity service, I've helped hundreds of folks like you solve their WordPress problems and overcome their technical challenges.

“In 18 minutes Chris was able to save me months of lost time and tens of thousands of dollars by directing me to the right technologies to create my course marketplace. The value was 100x what I paid.” — Josh

Have a question right now? Most of my Clarity calls last less than 20 minutes. Let's set up a call.