Google Ads Conversion Tracking When the Conversion Happens on a Different Domain
A shopper clicks your ad. They land on yourstore.com. They add to cart, hit checkout, and your site quietly hands them off to secure.checkout-app.io to pay. The card clears. The order is real. Google Ads records zero conversions.
Nothing is broken in your account. Your bids are fine. Your conversion tag is sitting right there on the thank-you page. And still, nothing.
I have set up tracking for booking sites, two-domain SaaS funnels, and stores that outsource their entire checkout. The same thing breaks every single time. It is not your campaign. It is a click identifier that cannot cross a domain line.
So let me walk through Google Ads conversion tracking when the conversion happens on a different domain. Why it fails, which fix matches your exact setup, and how to confirm it actually worked.
Why Google Ads Stops Tracking Conversions on a Different Domain
The conversion goes missing because cookies do not travel between domains. The GCLID that Google Ads stamps on the click gets stored in a first-party cookie on the landing domain. A second domain cannot read that cookie. So it has no idea the visit came from a paid ad.
Here is the chain. Someone clicks your ad. Google Ads appends a gclid to the URL through auto-tagging. Your landing page reads that gclid and saves it in a _gcl_aw cookie scoped to yourstore.com. Good so far.
Then the handoff happens. The visitor moves to checkout-app.io. That domain runs its own cookie space. It cannot see yourstore.com’s cookies. The gclid is gone. When the conversion fires on the new domain, your tag has no click to attribute it to.
So the conversion either vanishes or lands in the wrong bucket. In GA4 you often see it as a fresh session from “direct,” which is the same root cause behind a lot of unassigned traffic in GA4.
One honest point: this is not a Google bug. It is how the web’s same-origin model is supposed to work, for privacy reasons. The fix is not to break that model. It is to forward the gclid across the border on purpose.

First, Figure Out Who Owns the Conversion Domain
Before you pick a fix, answer one question. Do you control the domain where the conversion fires? Your whole solution depends on the answer, and people waste days because they skip this step.
There are three setups, and they are not interchangeable.
| Your setup | Who owns the conversion domain | The fix |
|---|---|---|
| Marketing site plus a separate checkout or app on a different root domain | You own both | Cross-domain measurement (forward the gclid) |
| Subdomain like shop.yourbrand.com | You own both, same root | Usually automatic, no setup |
| Third-party checkout, booking engine, or payment platform | You do not control it | Native integration, offline import, or Enhanced Conversions |
Get this wrong and every later step is wasted effort. I have watched a team spend a week trying to configure cross-domain measurement on a payment processor they had no access to. It was never going to work. They needed the offline-import path instead.
The limitation here is honesty about access. If you cannot add code to the conversion domain, half the clean fixes are off the table before you start. That is fine. It just changes which path you take.

Fix 1: Cross-Domain Conversion Tracking When You Own Both Domains
When you control both domains, the answer is cross-domain measurement. It forwards the gclid in the link itself, so the second domain receives the click identifier instead of losing it. Google does this with a linker parameter.
The linker appends a _gl value to outbound links between your domains. That parameter carries the client ID and the gclid in the URL, where cookies cannot reach. The destination domain reads _gl, restores the identifiers, and treats the visit as one continuous session.
Here is the setup, in order.
- Install the Google tag on both domains. The conversion domain needs your Google tag or GA4 tag firing on every page, including the conversion page. No tag there means no observed conversion tracking at all.
- List both domains in your config. In GA4, go to Admin, then Data Streams, then Configure tag settings, then Configure your domains. Add yourstore.com and checkout-app.io. This tells the tag to add the linker to links between them.
- Add the Conversion Linker. If you use Google Tag Manager, the Conversion Linker tag reads the gclid from the URL and stores it in first-party cookies on the new domain. Set it to fire on all pages.
- Keep auto-tagging on. The whole chain starts with the gclid. Turning auto-tagging off to “clean” URLs kills it. Bad trade, every time.
A correctly linked handoff URL looks like this:
https://checkout-app.io/pay?_gl=1*1a2b3c*_ga*Y0xJRA..&gclaw=Cj0KCQ..
That _gl chunk is the bridge. When you see it appear on the destination domain, the gclid made the jump.
The trade-off worth naming: cross-domain measurement only works on links the Google tag can rewrite. If your handoff goes through a server-side redirect or a form POST that strips query parameters, the linker never gets attached. For those cases, you move to server-side tracking or pass the gclid through manually. Google’s own cross-domain measurement setup guide covers the redirect edge cases in detail.

