Paid Traffic Detection
AttributionHub automatically detects paid traffic by looking for advertising signals in the URL. When a paid signal is found, the visit is routed to the corresponding paid channel group instead of its organic equivalent.
What Counts as a Paid Signal
A visit is marked as paid when any of the following are present:
Click IDs
Ad platforms append unique click identifiers to destination URLs. AttributionHub recognises these automatically:
| Click ID | Platform |
|---|---|
gclid | Google Ads |
gbraid, wbraid | Google Ads (privacy-safe) |
msclkid | Microsoft Ads (Bing) |
fbclid | Meta (Facebook/Instagram) |
ttclid | TikTok Ads |
li_fat_id | LinkedIn Ads |
twclid | X Ads |
snapclid | Snapchat Ads |
Medium Keywords
If utm_medium matches one of these values, the visit is classified as paid:
cpc, cpm, cpv, cpa, ppc, retargeting, sem, boosted, influencer, display, banner, native
Any utm_medium that starts with paid also qualifies (e.g., paid-social, paid_search, paid-video).
Google Ads Signal
The gad_source URL parameter (set by Google Ads auto-tagging) is treated as a paid signal even when no click ID is present.
How Paid Signals Affect Classification
When a paid signal is detected, channel classification shifts to the paid variant. The script still uses the source (UTM or referrer) to determine which paid channel applies:
| Source Type | Without Paid Signal | With Paid Signal |
|---|---|---|
| Search engine | Organic Search | Paid Search |
| Social network | Organic Social | Paid Social |
| Video platform | Organic Video | Paid Video |
| Shopping platform | Organic Shopping | Paid Shopping |
| Display/banner | — | Display |
| Other / unknown | Referral | Paid Other |
Click ID Inference
When a click ID is present but no UTM parameters are set, AttributionHub infers the source from the click ID. The source value uses the lowercase platform identifier. For example:
?gclid=abc123(no UTMs) -> source =google, channel =Paid Search?fbclid=xyz789(no UTMs) -> source =facebook, channel =Paid Social?msclkid=def456(no UTMs) -> source =bing, channel =Paid Search
When UTM parameters are present, the source is resolved from the source database and displayed in title case (e.g., utm_source=google -> Google).
This means paid traffic from major platforms is classified correctly even without UTM tagging.
Priority Between UTMs and Click IDs
When both UTM parameters and click IDs are present, UTM parameters take precedence for source and medium values. The click ID still contributes the paid signal, but the explicit UTM values determine how the visit is classified.
For example, ?utm_source=google&utm_medium=cpc&gclid=abc uses google as the source and cpc as the medium. The gclid confirms it is paid but does not override the UTM values.
Examples
| URL / Scenario | Channel | Source | Medium |
|---|---|---|---|
?utm_source=google&utm_medium=cpc&utm_campaign=summer_sale | Paid Search | cpc | |
?gclid=abc123 (no UTMs) | Paid Search | paid | |
?utm_source=facebook&utm_medium=paid-social | Paid Social | paid-social | |
?fbclid=xyz789 (no UTMs) | Paid Social | paid | |
?utm_source=tiktok&utm_medium=cpc | Paid Social | TikTok | cpc |
?utm_source=google&utm_medium=display&utm_campaign=retargeting | Display | display | |
?utm_source=partner_site&utm_medium=cpm | Display | Partner Site | cpm |
?li_fat_id=abc (no UTMs) | Paid Social | paid | |
?gad_source=1 (no click ID, no UTMs) | Paid Search | paid |
Best Practices for Paid Campaigns
- Always add UTMs to your ad URLs. Click IDs provide a safety net, but explicit UTMs give you control over source, medium, and campaign naming.
- Use consistent medium values. Stick to
cpcfor search ads andpaid-socialorcpcfor social ads. Avoid custom medium values that might not be recognised as paid signals. - Include
utm_campaign. This is the main way to differentiate between campaigns in your attribution data. - Don’t disable auto-tagging. Platforms like Google Ads append click IDs automatically. These serve as a fallback when UTMs are missing or misconfigured.