UTMs are free, but disorganized UTMs ruin analytics. A few minutes of upfront convention saves hours of cleanup later. RevRoute auto-appends UTMs based on link settings or you can hard-code them in the destination URL — either way, the values you ship are what end up in your warehouse for years.
The five standard UTMs
| Parameter | Purpose | Example |
|---|---|---|
utm_source | Where the traffic comes from — a specific publisher, partner, or app | partner-acme, newsletter, twitter |
utm_medium | How it was delivered — the channel category | affiliate, email, social, cpc |
utm_campaign | Why — the marketing initiative | q2-launch, black-friday-2026 |
utm_term | Paid-search keyword (optional) | marketing+automation |
utm_content | Variant identifier — ad / button / placement | hero-cta, footer-banner |
Use all five when relevant. Empty UTMs are fine; missing UTMs you wish you had aren’t.
Naming conventions
A consistent scheme is more important than the perfect scheme. Pick rules and stick to them:
- Always lowercase.
Affiliateandaffiliateare different rows in a report. Force lowercase at the source. - Hyphens, not underscores or spaces.
q2-launchbeatsq2_launchandQ2 Launch(which becomesQ2%20Launch). - ASCII only. Encoded Cyrillic / emoji UTMs are technically legal but hostile to dashboards.
- No timestamps in source/medium. Put them in
utm_campaignif needed (spring-2026). - Stable, not descriptive.
utm_source=newsletter-weeklyis good;utm_source=newsletter-about-our-new-featureis not — the campaign goes inutm_campaign.
Organic vs paid
The single most useful distinction in analytics is “did I pay for this click?”. Keep it visible in utm_medium:
| Channel | utm_medium |
|---|---|
| Affiliate / partner program | affiliate |
| Influencer (one-off, paid) | influencer-paid |
| Influencer (organic mention) | influencer-organic |
| Email newsletter | email |
| Social — paid | paid-social |
| Social — organic | social |
| Paid search | cpc |
| Display | display |
| Direct mail / QR codes | offline |
That way, WHERE utm_medium IN ('cpc','paid-social','display','influencer-paid') is your paid acquisition cohort, every time.
Recommended source taxonomy
utm_source should answer “if I want to email the owner of this traffic, who do I email?”. For affiliate programs that means one source per partner:
utm_source=partner-acme
utm_source=partner-bob-blog
utm_source=partner-marketing-podcastRevRoute sets this automatically for program links — every partner link includes utm_source=<partner-slug> so you don’t have to think about it.
For your own channels:
utm_source=newsletter # the main list
utm_source=newsletter-prospects # a specific list
utm_source=twitter
utm_source=youtube
utm_source=blogCampaign naming
Campaigns benefit from a structured format:
{quarter}-{theme}-{audience?}
q2-launch
q4-black-friday
q1-2026-pricing-update-existingThe leading time period lets dashboards sort campaigns chronologically without parsing dates. Append an audience suffix when you’re running the same theme to different segments.
Where to set UTMs
Three options, in order of preference:
- On the short link (
utm_source,utm_campaignfields on the link settings). RevRoute appends them at redirect time. Best for partner program links — the partner can’t accidentally strip them. - In the destination URL. Works fine but you can’t change them without updating every place the link is shared.
- In a separate script tag (e.g. via
<DubAnalytics />’s built-in UTM tracking). Best for client-side tools that need to read UTMs before the redirect.
Avoid mixing #1 and #2 — duplicate parameters create confusion.
Migration: cleaning up legacy UTMs
If you inherited a chaotic UTM history:
Audit
Export 6 months of click data, group by utm_source and utm_medium, and review the long tail. You’ll find spelling mistakes, mixed case, and one-off values.
Decide on consolidation rules
For example “all variants of email / Email / e-mail map to email”. Write them down.
Apply at the warehouse, not on RevRoute
Map old UTMs to canonical ones in a dim_utm_source table in your warehouse. Don’t try to rewrite history in RevRoute.
Lock new links
Going forward, set UTMs at the link level (option #1 above) and document the convention in your link-creation runbook.
See also: Attribution, Link management.