UTM parameters: small detail, huge attribution leverage
UTM (Urchin Tracking Module) parameters are the query strings appended to URLs that tell analytics platforms where traffic came from. Done right, they're the only consistent attribution signal across Meta, Google, GA4, and your back-end CRM. Done wrong, they create reporting chaos that's nearly impossible to unwind.
The 5 UTM parameters (and what they mean)
- utm_source — the platform.
facebook, google, linkedin, tiktok. Lowercase, no caps.
- utm_medium — the medium type.
paid, email, organic, referral, cpc, social.
- utm_campaign — the campaign name. Lowercase, hyphenated. Examples:
q1-launch, national-dtc, black-friday-2026.
- utm_content — the specific ad/creative. Example:
founder-ugc-15s-v1.
- utm_term — the ad set or keyword. Example:
3a-hs-national.
The five rules of clean UTMs
- Lowercase everything. GA4 treats
Facebook and facebook as separate sources.
- Use dashes, never spaces or underscores.
black-friday not black_friday not Black Friday.
- Pick a naming convention and write it down. Document every value used. Build a Notion doc. Stick to it.
- Don't UTM internal links. Adding UTMs to links inside your own site overwrites attribution data — visitor came from Facebook, then clicked a UTM'd internal link, now GA thinks they came from "email."
- Never put PII in UTMs. Email addresses or user IDs in
utm_content end up in server logs, referrer headers, and break GDPR.
UTM red flags in your analytics
Open GA4 → Reports → Acquisition → Traffic acquisition. If you see:
- Multiple variants of "facebook" (Facebook, facebook, FACEBOOK, fb) — fix capitalization
- "(not set)" in source/medium — UTMs were stripped somewhere (often Calendly or shortener)
- 50+ unique campaign names for a 5-campaign agency — naming wasn't standardized
- "email" as both source AND medium on different URLs — pick one
Calendly + UTM passthrough
Calendly preserves UTM parameters from the landing page in its booking confirmation if you've enabled "Routing" with custom questions. Set up custom questions named utm_source, utm_campaign, utm_content and Calendly will auto-populate them from URL params. This is the only way to attribute paid leads to specific ads end-to-end.
Need help auditing your UTM setup? We do this on every audit. Book free audit →