• Attribution
  • Google Ads
  • GA4
  • Tracking

GCLID and Click IDs: Why Attribution Breaks

By Olam Sule · Published 6 Sept 2026

TL;DR

A GCLID (Google Click Identifier) is the tag Google Ads adds to a click's landing URL so GA4 and Google Ads can link that click to what the visitor does next. When a redirect, a cross-domain hop or missing auto-tagging strips it, the paid click lands in GA4 as direct or organic and loses its conversion credit. Rejoining that broken link is work we do for clients most weeks.

Olamide Sule, founder of Dolphin Analytics: a digital analytics expert based in London delivering solutions for agency and in-house clients.

When a client tells us their paid campaigns look worse in GA4 than in Google Ads, a lost click ID is usually the reason. We audit this most weeks: paid clicks arriving with no GCLID attached, so GA4 files them as direct or organic and the ad that paid for them gets no credit. Here is how click IDs work, where they break, and how we put the join back.

What is a GCLID?

A GCLID (Google Click Identifier) is a unique string Google Ads appends to the landing-page URL every time someone clicks an ad, for example ?gclid=Cj0KCQiA.... It travels with the visitor into GA4 and back into Google Ads, so both tools can match the session, and any later conversion, to the exact click, campaign and keyword that produced it.

Google Ads creates the GCLID automatically through a setting called auto-tagging, which is on by default for new accounts. You do not build the parameter yourself and you should not try to: it is an encoded token only Google can read, not a label you can pretty up. The whole system depends on that one string surviving the trip from ad click to landing page to conversion.

Why do lost click IDs break campaign attribution?

Attribution breaks because GA4 and Google Ads identify a paid click by its click ID, not by the ad itself. When the GCLID never reaches the page, or gets stripped before GA4 reads it, the session has no paid source attached. GA4 then falls back to the referrer or to nothing, so a click you paid for is recorded as direct or organic and its conversion credit disappears.

That single failure explains a surprising amount of messy reporting. Paid spend looks wasted because the conversions it drove are filed under other channels. Direct traffic looks unusually high because untagged paid clicks pile into it. Google Ads and GA4 stop agreeing on conversion counts, because Google Ads still counts the click from its own side while GA4 has lost the thread. Smart Bidding then optimises against numbers that no longer describe reality, so the damage compounds every day the join stays broken.

GCLID vs measurement ID vs UTM parameters: what is what?

These get confused constantly, partly because people say “Google Ads ID” for at least two different things. Here is what each identifier actually does.

IdentifierWhat it isWho sets itWhat it does
GCLIDGoogle’s click ID for a paid Google Ads clickGoogle Ads, automaticallyTies one ad click to its later conversion
Customer IDYour Google Ads account number (123-456-7890)Google, at account creationNames the account, nothing to do with a single click
Measurement IDYour GA4 data stream ID (G-XXXXXXXXXX)GA4, per web streamPoints your tag at the right property, not a click
UTM parametersManual link tags (utm_source, utm_medium, utm_campaign)You, by hand or a builderLabels traffic from any source; utm_medium is the campaign medium
fbclid / msclkidMeta and Microsoft click IDsThose platforms, automaticallySame job as GCLID, for their own ad clicks
wbraid / gbraidGoogle’s privacy-safe click IDs for iOS trafficGoogle Ads, automaticallyAggregated click matching after Apple’s ATT changes

The practical split: a GCLID is read by the machine, a UTM is read by you. Use UTM parameters to label email, social, affiliate and any non-Google paid traffic in your reports. Leave the GCLID to Google, and never overwrite a Google Ads final URL with your own utm_source, or you can knock the GCLID out and cause the exact loss this post is about. The measurement ID and the customer ID are naming labels for a property and an account; neither carries click-level data.

Where do click IDs get lost?

The click ID has to survive a chain of hops, and each hop is a place we find it dropped:

  • Auto-tagging switched off. If nobody ticked the setting, Google Ads never adds a GCLID in the first place, so every paid click arrives unmarked.
  • Redirects that drop the query string. Link shorteners, agency redirect services and CMS redirect rules often forward the path but discard everything after the ?, taking the GCLID with it.
  • Cross-domain moves without GA4 configuration. A visitor who crosses from your marketing site to a separate checkout or booking domain starts a fresh session unless cross-domain measurement is set up, and the paid source is lost at the boundary.
  • Consent and cookie blocking. If a cookie banner or ad blocker stops the GCLID being stored before GA4 reads it, the click looks unpaid.
  • Long B2B sales cycles. The GCLID cookie eventually expires. When a deal closes months after the click, the browser no longer holds the ID, so the revenue never traces back to the campaign that started it.
  • The CRM handoff. Even when the GCLID reaches the site, it is usually never captured into the CRM, so an offline sale can never be matched back to the click that earned it.

