• GA4
  • Cross-Domain Tracking
  • Google Tag Manager
  • Attribution

Google Linker and Cross-Domain Tracking in GA4

By Olam Sule · Published 1 Sept 2026

TL;DR

The Google linker is GA4's cross-domain feature: it passes a visitor's client ID between your domains in a `_gl` URL parameter, so one person crossing from your main site to a separate checkout domain counts as one session, not two. Miss it and you get self-referrals, doubled users and broken attribution. Set it up in GA4 Admin, under your web stream's list of domains. We set up and fixes cross-domain tracking for clients most weeks.

Olamide Sule, founder of Dolphin Analytics: a digital analytics expert based in London who sets up and fixes GA4 and GTM tracking for agency and in-house clients most weeks.

Someone searches “Google linker” for one of two reasons. Either their GA4 numbers look wrong across two websites they own, or a Google Ads guide told them to add a “linker” and they want to know what it does. This post covers both, because the confusion between them is itself a common reason the numbers never add up. We repair cross-domain setups for clients most weeks, so this is the explanation we give before we touch anything.

What is the Google linker in GA4?

The Google linker is the cross-domain tracking feature in GA4. When a visitor moves from one domain you own to another, GA4 appends a _gl parameter to the destination link that carries the visitor’s client ID (the anonymous identifier GA4 stores in a first-party cookie). The second domain reads that ID and continues the same session, so one person is counted once, not twice.

Without it, each domain issues its own client ID. GA4 then sees two separate users on two separate sessions for what was really one journey, and the referring domain shows up as a traffic source to itself. Google’s cross-domain measurement guide documents the behaviour and the _gl mechanism in full.

Which “Google linker” do you actually mean?

Three different tools get called the Google linker, and mixing them up sends people to the wrong fix. Here is what each one is for.

ToolWhere it livesWhat it does
GA4 cross-domain linkerGA4 Admin, web stream settingsPasses the GA4 client ID between your own domains via _gl, so users and sessions stay joined
Conversion Linker tagGoogle Tag ManagerReads Google Ads click IDs (gclid, and similar) and stores them in first-party cookies, so Ads conversion attribution survives
Google Tag Linker extensionChrome browser extensionA debugging tool that decorates links with _gl on demand, so you can test cross-domain flow by hand

The first is your GA4 reporting. The second is your Google Ads attribution. The third is only for testing. If your problem is “the same person shows up twice in GA4”, you want the first one. If your problem is “Google Ads is not recording conversions on my checkout domain”, you want the Conversion Linker, covered in our guide to Google Ads conversion tracking setup.

What breaks when the cross-domain linker is missing?

A missing linker does not throw an error. It quietly corrupts the data, which is why it can run broken for months. Four symptoms give it away.

  • Self-referrals. Your own domain appears in the traffic-source reports. A visit that started on your homepage gets logged as a referral from your homepage once the user reaches the checkout domain.
  • Inflated users and sessions. One journey across two domains becomes two users and two or more sessions, so acquisition numbers read high and engagement per user reads low.
  • Broken attribution. The original source (a Google Ads click, an email campaign, an organic search) gets overwritten at the domain boundary. The conversion is then credited to the referral (your first domain), not the campaign that earned it.
  • Session restarts. GA4 starts a new session when the client ID changes mid-journey, so funnels that span both domains show a cliff at the handoff point that never happened in reality.

If your traffic looks fine on each domain alone but the totals never reconcile, this is the first thing to rule out. It sits behind the same “numbers do not match” complaint we see with GA4 and Shopify sales figures, where the checkout runs on a separate domain.

How do you set up cross-domain tracking in GA4?

GA4 handles cross-domain tracking through a domain list, not code you paste on the page. The setup takes five steps.

  1. Confirm the same GA4 tag runs on every domain. Each domain must load the same Measurement ID (the G-XXXXXXX value). If the checkout domain uses a different property or no tag at all, the linker has nothing to link.
  2. Open the domain configuration. In GA4, go to Admin, then Data Streams, select your web stream, open Configure tag settings, then Configure your domains.
  3. Add every domain in the journey. List each separate domain a visitor crosses (for example example.com and example-pay.com). Use the match type that fits, and keep the list to domains you actually own.
  4. Exclude those domains from referrals if needed. Configuring the domains handles most self-referral cases automatically. Where a self-referral persists, add the domain under “List unwanted referrals” in the same tag settings.
  5. Publish and test. Load a cross-domain link and confirm the _gl parameter appears on the destination URL, then check GA4 DebugView or Realtime to confirm the session carries across as one user.

Google’s Tag Platform cross-domain guide covers the equivalent steps when you deploy GA4 through Google Tag Manager rather than the direct tag.

Why subdomains do not need the linker

This is the most common wasted fix. Subdomains on one root domain, like shop.example.com and www.example.com, already share the GA4 first-party cookie, because GA4 writes it at the registrable root by default. The client ID is the same on both, so there is nothing to pass. You only need the linker for separate registrable domains, where each site sets its own cookie that the other cannot read.

