Geolocation popup copy: what to write so shoppers click

Most geolocation popups are written in about forty seconds, in the app's settings page, by whoever happened to be installing it. The default text stays. Then the store wonders why half the German visitors close the box and keep browsing in dollars, and the other half switch, land on the German site, and bounce because the product they clicked from an ad is not there.

A popup is five pieces of text and a position: a title, a body, an accept button, a decline button, and where on the page it sits. Each one is a small decision that changes what shoppers do. This post is about getting those decisions right. It applies to any geolocation app that lets you edit the copy; the examples use GeoBeacon's placeholders because that is what we can speak for.

Start with what the switch actually changes

The popup makes a promise. "We have a store for your region with local pricing, shipping and payment options" is a fine promise if the market the shopper is being sent to really has its own prices, rates and payment methods. If the Austria market is a submarket that inherits everything from Europe except a tax note, the same sentence is false, and shoppers notice when the page looks identical after they said yes. We went into the inheritance side of this in the submarkets post; the copy rule that falls out of it is simple: list only the things that differ, and lead with the one shoppers care most about.

  • Currency differs: say prices, not pricing. "See prices in euros" is concrete; "local pricing" sounds like marketing.
  • Shipping differs: say what they get. "Ships from our EU warehouse, no customs charges" converts; "local shipping options" does not.
  • Language differs: say it in both languages, or at least name the language in the button. A shopper reading English should not have to guess that the green button leads to a page in French.
  • Nothing differs except a domain: do not show a popup. Set the rule to redirect silently, or remove it.

The title: detected country, as a question

The title's job is to let the shopper check your guess. IP geolocation is right the large majority of the time and wrong often enough that every popup needs an easy out, and the quickest way to give one is to show your guess and ask. "Shopping from Germany?" does that in three words. In GeoBeacon the {country} placeholder fills in the detected country name, so one title works for every rule.

Avoid titles that assume: "Welcome to our German store" on a page that is still the US store confuses, and "You are in the wrong store" scolds a visitor who may be exactly where they want to be. Avoid exclamation marks. Nobody is excited to be geolocated.

The body: one sentence, one benefit

The body should be a single sentence that completes the thought "if you switch, you get". Two sentences is the limit; a paragraph will not be read. Put the strongest difference first. If the destination collects duties at checkout so there are no surprises on delivery, that is often the strongest difference for cross-border shoppers and the one most popups never mention.

Resist adding reassurance about data or cookies here. A geolocation lookup through Shopify's own edge is not what your cookie banner is about, and mixing the two makes shoppers suspicious of both. The cookie banner post covers how the two should coexist on the page.

The accept button: name the destination

"Yes" and "Continue" are the weakest labels a button can have, because the shopper has to re-read the body to know what they are agreeing to. Name the place: "Go to the Germany store", "Shop in EUR", "Zur deutschen Seite". GeoBeacon's {target} placeholder inserts the destination market or store name, so "Go to the {target} store" reads correctly whether the rule points at a market or at a separate domain.

If the destination is a different language, put the language on the button in that language. A French-speaking visitor on your English store will recognise "Voir le site en français" faster than any English description of it.

The decline button: honest about the consequence

The decline button is the one most stores get wrong, in one of two directions. Some hide it, leaving only an X in the corner, which reads as a dark pattern and sends travellers and gift buyers away. Others label it "No thanks" as though the shopper were turning down a favour.

The right label states what staying means: "Stay on the US store", "Keep browsing in USD", or, for a store that cannot ship to the detected country, "Stay here (we don't ship to Brazil)". That last one is the only place a negative belongs, and it belongs there because it saves the shopper from filling a cart they cannot check out: Shopify's backup region lets visitors from a country outside your markets browse but not complete a purchase. Pair the button with a sensible remember period. GeoBeacon honours the choice for a configurable number of days, 30 by default, and treats Escape, a click on the backdrop and the corner X all as "stay", so the shopper is never trapped and never asked twice in the same visit.

Position and weight

A centered modal with a backdrop blocks the page. That is appropriate exactly when the page the shopper is on will fail them: a country you do not ship to, or a store whose checkout cannot take their address. For everything else, a banner at the bottom or top lets them see the product they came for while they decide, and a shopper who can see the product is more likely to stay engaged whichever button they press. GeoBeacon marks the centered variant as a modal dialog for screen readers and the banners as non-modal, so the accessibility semantics follow the choice automatically; the only thing you choose is the position.

The small flag next to the title is optional and worth keeping on. It is the fastest way for a shopper to confirm or reject the detected country before reading a word, which is the whole point of the title.

Four worked examples

SituationTitleBodyAccept / Decline
Same store, different currency and local rates (US shopper on the Canadian market)Shopping from {country}?See prices in USD and shipping from our Buffalo warehouse.Shop in USD / Stay on the Canadian store
Separate domain in another language (French shopper on the .com)Vous êtes en France ?Notre boutique française livre en 2 à 4 jours, TVA incluse.Voir le site en français / Stay on the English site
Market with duties collected at checkout (Australian shopper on the US market)Shopping from {country}?Our Australian store shows prices with duties included, so nothing extra to pay on delivery.Go to the {target} store / Keep browsing in USD
Country you do not ship to, partner retailer exists (Brazilian shopper)Shopping from {country}?We can't ship to Brazil yet. Our partner Loja Azul stocks the full range.Go to Loja Azul / Stay here anyway

Notice that only the last example is a candidate for the centered modal, and only the second changes language in the popup itself, because the destination is an entirely separate site and the shopper benefits from seeing its language before they commit.

Testing the copy

  1. Read each rule's destination in the Shopify admin and write down what actually differs for a shopper there. The body may claim nothing else.
  2. Append ?geobeacon=DE (or any country code) to a page URL to see the popup as a visitor from that country would, including the placeholders filled in. Check it at the bottom position on a phone, where long button labels wrap.
  3. Read the decline button aloud. If it sounds like a guilt trip, rewrite it as a statement of what staying means.
  4. Give it two weeks, then compare the share of orders by shipping country against the market each order was placed in, in Shopify's sales reports. Orders shipped to Germany but placed in the US market are shoppers who declined or never saw the popup; if that share is high, the copy is not making the case, or the detection is being skipped on the pages those shoppers land on.

None of this needs a designer or a developer. It needs ten minutes with the list of what each market changes and the willingness to delete the default text. GeoBeacon is free to install and every string in the popup, plus its position and remember period, is editable from the Behaviour page.

Frequently asked questions

What should a Shopify geolocation popup say?

Name the detected country in the title, state in one sentence what the shopper gains by switching (currency, shipping, language), label the accept button with the destination and the decline button with what happens if they stay. Leave out any claim the destination market does not actually change.

Should a geolocation popup have a close or decline button?

Yes. A popup without a way to stay is a redirect with extra steps, and it punishes travellers, expats and anyone sending a gift abroad. Make the decline button honest about the consequence, remember the choice, and let Escape and a click outside the box count as staying.

Should the popup be in the shopper's language or the store's language?

Write it in the language of the page the shopper is currently on, because that is the page they chose to open and can read. If the destination market uses a different language, say so in the accept button or body rather than switching the popup itself, which would surprise anyone the detection got wrong.

Is a bottom banner better than a centered popup for geolocation?

A bottom or top banner is less intrusive and does not block the page, which suits stores where the switch is a nicety such as a currency change. A centered modal is appropriate when staying would lead to a dead end, for example a store that cannot ship to the shopper's country at all.