Geolocation redirects and paid traffic: keep UTM and gclid

You pay for a click. Google appends a tracking parameter to the landing URL, the shopper arrives, and a geolocation script decides they belong on the Canadian storefront and sends them there. Somewhere in that second hop the parameter can fall off, and a few weeks later your Google Ads report says the campaign brought sessions but no orders, while Shopify says the same orders came from Direct. Nobody lied; a redirect just rebuilt the URL without its tail.

This article follows an ad click through a Shopify geolocation redirect, shows which parameters survive under which setup, and explains the second problem paid traffic runs into with geo-redirects: Google's policy on where an ad is allowed to send people. It uses GeoBeacon as the worked example because its decision logic is small enough to describe exactly, but the principles apply to any redirect app.

What is on the URL when the shopper arrives

A Google Ads click with auto-tagging on lands with a gclid parameter, the click identifier that lets Google Analytics and Google Ads conversion tracking connect a later purchase to the click. If you also use manual tagging or a tracking template, there are utm_source, utm_medium, utm_campaign and friends. Meta appends fbclid, Microsoft appends msclkid, Klaviyo and most email tools add UTMs. Shopify's own marketing reports attribute a session to a campaign by reading those UTMs on the first page of the visit.

Google is explicit about the risk: if your website uses redirects, it's important to make sure the GCLID is passed to the final landing page. Whether that happens is not up to Google. It is up to whatever code performs the redirect.

Where the parameters go during a geo redirect

A geolocation redirect has two shapes on Shopify, and they behave differently.

Switching market on the same store. The shopper stays on your domain and moves to another market context, often a subfolder such as /en-ca/. Shopify performs this through its localization endpoint, which takes a return_to value naming the page to land on. GeoBeacon fills that value with the current path and the current query string, so a shopper who arrived on /products/jacket?gclid=abc lands on /en-ca/products/jacket?gclid=abc. The product, the click identifier and any UTMs all travel.

Sending the shopper to another domain. Stores that run a separate storefront per country redirect to a different URL altogether. Here the app has to build the destination from scratch, and that is where query strings usually die, because the simplest implementation is location = "https://ca.example.com". GeoBeacon's URL rules have a Keep path option: when it is on, the current path is appended to the destination and the current query string is copied over, minus the app's own testing parameter. When it is off, the shopper lands on the destination's home page with nothing attached, which is sometimes what you want for a store with a different catalogue, but never what you want for an ad click.

There is a third case worth naming: the parameters arrive, the redirect preserves them, and the tracking still breaks because the destination is a different domain with a different analytics property or no conversion tag at all. A preserved gclid on a page that nothing reads is decoration. Cross-domain setups need the tag on both domains and, for Google Analytics, cross-domain measurement configured; that is outside any redirect app's reach.

The policy problem: destination mismatch

Attribution is the quieter of the two problems. The louder one is an ad disapproval. Google's Destination mismatch policy requires that an ad sends people where it says it does, and its list of common causes includes, in so many words, geo-redirection apps sending users to different domains. Google's crawler requests your final URL; if it is redirected to another website, the ad is flagged. A June 2026 update carved out an exception for cross-domain redirects with prior approval, aimed at manufacturers routing to retailers, which is not the situation most stores are in.

Two details follow from that. Market switching within one domain is not a mismatch: example.com/products/jacket redirecting to example.com/en-ca/products/jacket stays on the domain the ad named. And a redirect to another domain is a policy problem regardless of whether parameters survive, so for stores with separate domains the fix is not a better redirect. It is not redirecting paid clicks at all.

GeoBeacon skips known crawlers when the bot setting is on, so Google's policy check generally sees the page itself rather than a redirect. Treat that as a courtesy to crawlers, not a licence. The policy describes what happens to the people who click, and if real shoppers are sent from the advertised domain to another one, the ad is doing what the policy forbids whether or not a crawler noticed.

Set the ads up so the redirect has nothing to do

