Skip to content
SourceLoop
How attribution works

9 Click ID and their Ad Platforms [With Example]

Plain-English reference for every paid click ID SourceLoop reads, gclid, gbraid, wbraid, msclkid, fbclid, li_fat_id, ttclid, epik, rdt_cid.

On this page
  1. The full table
  2. How SourceLoop reads them
  3. Why both UTM and click ID
  4. Where click IDs power offline conversions
  5. How to verify click IDs are landing
  6. What’s next

A click ID is an opaque token that an ad platform appends to your landing URL when someone clicks one of your ads. Different platforms use different names, all of them serve the same purpose: a high-confidence proof that “this visit came from this ad.”

For attribution accuracy, click IDs do three things UTMs alone can’t:

  1. Survive privacy stripping. Some iOS browsers and ad blockers remove the Referer header but leave query strings intact. The click ID hangs on.
  2. Encode platform-specific data the ad network can decode. Pushing an offline conversion back to Google Ads with the original gclid lets Google match the conversion to the exact campaign, ad group, keyword, audience, and creative the click came from, depth no UTM can carry.
  3. Are set automatically. Auto-tagging is on by default in most ad accounts, so click IDs land on every paid click without per-campaign URL-tagging discipline.

This article lists every click ID SourceLoop reads, what platform sets it, and what channel it implies.

The full table

Click IDPlatformChannelNotes
gclidGoogle AdsPaid SearchThe classic Google Ads click ID. Set on every paid Google Search and Display click when auto-tagging is on.
gbraidGoogle Ads (iOS)Paid SearchiOS app campaigns when the user has restricted Apple’s App Tracking Transparency (ATT). Functionally equivalent to gclid for SourceLoop’s purposes.
wbraidGoogle Ads (iOS web)Paid SearchiOS web clicks under ATT restrictions. Functionally equivalent to gclid.
msclkidMicrosoft Ads (Bing)Paid SearchThe Microsoft equivalent of gclid. Set on every Microsoft Ads click when Final URL Auto-tagging is on.
fbclidMeta (Facebook + Instagram)Paid SocialSet on every click from inside Meta’s ecosystem, paid ads, organic posts, profile-bio links, Messenger shares. The presence of fbclid doesn’t strictly mean paid; it means the click originated from Meta.
li_fat_idLinkedInPaid SocialLinkedIn’s First-Party Ads Tracking UUID. Set by the LinkedIn Insight Tag on the first paid-ad landing for a visitor; persists across sessions.
ttclidTikTokPaid SocialTikTok Ads click identifier.
epikPinterestPaid SocialPinterest Promoted Pin click identifier.
rdt_cidRedditPaid SocialReddit Ads click identifier.

How SourceLoop reads them

The tracker reads every click ID present on the landing URL and stores them on the visitor’s session and (on conversion) on the lead. From there:

  • For channel classification, the click ID is the highest-confidence signal. A gclid on the URL means Paid Search even if the referrer is missing and no UTMs are set.
  • For offline conversion sync, when you push a lead back to Google Ads / Microsoft Ads / Meta / LinkedIn, SourceLoop sends the stored click ID alongside the conversion so the platform can match it to the original click record.
  • For lead detail and CSV export, all stored click IDs appear as columns on the lead row.

Why both UTM and click ID

UTMs and click IDs are complementary, not redundant. Each survives where the other fails:

ScenarioUTM survives?Click ID survives?
iOS Safari with strict tracking prevention (referrer stripped)✅ Yes✅ Yes
URL shortener that strips query strings❌ No❌ No
Redirect chain that drops your custom params but keeps platform-set ones❌ Often no✅ Yes
Bookmarked URL revisited later (no original click)❌ No❌ No
Email forwarded with link intact✅ Yes✅ Yes
Ad platform auto-tagging is disabled✅ Yes (if you set manual UTMs)❌ No
You forgot to add UTMs to a paid campaign❌ No✅ Yes (auto-tagging)

The best practice is to run both: keep auto-tagging on in every ad account AND add manual UTMs (utm_source, utm_medium, utm_campaign) to every paid link.

Where click IDs power offline conversions

When you connect Google Ads, Microsoft Ads, Meta, or LinkedIn to SourceLoop and turn on offline-conversion sync, the lead’s stored click ID is what makes the round trip possible. The flow:

  1. Visitor clicks a Google Ad. gclid=ABC... lands on the URL. SourceLoop stores it.
  2. Visitor fills out a form. SourceLoop creates a lead with the gclid attached.
  3. Sales qualifies the lead in your CRM.
  4. SourceLoop’s sync to Google Ads fires an offline conversion event with the gclid and the lead value.
  5. Google Ads receives the event, looks up the gclid to find the original click, and credits the conversion (with full revenue) to the right campaign, ad group, and keyword.

