Back
Channel Guides/Channel UTM Tracking
Omni Channel Guide

UTM Tracking The Omni Standard

UTMs are the connective tissue between ad spend and revenue. Without a consistent standard, every dashboard lies — Meta claims the lead, Google claims the lead, and the client stops trusting the numbers. This is the single source of truth for how Wundertre tags every clickable link in every campaign.

Core Philosophy
A UTM you can't trust is worse than no UTM at all. Consistency beats cleverness — the same source, the same medium, the same casing, on every link, in every campaign, on every channel.
Channel Role

Why UTMs belong in the Omni system

UTMs are what let LeadSprout, GA4, and CRM reporting tell the same story. When a lead comes in, four answers must be immediate: which channel, which campaign, which ad set or ad group, which creative. Without them, you cannot optimize — you're guessing. Three Omni tenets depend on this discipline.

Tenet 01
Omni-Insight
UTMs turn ad clicks into structured data. Every source, medium, campaign, and creative is a dimension you can slice, compare, and learn from. Without them, the funnel is a black box.
Tenet 05
Omni-Tracking
UTMs plus platform click IDs (gclid, fbclid, msclkid, ttclid, li_fat_id, rdt_cid) are how LeadSprout attributes revenue back to the exact ad. This is the loop that feeds smart bidding and proves ROI.
Tenet 02
Omni-Presence
When every channel is tagged the same way, you can finally see which channel is doing what work — awareness, retargeting, capture — and rebalance spend with confidence instead of hunches.

The Standard

Most businesses vs. The Omni Way

Most Businesses
  • xMix "Meta", "meta", "facebook-ads", and "fb" in the same account
  • xHardcode campaign names into the UTM instead of using macros
  • xSkip utm_content — no idea which ad drove the lead
  • xTag internal navigation links and overwrite the original source
  • xRoute clicks through redirects that strip parameters
  • xTurn off auto-tagging in Google Ads and lose gclid
The Omni Way
  • /Canonical platform names — facebook, google, tiktok, linkedin, bing, reddit
  • /Dynamic macros so every ad self-tags from its object name
  • /utm_content on every creative for ad-level attribution
  • /Zero UTMs on internal links — attribution stays intact
  • /Every click ID passed through so LeadSprout can dedupe and match
  • /Auto-tagging ON everywhere it exists (gclid, fbclid, msclkid, li_fat_id)

The Anatomy

The five UTM parameters

Every tagged URL uses the same five keys. What changes is how you fill them in — always via the platform's dynamic macro, never hardcoded per ad.

utm_source
The platform sending the click
Use the platform's canonical name — facebook, google, tiktok, linkedin, bing, reddit, youtube. GA4's default channel groupings key off these exact strings. Never use the client's brand name here.
utm_medium
The type of traffic
Underscores, not hyphens — paid_social, cpc, video, display, email, sms. This matches the OS defaults and GA4's channel-grouping rules; a hyphen breaks the classification.
utm_campaign
The campaign name / offer
Always a platform macro — {campaignname} (Google), {{campaign.name}} (Meta), __CAMPAIGN_NAME__ (TikTok). The macro resolves to the campaign object's name, so the name is the tag. Enforce the naming convention on the campaign, not the URL.
utm_content
The ad set, ad group, or creative
Usually the ad-set or ad-group macro — {adgroupname}, {{adset.name}}, {creative.name}. This is what lets you tell which hook, image, or video actually drove the lead.
utm_term
Keyword, ad name, or audience
Paid search: {keyword} or {QueryString}. Paid social: the ad-name macro ({{ad.name}}) or audience name. The most granular dimension in the tag.

OS Defaults

Wundertre OS tracking templates

These are the exact strings the Wundertre OS applies by default. Paste them into the field named in each card — do not modify the macros or parameter order. Names in { } and {{ }} are platform-side macros that resolve at click time from your campaign, ad set, and ad names.