How do you stop losing click IDs?

Work the chain in order. Each step is a concrete setting or check, not a goal:

  1. Turn auto-tagging on. In Google Ads, open Admin, then Account settings, then Auto-tagging, and tick “Tag the URL that people click through from my ad”. This is the switch that generates the GCLID at all.
  2. Confirm the GCLID reaches the page. Click a live ad, or use the ad preview tool, and read the landing URL. It should carry a ?gclid= parameter with a long string after it. If it is missing, a redirect is stripping it.
  3. Preserve the query string through every redirect. Test each forwarding rule, shortener and CMS redirect between the ad and the final page. Change any rule that drops the part of the URL after the ? so it passes parameters through untouched.
  4. Set up cross-domain measurement in GA4. Open Admin, then Data streams, select your web stream, then Configure tag settings, then Configure your domains, and add every domain in the journey (marketing site, checkout, booking system). This keeps one session, and its paid source, across the whole path.
  5. Capture the GCLID into your CRM and import offline conversions. Store the GCLID in a hidden form field so it saves against the lead. Then in Google Ads, open Goals, then Conversions, then create a new conversion action and choose Import, then “Track conversions from clicks (GCLID)”, so closed deals feed back to the campaigns that drove them. On iOS traffic Google may send a gbraid (app-to-web journeys) or a wbraid (web-to-web journeys) in place of a GCLID, so capture and import all three or you lose those conversions.
  6. Check Consent Mode is not blocking the read. Confirm your consent setup allows the GCLID to be stored once a visitor accepts, and that Consent Mode is not silently dropping the signal for every EU and UK session.

How we rejoin the click to the conversion

When we audit a paid account, a broken click-ID chain is one of the faults we find most, and it is rarely one setting. Auto-tagging, redirects, cross-domain and the CRM handoff all have to hold, and a single weak link sends the whole campaign’s conversions into direct or organic. We fix them in that order, then reconcile Google Ads against GA4 to prove the join is back.

For one private aviation client we mapped the enquiry-to-deal flow across three web domains and HubSpot, so a click could be followed from the ad to the closed deal instead of vanishing at the first domain hop. If your paid numbers do not reconcile between Google Ads and GA4, or paid clicks keep showing up as unpaid conversions, start with the tell us what’s broken, or book a call.

Frequently asked

What is a GCLID?

A GCLID (Google Click Identifier) is a unique string Google Ads appends to the landing-page URL every time someone clicks an ad, for example ?gclid=Cj0KCQ. It travels with the visitor into GA4 and back into Google Ads, so both tools can match the session, and any later conversion, to the exact click, campaign and keyword that produced it. Google Ads generates it automatically through a setting called auto-tagging.

Why do my Google Ads clicks show as direct or organic in GA4?

Because GA4 and Google Ads identify a paid click by its click ID, not by the ad itself. When the GCLID never reaches the page, or gets stripped before GA4 reads it, the session has no paid source attached. GA4 then falls back to the referrer or to nothing, so a click you paid for is recorded as direct or organic and its conversion credit disappears.

What is the difference between a GCLID and a UTM parameter?

A GCLID is Google's automatic click ID for paid Google Ads clicks: it encodes the campaign, ad and keyword in one string and Google reads it back. UTM parameters (utm_source, utm_medium, utm_campaign) are manual tags you add to any link yourself, and utm_medium is what GA4 calls the campaign medium. GCLID powers Google Ads conversion matching; UTMs label traffic from every other source in your reports.

How do I check if my GCLID is working?

Click one of your live ads, or use the ad preview, and look at the URL that loads. If auto-tagging is working, the landing URL carries a ?gclid= parameter followed by a long string. If the GCLID is missing, or a redirect drops it before the page finishes loading, the click will land in GA4 with no paid source, which is the fault we trace most often.

What are wbraid and gbraid?

They are Google's privacy-safe click IDs, introduced for iOS traffic after Apple's App Tracking Transparency changes. gbraid is used for app-to-web and web journeys where a user has not been identified across surfaces; wbraid covers web-to-web journeys in the same conditions. They do the same job as the GCLID (tie a click to a conversion) but aggregate the data so no single user is exposed, and your conversion import needs to accept all three.

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.