This is the most common support question in geo-targeting, and it is almost never a bug: "I set up a banner for US visitors, I am in the US, and nothing shows."

The reason is that a targeting rule works by comparing the visitor's country to the countries you listed. If you are testing from inside the country you targeted, the rule is doing exactly what it should in a different way than you expected. Here is how country detection actually works, and how to verify it without guessing.

How country is detected

Geolocation resolves a visitor's country from their network request, at the server, using their IP address. It is not the browser's language setting and it is not the currency Shopify has selected.

That distinction matters when you debug. Shopify's own localization is market and locale based, and it exposes country and locale to the theme through the localization object. A geolocation app is resolving something slightly different, which is the physical origin of the request. Most of the time the two agree, and when they disagree, it is usually one of these cases.

If you run a multi-market store, it is worth understanding how Shopify's market routing behaves before you debug, since it is documented in markets and multiple currencies or languages.

Why your own test looks wrong

Six causes, in the order they usually turn out to be:

  1. You are inside the targeted country. If you targeted the US and you are in the US, the visitor matches, and depending on how you set the rule up, it may be excluded rather than included. Check whether your rule is "show in these countries" or "show everywhere except these".
  2. The campaign is still a draft. A draft campaign does not render on the storefront. This is the second most common cause.
  3. The app embed is not enabled. Theme app extensions are inert until the merchant enables the app embed in the theme editor. Nothing renders, on any page, in any country.
  4. You already dismissed it. A popup or bar that has been dismissed is usually not shown again in that session. Your browser remembers, so the second test silently fails.
  5. Browser caching. The page, and sometimes the settings that drive it, may be served from cache.
  6. The theme editor is open. Design mode behaves differently from the live storefront, and some rules are suppressed to avoid disrupting editing.

The reliable test sequence

  1. Confirm the app embed is on in your theme editor. Fix this first, because nothing else matters until it is enabled.
  2. Set the campaign Active, not Draft, and check its schedule has started.
  3. Use the app preview. A decent geo-targeting app renders a preview inside the admin so you can see the message without involving your own connection at all.
  4. Then test the real thing in a clean incognito window with no extensions. Incognito starts without your dismissed-state and usually without a warm cache.
  5. Target a country you are not in. This is the key step people skip. To see your US rule work, test from somewhere else, and to see the "everyone else" fallback, test from your own country.
  6. Compare against a public IP lookup so you know which country any geolocation tool will resolve for your connection.

Testing a country you are not in

You have three options, in increasing order of realism:

  • App preview. Fastest, no network trickery, and usually enough to confirm the message and styling are right.
  • A VPN exit in the target country. Closer to real, but not perfect. Some VPN addresses are geolocated to a data-centre region rather than the country you selected, so a failure here does not always mean a real failure.
  • Ask someone in that country, or use a browser testing service with nodes in that region. This is the only method that reflects a genuine visitor.

Use the preview for design and the last option for the final check. A VPN is best treated as a hint rather than proof.

What geolocation cannot tell you

Set expectations correctly, because a few things are genuinely not knowable from an IP address:

  • A VPN or corporate network hides the visitor's real country by design.
  • Border regions and travel can resolve to a neighbouring country, because mobile carriers route traffic through their own infrastructure.
  • Language is not country. A French-language visitor may be in Belgium, Canada or Switzerland, each with different shipping and tax realities.

None of these makes country targeting unreliable in practice. They do mean you should design rules to fail gracefully: prefer showing a sensible worldwide fallback over showing nothing, and prefer hiding a product over hard-blocking a checkout, because the failure mode is gentler if detection is wrong.

Frequently asked questions

Why does my country-targeted banner not show when I test it?

The most common cause is testing from inside the country you targeted, so you do not match a "show only in these countries" filter. Other causes are a campaign left in Draft, a rule already dismissed in that browser session, or the app embed not being enabled in the theme editor.

Does a VPN show me the right country version of my Shopify store?

Usually yes for geolocation, because the country is resolved from the request rather than the browser language. It is not perfectly reliable, since some VPN exit addresses geolocate to a data-centre region rather than the country you selected.

How do I know which country my store thinks I am in?

Use the app's own preview where it offers one, and otherwise compare against a public IP geolocation lookup. That tells you what any geolocation-based tool resolves for your connection, which is the value your rules are evaluated against.

Install GeoTailor free Show content by country