Google Ads
Final URL suffix gclid auto-tagged
Where: Settings → Account Settings → Auto-tagging (on), then Campaign Settings → Additional Settings → Final URL suffix. Google auto-appends gclid; this suffix layers keyword, ad, and campaign detail on top.
utm_source=google&utm_medium=cpc&utm_campaign={campaignname}&utm_content={adgroupname}&utm_term={keyword}&device={device}&matchtype={matchtype}&network={network}&campaignid={campaignid}&adgroupid={adgroupid}&creative={creative}
Meta Ads (Facebook & Instagram)
URL Parameters fbclid auto-tagged
Where: Ads Manager → Ad level → Tracking section → URL Parameters. Meta auto-appends fbclid; the UTMs below pull campaign / ad set / ad names.
utm_source=facebook&utm_medium=paid_social&utm_campaign={{campaign.name}}&utm_content={{adset.name}}&utm_term={{ad.name}}
TikTok Ads
Tracking URL ttclid auto-tagged
Where: TikTok Ads Manager → Ad level → Tracking URL field. Append as URL parameters on the destination URL. Include ttclid for click-ID passback.
utm_source=tiktok&utm_medium=paid_social&utm_campaign=__CAMPAIGN_NAME__&utm_content=__AID_NAME__&ttclid=__CLICKID__
LinkedIn Ads
Destination URL suffix li_fat_id auto-tagged
Where: LinkedIn Campaign Manager → Campaign → Tracking → Destination URL. Append these parameters. LinkedIn auto-appends li_fat_id.
utm_source=linkedin&utm_medium=paid_social&utm_campaign={campaignName}&utm_content={creative.name}
Microsoft (Bing) Ads
Final URL suffix msclkid auto-tagged
Where: Microsoft Advertising → Campaign Settings → Final URL suffix. Microsoft auto-appends msclkid; suffix layers keyword, match type, and campaign detail.
utm_source=bing&utm_medium=cpc&utm_campaign={Campaign}&utm_content={AdGroup}&utm_term={QueryString}&device={device}&matchtype={MatchType}&campaignid={CampaignId}&adgroupid={AdGroupId}
Reddit Ads
Destination URL parameters rdt_cid manual macro
Where: Reddit Ads → Ad level → Destination URL, appended manually to the landing page URL. Reddit may not support every click-ID macro in every campaign type — verify per campaign.
utm_source=reddit&utm_medium=paid_social&utm_campaign={campaign_name}&utm_content={adgroup_name}&rdt_cid={rdt_cid}

Cheat Sheet

Per-channel values at a glance

When you're wiring a new channel or auditing an existing one, this is the reference for what should be in utm_source, utm_medium, and which click ID to expect.

Channelutm_sourceutm_mediumClick ID
Meta (Facebook / Instagram)facebookpaid_socialfbclid · auto
Google Searchgooglecpcgclid · auto
Google Performance Max / Displaygooglepmax or displaygclid · auto
YouTube Adsyoutubevideogclid · auto
TikTok Adstiktokpaid_socialttclid · macro
LinkedIn Adslinkedinpaid_socialli_fat_id · auto
Microsoft (Bing) Adsbingcpcmsclkid · auto
Reddit Adsredditpaid_socialrdt_cid · macro
Programmatic / DV360dv360 or stackadaptdisplay or videoplatform-specific
CTV / Streamingctvvideon/a
Email (broadcast)emailemailn/a
SMSsmssmsn/a
QR / print / billboard / mailerqrprint, ooh, or direct-mailn/a

Launch QA

Non-negotiables before you go live

Every campaign clears this checklist before spend starts. A missing UTM found post-launch means backfilled attribution gaps you'll never fully recover.

  • Tracking template pasted into the correct field (Final URL suffix / URL Parameters / Tracking URL / Destination URL).
  • Campaign, ad set, and ad names follow the Wundertre naming convention — those names become the UTM values through the macros.
  • Auto-tagging is ON everywhere it exists — gclid, fbclid, msclkid, li_fat_id.
  • Test click on the ad preview — GA4 Realtime and LeadSprout show the correct source within 60 seconds.
  • No UTM tags on internal links (site nav, footer, buttons on landing pages).
  • Redirects (bit.ly, vanity domains) pass parameters through — verify with a live test click.
  • utm_medium uses underscores (paid_social), not hyphens.
  • utm_source uses the platform's canonical name (facebook, not meta; bing, not microsoft).

Pitfalls

Common mistakes — and what they cost you

1
Using meta instead of facebook
GA4's default channel grouping stops classifying the traffic as Paid Social. Sessions drop into Unassigned and vanish from every standard report.
2
Hyphen in utm_medium (paid-social)
Doesn't match GA4's channel rules or the OS default template. Traffic splits into two mediums; cross-channel reports stop reconciling.
3
Mixed case (Facebook vs facebook)
UTMs are case-sensitive. One channel becomes two rows in every dashboard; totals no longer match spend.
4
Hardcoding names instead of using macros
Every ad in the campaign reports the same utm_content. Ad-level attribution is destroyed — you'll never know which creative won.
5
UTM tags on internal navigation
Overwrites the original source when a user clicks an internal link. Every downstream lead looks like a self-referral, obliterating channel credit.
6
Redirects that strip parameters
Traffic lands as direct / none. The channel gets zero credit, ROAS looks broken, and smart bidding starves for signal.
7
Google Ads auto-tagging turned OFF
Conversions stop importing back into Google Ads. Smart Bidding degrades within days; CPA drifts up while nothing looks wrong on the surface.
8
Missing ttclid or rdt_cid
No server-side conversion passback. CAPI / Events API can't dedupe, iOS traffic goes dark, and the platform can't optimize toward booked jobs.

Quick Reference

The Omni UTM standard, one screen

Casing & Format
  • Lowercase everywhere
  • utm_medium uses underscores
  • Hyphens inside values, never spaces
  • Canonical platform names only
Macros Over Hardcoding
  • utm_campaign = campaign macro
  • utm_content = ad-set / ad-group macro
  • utm_term = keyword or ad macro
  • Naming convention lives on the object
Click IDs & QA
  • Auto-tagging ON — gclid, fbclid, msclkid, li_fat_id
  • Manual macros — ttclid, rdt_cid
  • Test click before launch
  • Never UTM an internal link
Wundertre