A practical guide to UTM parameters (without the mess)
UTM parameters are the little tags bolted onto URLs — ?utm_source=newsletter&utm_medium=email&utm_campaign=april — that tell your analytics where a visitor came from. They're simple, universally supported, and almost always implemented inconsistently enough to be useless. Here's how to keep them honest.
The five tags, and what they're actually for
utm_source— the specific place the link lived: newsletter, instagram, partner-site.utm_medium— the channel category: email, social, referral, qr.utm_campaign— the initiative: spring-launch, q3-promo.utm_content— optional, for distinguishing variants: button-top vs link-footer.utm_term— optional, historically for paid search keywords; most teams can skip it.
The convention that saves you
Analytics tools treat Email, email, and E-mail as three different channels. The fix is a tiny ruleset, written down where everyone can see it:
- Lowercase everything. No exceptions.
- Hyphens, never spaces. Spaces become
%20and split your reports. - Fixed vocabulary for source and medium. Maintain a short list of allowed values; new ones get added to the list before they get used.
- Campaign names carry a date or quarter (2026-q2-launch), so reports sort themselves.
Where short links come in
A fully tagged URL is a monster — often 120+ characters of query string that wraps badly in email, looks spammy in posts, and invites manual retyping (which breaks the tags). The tidy pattern: build the tagged URL once, wrap it in a short link, and share the short link. The destination carries the full UTM set into your analytics; the thing humans see stays clean. As a bonus, the short link's own click count gives you a second, independent measurement to sanity-check your analytics against.
One warning
UTMs measure your own campaigns. Don't tag links you place on other people's sites pointing at pages you don't own, and strip UTMs before citing a URL in anything permanent — future readers don't need your campaign bookkeeping in their address bar.