Why consistency beats coverage
Most broken campaign reports are not missing UTMs. They are inconsistent ones. Analytics tools group traffic by the exact string in each parameter, and the grouping is case-sensitive: Facebook, facebook and fb are three different sources in GA4, and your "one campaign" becomes three rows that each look smaller than they are.
That is why this builder keeps a local history and lints against it. The second time you type a near-duplicate of a value you used before, it tells you, and offers the spelling your own history already uses. Nobody rereads a naming doc mid-launch. A field that remembers your own history is the enforcement that sticks.
Tracking template or final URL suffix?
On Google Ads, dynamic ValueTrack parameters like {campaignid} resolve in both the tracking template and the final URL suffix, with one important exception: {lpurl} only works in tracking templates, because it stands in for the landing page URL itself. If you only need UTMs appended to your landing page, put them in the final URL suffix at account, campaign or ad group level and skip tracking templates entirely. Templates are for routing clicks through a third-party tracker before the landing page.
The TikTok __AID__ trap
TikTok's macros look self-explanatory and are not. __AID__ is the ad group ID, not the ad ID. __CID__ is the creative ID, not the campaign ID. Wire them into the wrong UTM slots and every report downstream is confidently wrong. The TikTok table below spells out what each macro actually resolves to, so you can copy the pairing instead of guessing it.
One more TikTok habit worth keeping: macros are wrapped in double underscores on both sides. A single underscore is not a macro, and TikTok will pass the literal text straight into your URL.
What belongs in utm_medium versus utm_source
The two get mixed up constantly because they answer similar-sounding questions. utm_source is the specific property that sent the click: a domain, an app, a partner's name. utm_medium is the category that source belongs to, the general channel type. Get the pairing backwards and the same click becomes impossible to compare against anything else in that channel, because half your paid traffic is filed under a source name and the other half under a medium name.
| utm_source | utm_medium | What it means |
|---|---|---|
| cpc | A paid Facebook ad | |
| social | An organic Facebook post | |
| newsletter | Your own recurring email send | |
| cpc | A paid Google Ads click (auto-tagging usually handles this one for you; hand-tagging it too creates a collision) | |
| partner-name | referral | A link a partner placed on their own page |
| affiliate-name | affiliate | A tracked affiliate link |
| social | A link in an Instagram bio or story |
Read the table as a rule rather than a lookup: source is always a specific place, medium is always the category that place belongs to. If the same word keeps landing in both fields, one of them is wrong.
utm_id, and when it earns its place
utm_campaign is the name a person reads on a report. utm_id is a machine key underneath it: GA4 uses it to join cost data imported from an ad platform against the sessions those ads actually produced, so spend and click-through numbers line up with the right campaign inside your own analytics. If you never import cost data, utm_id has nothing to do, and most self-serve marketers skip it entirely without losing anything. If you do import cost data, the value needs to match the campaign ID the ad platform itself uses, not a human label, or the join fails quietly and the cost data sits unmatched.
The most common self-inflicted wound: UTMs on your own internal links
UTM parameters are built to mark the outside edge of a session, the moment a visitor arrives from somewhere else. Analytics tools take that literally: land on a page carrying campaign parameters and most tools start a fresh session, crediting whatever source and medium sit in that URL, even if the visitor has already been browsing the site for twenty minutes.
The accident happens when a tagged link gets reused somewhere it shouldn't be: a promo banner on your own homepage pointing at your own pricing page with the same UTM-tagged URL you built for an ad campaign, a "share this" button that recycles the URL a visitor arrived on. The click is internal, but the parameters say otherwise, and the analytics tool believes the parameters over the visitor's actual history. The original source gets overwritten mid-session, the campaign that earned the visit loses credit, and the internal click gets credited instead. Nothing errors, so nobody notices; the numbers just quietly stop meaning what they used to.
The fix is a rule, not a tool: UTM parameters belong on links that cross from somewhere else onto your site. Any link where both ends are pages you own should stay a clean URL.
What happens to UTMs through a redirect or a shortener
A redirect only carries a query string if whatever is doing the redirecting was built to forward it. A well-built shortener or link-in-bio tool appends the visitor's incoming parameters onto its own destination URL before sending them on; a lazier one redirects to a fixed URL and drops anything that arrived with the click. There is no way to tell which behaviour you are getting from the outside without testing it: build a tagged link, run it through the redirect, and check what actually lands on the far side.
This matters most when a tagged link is going into something you do not fully control, an aggregator, a QR code service, an old shortener nobody has touched in years. If a campaign's numbers look consistently lower than expected, a parameter-eating hop somewhere in the chain is one of the first places worth checking.
Why UTMs on a link you don't own tell you nothing
Whoever owns the analytics is the only one who can read the parameters. Tag a link to somebody else's site with utm_source and utm_campaign, and those values arrive in that site's analytics account, not yours; you have no way to confirm they were even recorded, since you have no access to that system. Tagging only pays off on a URL feeding into an analytics setup you can actually open.
It is worth remembering the same limit applies in reverse, before assuming a tool can see more than it can. The click itself, direction and volume, is visible to whoever serves the link (a Raydar page shows that much for its own outbound clicks). What happens on the far side after the visitor lands, whether they converted, how long they stayed, only shows up in analytics installed on that destination, and only to whoever can log into it.
Where Raydar fits
UTMs tell you which campaign a click came from. They cannot tell you anything about the person who clicked. Raydar links carry your UTMs and add per-click detail on the other side: location, device, referrer and time for every click, in a logbook you can read. If you already tag your links, you are one step from actually seeing who is behind them.