Skip to content

Shopify Dude Fix

Shopify Geolocation App Is Gone: Fix Markets Redirects Without Trapping EU Shoppers

Shopify retired its Geolocation app in March 2025. Replace old popup advice with native Markets redirection, language selectors, and the EU country-domain consent exception.

Type: Fix / Decision Guide · Stage: Scale · Topic: Markets / Localization / Redirects

On this page

Quick answer

Do not follow tutorials that tell you to install Shopify’s old Geolocation app. Shopify stopped new installations on February 1, 2025 and shut down/uninstalled the app on March 24, 2025. For many international storefronts, Shopify’s built-in country/region and language redirection now handles the basic localization job. But stores using EU country-code top-level domains need special care: Shopify does not automatically redirect EU visitors away from an EU ccTLD to a different country storefront in the situations described in its documentation. Offer a consent-based recommendation or manual selector instead.

The right replacement depends on whether you use a shared domain, dedicated market domains, subfolders, or several independent Shopify stores. Do not apply a blanket JavaScript geo-redirect before you know which model you have.

Why old Geolocation instructions are misleading

Older help posts commonly say to open Apps → Geolocation, enable recommendations, and add the app’s country selector to the footer. That was a reasonable instruction when Shopify’s own Geolocation app existed. It is no longer an actionable setup path. Other old tutorials assume the storefront should always redirect a visitor to a country-specific domain based only on IP address.

Shopify now distinguishes automatic localization from customer choice. The storefront may choose a market using geolocation or browser language, but a shopper still needs a way to override that choice. Travelers, VPN users, multilingual households, and buyers shipping to another country are everyday counterexamples to IP-based assumptions.

Start with the actual market/domain model

Setup What Shopify can do What you should test
US .com and Canada .ca as dedicated market domains Country/region redirection can send a Canadian visitor to the Canadian URL. Correct domain, localized product page, cart behavior, and manual switching.
Several markets share one .com Shopify can adapt displayed market content, currency, and language on the shared domain. Country selection persists and checkout uses the intended shipping market.
EU .de and .fr country domains Automatic cross-country redirection within the EU is restricted in the cases Shopify documents. Visitors can stay on the requested EU ccTLD and choose another market voluntarily.
Separate expansion stores Each store has its own markets and domain setup. Cross-store redirects and selector links require a deliberate mapping; do not assume a single-store Markets setting manages them.

Configure native redirection first

  1. Verify the markets. In Shopify admin, open Markets. Check which countries belong to each market, whether the market is active, and whether products, catalogs, languages, and domains are correctly configured.
  2. Check the current redirect controls. Shopify’s current help path is Online Store → Preferences → Automatic redirection. Enable Country/region and, when appropriate, Language. Older screenshots that point only to Markets → Preferences may reflect an earlier admin layout.
  3. Publish translations before testing language redirects. A language must be added, assigned to the market, translated, and published. Enabling language redirection does not generate missing translations.
  4. Keep manual selectors visible. In the theme editor, inspect the header or footer for Country/region selector and Language selector. If the theme lacks them, use a compatible third-party app or implement a proper localization form.
  5. Test the final checkout context. Shopify notes that the shipping address can determine the final market experience. A buyer who browses in one currency and ships to another country may see a checkout adjustment.

For a single Shopify store, a native theme localization form can submit the selected country without hard-coded domain guesses:

{% form 'localization' %}
  <label for="MarketCountry">Country or region</label>
  <select id="MarketCountry" name="country_code">
    {% for country in localization.available_countries %}
      <option value="{{ country.iso_code }}"
        {% if country.iso_code == localization.country.iso_code %}selected{% endif %}>
        {{ country.name | escape }}
      </option>
    {% endfor %}
  </select>
  <button type="submit">Update country</button>
{% endform %}

This is a simplified country selector; a production theme should integrate its existing accessibility, language-selector, styling, and form-handling conventions. It is not a cross-store domain switcher for independent expansion stores.

The EU ccTLD exception matters

Shopify’s automatic-redirection documentation explains that customers from the European Union who access an EU country-code top-level domain are not automatically redirected to another EU country experience. For example, a French visitor deliberately opening a German .de storefront should not be forced onto the .fr storefront simply because the browser appears to be in France.

Shopify distinguishes this from generic domains such as .com or .shop, where automatic redirection can still be available. If your market strategy uses EU ccTLDs, use a recommendation with an explicit customer choice rather than an automatic redirect that overrides the requested destination. Confirm your legal requirements with qualified counsel; a platform behavior is not a substitute for a legal review.

Do not hard-code a redirect for every visitor

A script that reads an IP location and runs window.location.replace() can cause redirect loops, break product deep links, interfere with marketing parameters, or send a shopper to a country where the item is not sold. It can also create a poor experience for people intentionally visiting another market.

Prefer Shopify’s native market/domain mapping. For multi-store architectures, maintain an explicit destination map by locale and product availability, preserve deep links when possible, and show a choice rather than forcing a cross-store redirect. Do not assume that the same product handle exists in every expansion store.

Common misunderstanding

“The Geolocation app disappeared, so Markets no longer supports country detection.” The app was retired partly because native market and language redirection now cover many use cases. The old popup and the new native redirect are not identical features.

“Every EU visitor must be redirected to the local ccTLD.” Shopify documents an important exception for EU country domains. Preserve the visitor’s choice and use consent-based recommendations where appropriate.

“Currency on the product page proves the market is correct.” Check product availability, language, domain, shipping address, checkout currency, and the ability to switch markets. Currency alone is not an end-to-end localization test.

How to test this

  1. Record the expected domain, country, currency, and language for a US visitor, Canadian visitor, and at least two EU-country scenarios.
  2. Test direct entry to a product deep link, not just the homepage. Confirm the selected market does not produce a 404 for a valid localized product.
  3. Test a visitor from France opening a German .de domain; verify that the shopper is not forcibly redirected away from the requested EU ccTLD.
  4. Switch countries manually in the header/footer selector and reload. Confirm the choice persists appropriately.
  5. Change the shipping country at checkout and inspect final currency, taxes, shipping options, and product eligibility.
  6. Repeat with a browser language that differs from the detected country, and with a VPN or controlled geo-testing setup.
  7. Check redirects for loops, lost UTM parameters, broken collection links, and unintended search-engine behavior before release.

Sources and further reading

Documentation checked October 14, 2026.