Without the click ID, the offline conversion still uploads (matched by hashed email instead), but Google’s match rate drops from ~99% to roughly 60-80%, and you lose campaign-level granularity.

See the per-platform guides:

How to verify click IDs are landing

The fastest way to check that auto-tagging is on and SourceLoop is picking up the click IDs:

  1. Click one of your own live ads (preferably from an incognito window so the click isn’t deduped against your existing session).
  2. After landing, look at the URL bar. You should see the click ID as a query parameter.
  3. Open ?sl_debug=1 on the landing page and check the browser console; SourceLoop logs every captured click ID under the [sourceloop/v3] prefix.
  4. Convert (submit a form or book a meeting) on the same session.
  5. Open the lead in the SourceLoop Contacts Hub. The click ID is listed in the lead detail drawer under the technical/attribution panel.

If you can see the click ID on the URL but not on the lead, the most common cause is the tracker not loading on the landing page; double-check the tracking pixel install.

What’s next

Frequently asked questions

  1. Do I need click IDs if I'm already using UTM parameters?

    Both, ideally. Click IDs are auto-appended by the ad platform's auto-tagging and survive when the visitor lands on a page that ignores or strips your UTMs (a redirect chain, a cached old page, an embed without query-string passthrough). UTMs are explicit, controlled by you, and survive when the click ID is stripped (some iOS browsers, some ad blockers). Running both is belt-and-suspenders and produces the cleanest attribution.

  2. How do I check if my ad platform is auto-tagging click IDs?

    Google Ads, Account Settings -> Auto-tagging -> ensure "Tag the URL that people click through from my ad" is on. Microsoft Ads, Accounts & Billing -> Auto-tagging -> Final URL Auto-tagging. Meta, Account Settings -> Advanced -> URL parameters -> ensure fbclid is appended (it usually is by default). Click a live ad in private/incognito and inspect the URL you land on; if it has the click ID in the query string, auto-tagging is on.

  3. What does it mean if a lead has a gclid but no UTMs?

    It means Google Ads auto-tagging is on and you haven't added manual UTMs to your campaigns. SourceLoop can still attribute the lead to Paid Search via the gclid, but you lose the granular campaign / ad-group / keyword detail that UTMs would carry. For full attribution depth, set up manual UTMs (utm_source=google, utm_medium=cpc, utm_campaign={campaign_name}) in addition to auto-tagging.

  4. What's the difference between gclid, gbraid, and wbraid?

    All three are Google Ads click IDs. gclid is the classic identifier, set on most desktop and Android web clicks. gbraid replaces gclid for iOS app campaigns when the user has opted out of ATT. wbraid replaces gclid for iOS web clicks where ATT consent is restricted. Functionally for SourceLoop attribution, any of the three signals "Paid Search" with high confidence. For pushing offline conversions back to Google Ads, the same field accepts all three, see the Google Ads offline conversion guide.

  5. Why does fbclid show on direct-typed URLs sometimes?

    Because Meta's tracking embeds fbclid in any link the user clicked from inside Facebook or Instagram, including organic posts, profile bios, and shared messages in Messenger, not only paid ads. SourceLoop treats a URL with fbclid + no utm_medium as Paid Social by default, which usually matches intent (the click came from inside Meta's ecosystem), but you can override this with a custom channel rule if you specifically want organic Facebook clicks bucketed as Organic Social.

  6. Are click IDs personally identifiable information (PII)?

    No. A click ID is an opaque identifier the ad platform generated, it doesn't contain the user's name, email, location, or any directly identifying field. It can be linked back to a click record on the ad platform's side, which is how offline-conversion uploads work, but on its own it's not PII under GDPR / CCPA.

  7. How long does a click ID stay valid?

    Click IDs are valid for the lifetime of the ad platform's attribution window, typically 30 days for Google Ads, 7 days for Meta (default click-attribution window). SourceLoop stores the click ID on the lead indefinitely, but pushing it back to the ad platform for offline-conversion attribution only works within the window. After it expires, the click ID still exists on the lead but the ad platform won't accept it for new offline-conversion uploads.

Track every conversion to its true source

Capture and send full attribution data from every signup, lead, booking, and sale to your CRM and ad platforms, so you know exactly what's driving revenue.

Without SourceLoop

Untagged

Kayden Floyd

kayden@abc.com

  • SourceUnknown
  • MediumUnknown
  • CampaignUnknown
  • Landing pageUnknown
Journey
No touchpoints captured

With SourceLoop

Auto-tagged

Kayden Floyd

kayden@abc.com · Acme Co.

  • Channel Paid Social
  • CampaignFree_demo
  • Landing page/pricing
Journey
Synced to HubSpot Google Ads Meta