Sign in
← Attribution docs
Documentation

Recommended UTM parameters

MTK Attribution works without any UTMs — click IDs and referrers classify most traffic on their own. But the templates below fill in what those signals can't: which campaign, which keyword, which creative, which placement. Set them once at the account level and every captured field lights up.

The values the engine keys on

Channel classification reacts to exact utm_medium values (case-insensitive):

  • cpc or paid_searchPaid Search
  • paid_socialPaid Social
  • emailEmail
  • referral (with a utm_source) → Referral
  • anything else with a utm_source Campaign

utm_source becomes the source value — normalized to canonical platform names by default (googleads Google Ads, ig Instagram; see the alias table), or byte-for-byte with the per-license verbatim toggle. Beyond the six standard params (source, medium, campaign, term, content, placement), the tag also freezes these URL params into every touch by default: matchtype, network, device, campaignid, adgroupid — mappable in your field map as e.g. first.adgroupid / last.adgroupid.

Google Ads

Set as the tracking template at account level (Admin → Account settings → Tracking) so it applies everywhere:

{lpurl}?utm_source=google&utm_medium=cpc&utm_campaign={campaignid}&utm_term={keyword}&utm_content={creative}&utm_placement={network}&adgroupid={adgroupid}&matchtype={matchtype}&device={device}
  • {campaignid} passes the numeric ID — Google has no campaign-name ValueTrack macro. Match IDs to names in your reporting, or maintain per-campaign static names instead.
  • Don't use {adposition} — Google deprecated it and it now returns an empty value.
  • {network} returns g (Google Search), s (search partners), or d (Display).
  • The gclid is appended by autotagging automatically — even with no template at all, Google clicks classify as Paid Search.

Meta (Facebook & Instagram)

Paste into the ad's URL parameters field (Ads Manager → ad level → Tracking). No {lpurl} — Meta appends these to your link:

utm_source={{site_source_name}}&utm_medium=paid_social&utm_campaign={{campaign.name}}&utm_term={{adset.name}}&utm_content={{ad.name}}&utm_placement={{placement}}
  • utm_medium=paid_social is what classifies the visit as Paid Social. Don't use cpc here — that value means Paid Search.
  • {{site_source_name}} resolves to fb, ig, msg, or an — which app drove the click. In the default normalized mode the source field reads Facebook / Instagram / Messenger / Audience Network, matching what organic traffic from those platforms reports. (Verbatim mode passes fb/ig through as-is.)
  • Meta's dynamic parameters use double curly braces and resolve to names, not IDs. Google-style {keyword} macros do not work on Meta — they pass through as literal text.
  • Name-based values freeze when the ad is published; renaming a campaign later doesn't update them.

Microsoft Ads (Bing)

Account-level tracking template. Microsoft's {Campaign} macro passes the campaign name:

{lpurl}?utm_source=bing&utm_medium=cpc&utm_campaign={Campaign}&utm_term={keyword}&utm_content={AdId}

Even without a template, autotagging's msclkid alone classifies the visit as Paid Search / Bing.

LinkedIn, TikTok & email

LinkedInhas no dynamic URL macros — set static UTMs per campaign on each ad's destination URL:

utm_source=linkedin&utm_medium=paid_social&utm_campaign=YOUR_CAMPAIGN_NAME

TikTok clicks carry a ttclidthat classifies them as Paid Social / TikTok automatically; add static UTMs (or TikTok's __CAMPAIGN_NAME__-style macros) for campaign detail:

utm_source=tiktok&utm_medium=paid_social&utm_campaign=__CAMPAIGN_NAME__

Email links should carry utm_medium=email plus a utm_source (e.g. newsletter) and utm_campaign per send.

Full classification logic — every exact value, in evaluation order — lives in the developer docs.