If your store ships worldwide, a single announcement bar is doing two jobs badly. "Free shipping over $50" is a strong offer in the US, mildly insulting to a German customer who expects free shipping as standard, and meaningless to an Australian visitor wondering why the price is in dollars with no duty estimate.
Showing different content by country fixes that. But "show different content by country" means three different things in Shopify, and mixing them up is why merchants often buy the wrong tool. Here is what each approach actually changes.
What "different content by country" can mean
- Catalogue and pricing content: currency, translated product titles and descriptions, local payment methods, duty and tax handling.
- Theme content: the text baked into your theme files, switched by language or locale.
- Message content: announcement bars, popups, banners, and which products a visitor can see at all.
Most merchants need all three, but they are handled by different tools. Choosing one tool for all three is where projects stall.
Option 1: Shopify Markets (catalogue + pricing)
Markets is Shopify's native multi-market feature. It gives you a market per region or country, with its own currency, pricing adjustments, domains or subfolders, and translated content if you have translations. If you are selling to the EU at EUR prices with local payment methods, Markets is the right and necessary tool.
What Markets does not do: it does not give you a no-code way to swap an announcement bar, launch a different popup, or hide a specific product from one country. It also keys off the locale or market the visitor is browsing, not necessarily the country they are physically in. Those two things usually match, but not always. A US-based shopper browsing your UK subfolder is in the US market context, and a VPN user is somewhere else entirely.
Option 2: Theme code with Liquid localization
Shopify's theme language exposes the visitor's country and locale in Liquid, so with a developer you can branch on it. Something like a country-specific banner is genuinely achievable this way.
The trade-off is operational, not technical. Every new message is a theme edit and a deploy. Marketing campaigns that change weekly do not belong in theme code, and asking a developer to add a banner for a weekend promotion is how campaigns get cancelled. There is also a practical limit: your theme can only see the market or locale Shopify resolved, so it cannot target a country the visitor was not routed into.
Option 3: A geolocation app (the message layer)
This is the layer most merchants are missing. A geolocation app detects the visitor's country from the request and lets you attach content to that country, with no theme edits and no developer.
With GeoTailor, for example, you create a campaign, pick the countries it should appear in, and set the display type: announcement bar, popup, banner, or product block. The same store then shows:
- A free-shipping bar to US visitors, and a duties-and-taxes notice to EU visitors
- A welcome popup offering 10% off to new markets, and nothing at all to your home market
- A product hidden from countries you cannot legally ship to, rather than a checkout failure
Because the rules are data rather than code, changing them is a two-minute admin task, and the campaign can be scheduled to run for a weekend and then stop on its own.
Which one do you need?
| What you want to change | Use |
|---|---|
| Currency, local pricing, translated catalogue | Shopify Markets |
| Payment methods and duties/tax display | Shopify Markets |
| A permanent, rarely-changing banner in theme markup | Theme + Liquid |
| Announcement bars and popups per country | Geolocation app |
| Running weekly campaigns without a developer | Geolocation app |
| Hiding a product or price from specific countries | Geolocation app |
The honest answer for most international stores is Markets and a geolocation app. Markets makes the catalogue correct; the geolocation app makes the messaging correct. They are not competitors.
Setting up country targeting step by step
- Decide your country groups. Do not start with 40 countries. Start with three: your home market, a shipping-friendly market, and a market with different rules (usually the EU).
- Write the message per group. The offer should be genuinely different, not the same words with a flag emoji. Change the actual promise: shipping threshold, return window, duty handling, or local payment mention.
- Install the geolocation app and enable its app embed. In GeoTailor this is the App Embed in your theme editor. Nothing is injected into your theme files.
- Create one campaign per group and set the country filter. Set the countries it targets, and mark it Active.
- Check it in an incognito window. Your own browser is the worst test, because caching and your logged-in session both interfere. Use the app's preview first, then a clean incognito window.
- Add a fallback. Decide what visitors in every other country see. A generic worldwide message is better than an empty bar.
Three mistakes worth avoiding
1. Targeting by language instead of country
A French-language store is not the same as France. Plenty of French speakers shop from Belgium, Canada, and Switzerland, each with different shipping and duty realities. Language targeting answers "what language do they read", country targeting answers "what can I promise them".
2. Making every country different
Twenty country-specific banners is twenty things to maintain and twenty chances for a stale offer to sit live for three months. Group countries by the promise you can make, not by geography.
3. Forgetting the legal messages
The most valuable country-specific message is rarely promotional. For EU visitors it is often the right of withdrawal and return window; for the UK it is the same with different wording; for the US it is a shipping and returns summary. Getting these right per market reduces disputes and chargebacks, and they are exactly the messages a single global bar cannot express.
Frequently asked questions
Can Shopify show different content by country without an app?
Partly. Markets plus Liquid localization handles currency, language, and translated content, and a developer can branch on locale in your theme. What Shopify does not provide is a no-code way to change an announcement bar, popup, or offer per country, or to target by country when it differs from the market the visitor was routed into.
Does GeoTailor change prices or currency?
No, by design. GeoTailor targets the message layer: announcement bars, popups, banners, and product blocking. Pricing, currency, and translated catalogue content stay with Shopify Markets.
How does GeoTailor know which country a visitor is in?
It resolves the visitor's country server-side from the request, and it respects the Shopify Market the visitor is browsing, so content matches both where the shopper is and which market they are shopping in.