The cleanest arrangement is that paid traffic never triggers a geolocation rule. A campaign targeted at Canada already knows its audience is in Canada, so its final URL should be the Canadian market URL or the Canadian domain. When such a shopper arrives, GeoBeacon compares where they are with where the rule would send them, finds they are already there, and does nothing. The parameters stay on the page that Shopify and your analytics tag record as the landing page, with no second hop to worry about.

  1. List your campaigns by geographic target. Anything targeted at one country gets a final URL on that country's market or domain. Country-specific campaigns with a generic final URL are the ones generating both problems above.
  2. Use the market URL, not the home page. Shopify market subfolders keep the product path, so the Canadian version of a product page is the same path under /en-ca/. Point the ad there directly.
  3. Leave the geolocation rules for everyone else. Organic search, links shared in messaging apps and direct visits do not come with a country label. That is the traffic a redirect rule is for.
  4. Check Keep path on any URL rule. For the visitors a rule does catch, make sure the path and query string travel. In GeoBeacon that is one toggle per external URL target; market rules preserve them always.
  5. Prefer a suggestion for cross-domain rules. If you run separate domains, use the popup mode rather than an automatic redirect. The shopper stays on the advertised page, sees an offer to switch, and if they accept, the query string goes with them.

How to verify without spending a click

You do not need to run an ad to check the plumbing. Open a product page on your store with a made-up parameter and GeoBeacon's country override in the same URL, for example /products/jacket?gclid=test123&geobeacon=CA, following the steps in our guide to testing a redirect without a VPN. After the redirect, read the address bar. You should see the market prefix or the new domain, the same product path, and gclid=test123 still present; the geobeacon parameter is stripped because it was never meant for the destination. Then open your analytics real-time view and confirm one session with the expected source, not two.

Two sessions is the sign of a subtler problem: the analytics tag fired on the first page before the redirect, then again on the destination. Any client-side redirect can do this, because the script runs after the page starts loading. It inflates sessions and, if the first hit is the one that carries the parameters and the second is not, it splits attribution between a bounce and a Direct visit. Preserving the query string keeps the second hit attributed too, but the way to stop the double count is the one above: send paid traffic where it belongs so the redirect never runs. If it runs constantly for paid clicks, the fix is in the campaign settings, not the app.

A note on Shopify's own redirection

Shopify Markets has a built-in automatic redirection for stores with market-specific domains or subfolders. Run it or an app, not both; two systems deciding where a visitor belongs produce loops and second hops that no amount of parameter preservation makes tidy. Our troubleshooting checklist covers how to pick one. Whichever you keep, the paid-traffic rule is the same: the ad should land the shopper on the final page, with its parameters, on the first try. Redirects are for the visitors who did not come with directions. Try it on your store from the GeoBeacon landing page.

Frequently asked questions

Does a Shopify geolocation redirect lose UTM parameters and gclid?

It depends on the app. Any redirect that builds a fresh destination URL drops the query string unless it copies it across. GeoBeacon keeps the current path and query string when it switches a shopper to another market, and does the same for external URL rules when Keep path is on, so utm_source, utm_campaign and gclid arrive at the destination page.

Why did Google Ads disapprove my ad for destination mismatch after adding a geo redirect?

Google's Destination mismatch policy names geo-redirection that sends users to a different domain as a common cause: its crawler followed the final URL, landed on another website, and treated the ad as pointing somewhere other than it claimed. Redirects that stay on the same domain, such as switching a Shopify market in a subfolder, are not a mismatch. Cross-domain redirects from an ad's final URL need prior approval.

Should paid traffic be geo-redirected at all?

Usually not. A geo-targeted campaign already knows the shopper's country, so its final URL should point at the right market or domain directly, and the redirect script should find nothing to do. Geolocation rules are for the traffic you cannot target in advance: organic search, shared links, direct visits. Set the ads correctly and the redirect becomes a safety net that rarely fires.

Is a suggestion popup safer than an automatic redirect for ad clicks?

Yes, for cross-domain destinations. A popup leaves the shopper on the page the ad promised and offers the other store as a choice, so the crawler and the shopper both see the final URL, and the attribution parameters stay on the page that records the session. If the shopper accepts, GeoBeacon carries the query string to the destination as well.