Blog · gclid
Google tag gateway did not replace the conversion linker. gclid still dies on the thank-you host.
Google tag gateway serves the Google tag from your first-party domain. It does not copy gclid across checkout. Conversion linker still writes the first-party cookie. Hosted checkout on another domain still drops it.
The first fix most stacks will ship is first-party script serving. Load gtag from shop.example.com instead of googletagmanager.com. Some measurement requests go through that same host. That is a transport change, not a join. The click id still has to survive the hop from the landing host to the thank-you host.
Enhanced conversions hashed email is a match key for signed-in Google accounts. It is not a substitute for the click id on the same session. A gateway that looks healthy in Tag Assistant while checkout.other-processor.com never saw gclid is how the purchase never attributes. That is the news, not a new hashing tutorial.
Auto-tagging still writes gclid on the landing URL
Auto-tagging appends GCLID, the Google Click Identifier, to the URL after an ad click. Google's example is www.example.com/?gclid=123xyz. Some browsers require auto-tagging to track conversions. New accounts have it on by default. If the site rejects arbitrary query parameters, the landing page 500s and you have a different outage. If you use redirects, the GCLID has to reach the final landing page or conversion tracking has nothing to store.
Google Ads conversion tracking is then a first-party cookie job. The Google tag, or a Conversion Linker tag in Tag Manager, reads that query parameter and stores the click in cookies on your domain. When the conversion tag fires later, it reads the stored click. If the conversion page is on a different domain than the landing page, Google's conversion-tracking article says to use the gtag.js domain linker to pass GCLID. Sitewide tagging on one host does not reach a second registrable domain by itself.
Click trackers and server-side redirects are the quiet strippers. Google lists them in the before-you-begin list: pass GCLID through. If your ad goes through a tracker that lands on shop.example.com without the query, the linker has nothing to detect. Tag gateway will happily serve the script on that empty landing URL. The first-party cookie then holds nothing useful for that session.
Tag gateway only changes where the script is served
Google tag gateway for advertisers lets you deploy a Google tag using your own first-party infrastructure on your website's domain. In the standard setup, the page requests the tag from a Google domain and measurement goes to Google. With the gateway, the site loads the tag from your domain, and some measurement requests go to Google using that first-party domain. The product is real. The job it does is serving and routing.
Nothing in that description copies gclid from shop.example.com onto pay.hosted-checkout.com. The cookie is still first-party to the host that set it. A CDN in front of shop.example.com does not make pay.hosted-checkout.com the same site. You still need the linker parameter on the navigation, and a tag on the thank-you host that knows how to read it. If the hosted checkout is a third party that will not run your tag, the click id dies at the boundary. Gateway does not negotiate that for you.
Self-service gateway setup asks you to replace every Google tag script src with the new measurement path. If you skip that, the browser keeps requesting Google directly and bypasses the gateway. That is a coverage bug for the gateway, not a conversion-linker bug. The inverse mistake is more common: the gateway is Active in the Google tag UI, so the team deletes the Conversion Linker as duplicate infrastructure. The script origin improved. The thank-you host still has no _gcl_aw.
The config people will ship after the gateway
First-party script serving with conversion linking off, and a thank-you host that never ran a linker. gclid dies at checkout.
gtag('config', 'AW-YYYYYY', { 'conversion_linker': false });
// shop.example.com loads gtag from /metrics/gtag/js via tag gateway
// pay.other-processor.com never sees gclid, _gl, or _gcl_aw
That config is legal. Google documents conversion_linker false as the opt-out. Combined with a hosted checkout on another domain and no linker parameter, the conversion tag on the thank-you page has no first-party click to read. Auto-tagging did its job on the ad click. The gateway did its job on the script. Attribution still has no gclid for that session.
Enhanced conversions does not fill that hole for unsigned traffic. Google describes it as sending hashed first-party customer data (email, phone, address) to improve measurement by matching to signed-in Google accounts. That is a match key. It can recover some conversions where cookies were thin. It does not restore a dropped gclid for a user who is not signed in, and it is not a replacement for capturing the click id on the landing hit and copying it through checkout.
Names that do not translate
- Tag gateway is first-party script serving. It is not Conversion Linker.
- gclid is a query parameter on the landing URL. _gcl_aw is the first-party cookie the linker writes.
- _gl is the cross-domain linker parameter. It is not gclid pasted onto the thank-you URL by the CDN.
- conversion_linker: false opts out of the first-party click cookies. Do not set it because you turned on the gateway.
- Enhanced conversions hashed email is a signed-in match key. It is not the click id.
- A Google tag on every page of shop.example.com does not fire on pay.other-processor.com.
Hosted checkout is still a domain boundary
The conversion-tracking article is blunt: if the conversion page is on a different domain than the landing page, use the domain linker. Tag Manager's Conversion Linker article is the same idea with a checkbox. Neither article says the gateway supplies that parameter. The thank-you host has to be in the linker domain list, and it has to run a compatible tag. A processor that only lets you drop an image pixel is not a compatible linker.
If you control both hosts, put the linker on both, list both domains, and click through an ad until the destination shows _gl and then _gcl_aw. If the processor will not run your tag, capture gclid on the landing hit, store it server-side, and send it with the conversion through a path Google documents for that setup. Do not assume the gateway cookie will be visible on a different site. Browsers do not work that way.
Do not fire conversion tags from an iframe inside another tracking tag. Google lists that as a before-you-begin failure. A gateway that wraps measurement in a nested frame has the same class of bug as a Floodlight iframe: the first-party context is no longer the page the user sees.
The conversion linker tag automatically detects the ad click information in your landing page URLs, and stores this information in first-party cookies and browser local storage on your domain for web pages.
Tag Manager: Conversion linker
What to do
Leave auto-tagging on. Pass gclid through every redirect. Run Conversion Linker or a sitewide Google tag on the landing host, and on the conversion host if you control it. For a different domain, enable linking across domains and confirm _gl on the destination. Do not set conversion_linker false because you enabled tag gateway.
Treat enhanced conversions as an extra match key for signed-in users, not as the click id. Capture gclid on the first landing hit and copy it through checkout if the thank-you host is not yours. Lint the tag config you actually ship, including the gateway path and the linker domains. A green gateway status is not a conversion.
The contract page for Google Ads conversions is the docs. This post is the market fact: first-party serving landed, and gclid still dies on hosted checkout. Pixellint is not affiliated with Google. Passing a linter means the artifact matches the published setup. It does not mean Google Ads attributed the purchase.
Checklist
- Keep auto-tagging on. Confirm gclid reaches the final landing URL through redirects and click trackers.
- Run Conversion Linker or a sitewide Google tag on landing pages. Do not set conversion_linker false.
- If checkout is another domain, enable linking across domains and confirm _gl, then _gcl_aw, on the thank-you host.
- Tag gateway is optional first-party serving. It does not replace the linker or copy cookies to a processor host.
- Enhanced conversions hashed email is a match key. It is not a substitute for gclid on the same session.
- A gateway status of Active is not proof the conversion tag saw a click id.
Sources
Contract pages
The dated argument is above. These pages are the field lists.