Skip to content
Code samples below use example values.

Click IDs and attribution explained

If you've ever compared a lead count in Meta Ads Manager to the same week in Google Ads and gotten two different numbers — neither of which matches what your CRM says came in — this is why. It's not a bug in either dashboard. It's how click-based attribution works, and understanding it will save you from chasing numbers that were never going to match.

What a click ID is

When someone clicks your ad, the platform appends a unique token to the landing page URL before sending the visitor there. Google's is gclid, Meta's is fbclid, Reddit's is rdt_cid — every ad platform has its own. A URL that lands with one attached looks something like:

https://example.com/?gclid=Cj0KCQiA1abc...

That token identifies that specific click — which ad, which campaign, which person, which moment. It's the strongest attribution signal available, because it's deterministic: the platform is telling you directly "this visit came from this click," with no guessing involved. Compare that to matching on IP address and user agent, which is a probabilistic fallback used only when no click ID or hashed customer data is available — it can be wrong, and platforms treat it as a last resort.

Capturing it has to happen on landing

A click ID only exists in the URL for the first page load after the click. If nothing stores it then, it's gone — there's no way to recover it later in the visit, let alone at the moment someone actually converts, which is often a different page, a different day, or a phone call after they've closed the tab. Tracking systems solve this by capturing the ID into a cookie the instant the landing page loads, so it survives until a conversion event fires and can be uploaded back to the platform matched to that original click.

Redirects can silently break this

A redirect between the ad click and the final landing page — a link shortener, a tracking domain, a WordPress redirect plugin — can strip query parameters without anyone noticing. If gclid or fbclid never reaches the page that's supposed to capture it, that visit becomes unattributable no matter how good the rest of the setup is.

Attribution windows

Every platform only credits a conversion to an ad if it happens within a defined window after the interaction, and there are two kinds of interaction that can start that window:

  • Click-through — the visitor clicked the ad. This is the strong signal, and windows here run longer — each platform sets its own defaults, measured in days to weeks, not months.
  • View-through — the visitor merely saw the ad (it loaded on their screen) without clicking, and converted anyway sometime later. This is a much weaker, modeled signal, and windows are usually shorter.

Each platform sets its own defaults for both, and advertisers can often change them per account or per campaign. None of this is standardized across platforms — which is one of the main reasons the same real-world conversion can look completely different depending on which dashboard you're reading.

Why the numbers never match

Given all of the above, expect Meta, Google, Reddit, and your own CRM to report different totals for what is genuinely the same set of conversions:

  • Different windows. A conversion 12 days after a click counts in a platform with a 30-day window and not in one with a 7-day window.
  • Modeled vs. observed conversions. When a click ID or other deterministic signal is missing (privacy restrictions, ad blockers, a broken redirect), some platforms fill the gap with statistically modeled conversions rather than leaving them uncounted — inflating their own number relative to a source that only counts what it can actually verify.
  • Deduplication. If more than one system reports the same conversion, the platform tries to collapse duplicates using a shared event ID. Two systems that don't share an ID will double-count instead of deduplicating.
  • Last-click vs. platform-reported. Your CRM, if it does its own attribution, typically credits the last click ID it saw before a conversion. Each platform, on the other hand, reports conversions where it was involved in the path — Meta counts a conversion Meta touched, Google counts one Google touched, and a single customer's journey can touch both. Add those two numbers together and you'll double-count a real person; that's expected, not an error.

None of this means the data is untrustworthy — it means every number needs its source and its window understood before it's compared to another one.

How Adsidian helps

Prism, Adsidian's server-side tracking layer, captures click IDs the moment a visitor lands into first-party cookies so they survive to the actual conversion moment, whether that's minutes or weeks later. See the per-platform pages for what's captured where: Google Ads documents gclid capture into a 90-day cookie and Google's 90-day upload window; Meta (Facebook) CAPI covers server-side delivery with deduplication IDs; Reddit Ads covers rdt_cid as Reddit's top-priority attribution signal. General cookie lifetimes and identity handling live on Customer data & privacy.

Prism sends a deduplication ID with every event it delivers, but a separately installed legacy pixel never shares it — which is why legacy pixels have to be removed rather than deduplicated against. But no amount of correct plumbing will make Meta's and Google's own dashboards agree with each other. That's the nature of independent attribution windows, not something any single tool can fix.

FAQ

Why does my CRM show fewer leads than Meta and Google combined? Because a lead who clicked both a Meta ad and a Google ad on their way to converting gets counted once by your CRM (last click wins) but once by each platform that touched the journey. Adding platform totals together overcounts; your CRM's single number is the more honest total lead count, even though it can't tell you the platform split as precisely as either dashboard can for its own traffic.

Should I trust Google Ads' number or my CRM's number? They're answering different questions. Google's number is "conversions we can attribute to a Google click within our window, including some modeled ones." Your CRM's number is "leads that actually came in." For total lead volume, trust your CRM. For which platform to spend more on, the platform's own number — read consistently over time — is still useful for relative comparison, just not as an absolute count.

Can I make the windows match across platforms? Some platforms let you shorten or lengthen their attribution window in account or campaign settings, but you can't force Google's window to equal Meta's, and neither can be forced to match a fixed window you'd apply in a CRM. Pick one system as your source of truth for volume (usually your CRM) and use platform dashboards for relative trend, not exact reconciliation.

What breaks click-ID attribution most often? A redirect between the ad click and the landing page that strips the query string, browsers blocking or limiting third-party tracking, and — for Google specifically — auto-tagging getting turned off on the ad account, which stops gclid from being appended to URLs at all.

Adsidian Prism — first-party server-side tracking.