Adding subdomains to the domain list is harmless, but it does not fix a real problem, and it often masks the actual cause: a tag missing on one subdomain, or a consent banner blocking GA4 before it loads. Check those before you touch the domain list.

Where the Conversion Linker fits with Google Ads

The Conversion Linker is a separate tag in Google Tag Manager, and it solves a different problem from GA4 reporting. It reads Google Ads click identifiers from the landing-page URL and writes them into first-party cookies, so a conversion recorded later, or on another domain, still attributes back to the ad click. Google’s Conversion Linker documentation explains the tag and its default all-pages trigger.

You often need both linkers running at once. The GA4 linker keeps your analytics user count honest. The Conversion Linker keeps Google Ads attribution intact across the checkout hop. Fixing one does not fix the other, which is why teams who add the Conversion Linker sometimes find their GA4 self-referrals are still there.

What about UTM variables across domains?

UTM variables (the utm_source, utm_medium and utm_campaign tags on a campaign URL) label where a visit came from. They are not the same as the linker, and they do not carry identity across your domains. The linker preserves who the visitor is; UTMs preserve what campaign brought them in.

They interact at the domain boundary. If a Google Ads or email link lands on your main site with UTMs, and the visitor then crosses to a separate checkout domain without the linker, GA4 starts a new session and the original campaign attribution can be lost. Set up the linker first, then confirm the campaign source holds all the way to the conversion, rather than only to the first page.

Why your numbers still do not match after adding the linker

Adding the domain list is not always the end of it. If the gap persists, work through the usual culprits.

  • A redirect strips the _gl parameter. Some redirects and URL rewrites drop query parameters, so the linker value never reaches the destination page. Test the real redirect path, not the clean link.
  • Different Measurement IDs. Two domains on two different GA4 properties will never join, whatever the domain list says. Confirm the same G- ID on both.
  • Consent blocking GA4 first. If a cookie banner holds GA4 until the visitor consents, and they cross domains before that, the linker never ran. This is the same failure mode behind cookie consent breaking GA4 data.
  • The domain added on only one side. Both domains need the same tag configuration. A linker set on the source but not honoured on the destination leaves the join half-built.

To see what is firing on each domain from the outside, without touching the account, run each one through Sonar, our free external scanner. It reports the tags, pixels and consent setup it can prove from a single scan, which is a fast way to confirm the same GA4 tag is present on both domains before you go digging inside the property.

Getting the join right in a real setup

Cross-domain problems get harder when the journey spans more than two sites. We mapped the full enquiry-to-deal dataflow across three web domains and a CRM for a private aviation client, tracing where identity and campaign source held and where they dropped. The pattern is always the same: the tag has to be consistent everywhere, the domains all have to sit in the list, and the _gl value has to survive every redirect in between.

If your GA4 numbers do not reconcile across domains and you are not sure whether it is the linker, a redirect, consent, or the tag itself, start with the tell us what’s broken, or book a call. When you already know you need someone inside the account to trace it end to end, our tracking work is the paid route, scoped to the property. That same attribution work once traced a $767,500 charter enquiry back to a single organic search visit; joins that hold are worth getting right.

Frequently asked

What is the Google linker?

The Google linker is the cross-domain tracking mechanism in GA4. When a visitor clicks a link from one of your domains to another domain you own, GA4 adds a `_gl` parameter to the destination URL that carries the visitor's client ID. The receiving domain reads that ID and treats the visit as the same user and session, rather than starting fresh. People also use "Google linker" for two other things: the Conversion Linker tag in Google Tag Manager, and the Google Tag Linker browser extension for debugging. They are not the same tool.

Do subdomains need cross-domain tracking?

No. Subdomains on the same root domain (shop.example.com and www.example.com) already share the GA4 first-party cookie, because GA4 sets it at the root domain by default. The linker is only for separate registrable domains, such as example.com and example-checkout.com. Adding subdomains to the domain list does no harm, but it fixes nothing and often hides the real cause of a numbers gap.

What is the difference between the GA4 linker and the Conversion Linker?

They solve different problems. The GA4 linker preserves the GA4 client ID across your own domains, so analytics counts one user instead of two. The Conversion Linker tag in Google Tag Manager reads Google Ads click IDs (like gclid) from the landing URL and stores them in first-party cookies, so Google Ads conversion tracking survives across pages and domains. You often need both: one for GA4 reporting, one for Ads attribution.

Why do my GA4 numbers still not match after adding the linker?

The usual causes are a redirect that strips the `_gl` parameter before the destination page loads, a different Measurement ID on each domain, a consent banner that blocks GA4 before the linker runs, or the domain added on only one side. Check that the same GA4 tag fires on every domain, that redirects preserve query parameters, and that the `_gl` value actually lands on the destination URL in DebugView.

Talk to us

Where does your data stop making sense?

Tell us what's broken, or grab a time. Either way you hear from a person, not a sales script.

Send a message

We reply within one working day.

Add a few details (optional) The more we know up front, the faster we can tell you what's wrong and how to fix it.

Protected by an invisible spam check. Prefer email? olam@dolphinanalytics.co.uk

Calendly · 30 min

Book a call

Thirty minutes on Google Meet with the founder.

The booking lands on the same record as your message.