Shopify market-specific promotions: get the market right

Shopify has spent the last two years making “run this only in Germany” a first-class thing. You can set prices per market, write custom theme content for a market (Shopify’s own example is a Thanksgiving announcement bar shown only to Canadian customers), and since this year you can schedule storefront changes with Rollouts, including temporary events that revert on their own and, on the plans where it is available, targeting a rollout to a specific market. Put the three together and a German-only free-shipping weekend is a few screens of configuration.

Every one of those features keys off the same thing: the market the shopper is browsing in. And that is where regional promotions quietly fail, because the market a shopper is browsing in and the country a shopper is sitting in are not the same thing.

What “market-specific” means in Shopify

A market in Shopify is an audience defined by conditions (a set of countries, most often) plus the customisations that apply to that audience: currency, price adjustments, languages, domains or subfolders, product availability, theme content. Shoppers who match no active market fall into the backup region and get its defaults.

The customisations are the interesting part for a promotion. A price adjustment on the German market lowers or raises every price for shoppers in that market. Translate & Adapt lets you write a different announcement bar, hero heading or product description for that market, in the same language, and Shopify’s documentation explicitly lists “display promotional content based on the customer’s market“ as a use case. Rollouts adds the calendar: start the change on Friday at 00:00 local, revert it Sunday night, and never touch the live theme by hand.

All three are scoped to a market. None of them is scoped to a country. That distinction is invisible when a market is one country, and it bites the moment you ask how a shopper ends up in the market in the first place.

The step everyone skips: how a shopper ends up in a market

Shopify’s localization documentation opens with the requirement in one sentence: when customers visit your store, they need to be matched to the right market so they receive the right experience. The mechanism for that matching is the URL. A shopper on yourstore.com/de, or on yourstore.de, is in the German market. A shopper on yourstore.com is in whichever market owns the primary domain, usually your home market.

Now follow a real visit. Someone in Munich searches your brand name, clicks the first result, and lands on yourstore.com. Google generally ranks the primary domain highest for a brand query. That shopper is in your home market. Your German-only price adjustment does not apply to them. Your German announcement bar does not show. Your Rollout targeted at the German market is, from their point of view, not happening. Unless something moves them to the German market, the promotion you spent Thursday configuring is invisible to the people it was for.

The something can be the shopper, if your theme shows a country selector and they think to use it. Most do not. It can be a theme’s built-in localisation suggestion, if the theme has one and it is switched on. Or it can be a geolocation rule that recognises the country and offers, or performs, the switch.

Routing shoppers into the market before the promotion starts

This is the job GeoBeacon does, and for a market-specific promotion it is the piece that makes the rest of the setup pay off. A rule says: visitors from these countries belong in this market, optionally in this language. When the storefront loads, the script asks Shopify which country the visitor is in, using the same browsing-context endpoint Shopify themes use for their own localisation suggestions, checks the rules, and either shows a small popup (“Shopping from Germany? Go to the German store“) or redirects straight away, depending on the mode you chose.

A few behaviours matter specifically for promotions:

  • The rule is about countries, not campaigns. You set it once. The German shopper is routed to the German market in March when nothing is on sale and in November when everything is. The promotion is configured in Shopify, on the market; GeoBeacon just guarantees the audience is standing in the right place when it goes live.
  • Choices are remembered. A shopper who accepts, or who clicks “Stay here”, is not asked again for the number of days you set. Check that number against the promotion: if you set 30 days and a German shopper declined the popup three weeks ago, they will not be prompted during your weekend. Shorter memory means more prompts; longer means fewer chances to catch a returning visitor.
  • Checkout, cart and account pages are always excluded, and you can add your own path prefixes. A shopper mid-checkout in the wrong market is not going to be moved, because moving them would empty their cart. Get them into the right market on the landing page, not at the end.
  • Bots are skipped. Googlebot is never redirected and never shown the popup, so each market’s URLs keep being crawled and indexed as themselves. The SEO article goes through why that matters and what the alternatives get wrong.
  • You can test from your desk. Append ?geobeacon=DE to any storefront URL and the script behaves as if the visitor were in Germany. That is how you confirm, before Friday, that the German market really shows the German price and the German bar. ?geobeacon=off silences it for one page load.

A checklist for a market-only promotion

  1. Confirm the market boundary. Open the market and read its conditions. If “Germany” is a market that also includes Austria and Switzerland, shoppers in all three see the promotion. If you want only Germany, you need a market that is only Germany. Our Markets vs separate stores post covers when a market is the wrong unit altogether.
  2. Configure the promotion on the market. Price adjustment, custom content, Rollout, or all three. Set the Rollout’s end so the revert is automatic; promotions that end by someone remembering to end them do not end on time.
  3. Make sure a rule routes the target countries to that market. In GeoBeacon, a rule with the country list and the market as target. Popup mode if you want the shopper to consent; redirect mode if your legal and UX review is fine with moving them.
  4. Test with a forced country. ?geobeacon=DE on the home page, then a product page. Check the price, the bar, and that the URL is the German market’s.
  5. Check the backup region. A shopper from a country in no market at all lands in the backup region. Decide whether the promotion should reach them and whether a rule should route them anywhere.
  6. Leave the rule in place afterwards. Routing shoppers to their market is good for them every day, not just during a sale, because they see their currency, their shipping options and their language without hunting for a selector.

What GeoBeacon does not do

It does not set prices, translate content, or schedule anything; Shopify does all of that and does it well. It does not override Shopify’s own market resolution once a shopper is in a market. It does not move someone who clicked “Stay here” during the remembered period, and it does not send any information about your visitors to our servers, because the decision happens entirely in the shopper’s browser. It does one job: put the shopper in the market you configured for them, so the work you did in Shopify is seen by the people it was for.

If you are setting up a regional promotion for the first time, install GeoBeacon, create one rule for the target countries, and run the checklist above with a forced country before the start date.

Frequently asked questions

Can I run a promotion in only one country on Shopify?

Yes, as long as that country is its own market or part of a market you can target. Market-specific price adjustments, custom theme content through Translate & Adapt, and Rollouts targeted to a market all let you change what shoppers in that market see. Shoppers browsing a different market see none of it, which is the point and also the catch.

Why do shoppers in the target country not see my market-specific content?

Because they are browsing a different market. Shopify resolves the market from the URL the shopper is on, not from where they physically are. A German shopper who lands on your primary domain from a search result is in your primary market until something moves them to the German one.

Does GeoBeacon change prices or content per market?

No. GeoBeacon only routes shoppers: a rule maps countries to a Shopify market or an external URL, in popup or redirect mode. Prices, translations, announcement bars and Rollouts are all configured in Shopify. GeoBeacon just makes sure the shopper is standing in the market where you configured them.

Will redirecting visitors by country for a promotion hurt my SEO?

Not if search engine crawlers are never redirected and every market URL stays reachable. GeoBeacon skips known bots, decides in the browser after the page has loaded, and remembers a shopper's choice so they are not bounced on every visit. Our SEO article covers the details.