How should UTM parameters be structured?
Three parameters do the real work, and each answers one question. utm_source answers where — the platform sending the click: google, facebook, newsletter, chatgpt. utm_medium answers how — the channel type: cpc for paid search, paid_social, email, organic_social, referral, offline. utm_campaign answers why — the initiative, and this is where a pattern pays off: [goal]-[theme]-[geo] gives you campaign names like leads-migration-us that sort, filter, and explain themselves a year later.
The optional two: utm_term carries the paid keyword or audience, and utm_content distinguishes creatives — the parameter that turns “the ad worked” into “the quote-hook variant worked.”
The rules that keep attribution clean
- Lowercase, always. Analytics tools are case-sensitive; mixed case splits one source into three rows.
- Dashes, not spaces. Spaces become
%20and make reports unreadable. - One convention, written down. The tags only work if everyone uses the same ones — our UTM naming convention template is the one-page doc to share (part of the free template library).
- Never on internal links. UTMs on your own navigation overwrite the visitor's true origin — they belong only on links pointing at your site from elsewhere.
- Let Google Ads auto-tagging live. The GCLID does conversion plumbing UTMs can't; run both — UTMs for your reporting, GCLID for Google's.
- Check the CRM, not just analytics. UTMs earn their keep when they land on the contact record and follow the deal — that's attribution that survives to revenue.
Which utm_medium should I use?
Stick to the standard set so your analytics groups channels correctly: cpc (paid search), paid_social, display, email, organic_social, referral (partner and affiliate links), offline (QR codes, print), and — newer but worth standardizing early — paid_ai for ChatGPT ads. Invented mediums like fb-stuff end up in “Unassigned,” where attribution goes to die.