Fix 2: Tracking Conversions on a Third-Party Domain You Don’t Control
When the conversion lands on a domain you cannot touch, cross-domain measurement is out. You cannot install a tag or list the domain in your config. So you switch strategies entirely. You stop trying to observe the conversion live and start importing it after the fact.
You have four real options. Pick by how much access you have.
- Use the platform’s native Google Ads integration. Many booking engines, course platforms, and checkout tools (Shopify, Calendly, Stripe-based platforms) have a built-in Google Ads or GA4 connector. Switch it on and they pass the conversion for you. Always check this first.
- Capture the gclid, then use offline conversion import. Read the gclid on your domain before the handoff, store it with the lead, and upload the conversion to Google Ads when it closes. This is offline conversion import, and it is the workhorse fix for third-party flows. The default gclid upload window is 90 days, so import before that closes.
- Use Enhanced Conversions. If you collect a hashed email or phone at conversion, Enhanced Conversions matches it back to the ad click without needing the gclid to survive the domain jump.
- Move to server-side tracking. A server container can receive the conversion from the third party’s webhook and forward it to Google Ads with first-party data intact.
The offline-import path is the one I reach for most. It is reliable, it survives privacy changes, and it does not need cooperation from the third party. The catch is honesty about latency. Offline conversions show up in Google Ads hours later, not in real time. Smart Bidding still uses them, but you stop expecting instant numbers.
To make the import work, you have to capture and carry the gclid cleanly from the first click. Consistent tagging on the way in makes that far easier, and the same logic that governs gclid and UTM together applies here.
Subdomains Are Not the Same Problem
A subdomain on the same root domain usually tracks fine with no extra setup. So if your conversion happens on shop.yourbrand.com while your ad points to www.yourbrand.com, relax. You probably do not have a cross-domain problem at all.
Cookies set on yourbrand.com are readable across every subdomain of yourbrand.com. The gclid cookie carries from www to shop automatically. The session stays whole. The conversion attributes correctly.
The confusion is common because “different subdomain” feels like “different domain.” It is not, for cookie purposes. The browser scopes first-party cookies by registrable domain, and all your subdomains share it.
One exception to watch. If your two properties sit on genuinely different root domains that just look related, like yourbrand.com and yourbrand-checkout.com, that is cross-domain, not subdomain. Treat it as Fix 1. When in doubt, check the registrable domain, not the words.
How to Verify Cross-Domain Conversion Tracking Actually Works
Do not trust the setup until you have walked the path yourself. The fastest check costs you one ad click and two minutes. Test it live before you trust the reports.
Run this check:
- Click your own live ad. Let the landing page load and confirm the gclid sits in the address bar.
- Complete the full path to the conversion page. Add to cart, start checkout, cross the domain handoff.
- Read the address bar on the second domain. You should see the
_gllinker parameter. If it is there, the gclid made the jump. If it is missing, the linker is not firing on your outbound link. - Watch GA4 DebugView or Realtime. Confirm the same session continues across both domains instead of splitting into two. A split session means the handoff failed.
For third-party flows where you cannot see the _gl parameter, verify differently. Place a test order, then confirm the gclid landed in your CRM or database and that the offline import or native integration recorded the conversion within a day.
The limitation is timing. Cross-domain measurement shows up fast in DebugView. Offline import does not. So match your verification method to your fix, or you will panic over a “missing” conversion that is simply still in the import queue.

Cross-Domain Is Not Cross-Device
These two get mixed up constantly, and the mix-up sends people down the wrong fix. Cross-domain tracking and cross-device tracking solve different problems.
Cross-domain is about one person, one device, two websites. The gclid needs to survive a jump from domain A to domain B in the same session. The linker parameter handles it.
Cross-device is about one person across a phone and a laptop. They click the ad on mobile and convert on desktop later. No URL parameter can bridge that, because there is no shared link between the two devices. That gap needs User-ID or Google signals, not a linker.
So if your conversion happens on another domain in the same browsing session, you need cross-domain measurement. If your buyer switches devices, that is a separate project. Do not apply the linker fix to a device problem and wonder why it does nothing.
Frequently Asked Questions
Why does Google Ads not track conversions on a different domain?
Because cookies are domain-scoped. The gclid that identifies the paid click is stored in a first-party cookie on the landing domain, and a second domain cannot read it. When the conversion fires on the new domain, your tag has no click to attribute. The fix is to forward the gclid across the domain border with cross-domain measurement or an offline import.
How do I track a conversion that happens on a third-party domain?
If you cannot install your tag on the conversion domain, use the platform’s native Google Ads integration, capture the gclid and upload it through offline conversion import, or use Enhanced Conversions with hashed customer data. Offline import is the most reliable because it does not depend on the third party forwarding anything live.
Do subdomains need cross-domain tracking?
No. Subdomains on the same root domain, like shop.yourbrand.com and www.yourbrand.com, share first-party cookies automatically. The gclid carries between them with no extra setup. You only need cross-domain measurement when the two properties sit on genuinely different root domains.
Is cross-domain tracking the same as cross-device tracking?
No. Cross-domain tracking forwards a click across two websites in the same browsing session using a linker parameter. Cross-device tracking connects the same person across a phone and a laptop, which needs User-ID or Google signals instead. They solve different problems and use different methods.
Does auto-tagging carry the gclid to another domain?
No. Auto-tagging appends the gclid to the ad’s landing URL, but it does not forward that gclid to a second domain. You still need cross-domain measurement, which adds the _gl linker parameter to outbound links between your domains, or an offline import path for domains you do not control.
How do I verify cross-domain conversion tracking is working?
Click your own live ad, complete the full path to the conversion page, and check the address bar on the second domain for the _gl linker parameter. Then confirm in GA4 DebugView that the session stays continuous across both hostnames instead of splitting into two separate sessions.
Get the gclid Across the Border, Then Report It Cleanly
Cross-domain conversion tracking is not a campaign problem. It is a handoff problem. The gclid has to survive the jump from your ad’s landing domain to wherever the conversion actually fires.
Own both domains? Forward the gclid with cross-domain measurement. Conversion on a third-party platform? Capture the gclid early and import the conversion offline. Same root subdomain? You are probably already fine. Then walk the path yourself and confirm the _gl parameter appears before you trust a single report.
To capture clean, consistent gclid and campaign data from the first click, build your paid links with the free Google Ads UTM builder at linkutm.