Why UTMs matter (and what problem they solve)
UTM tags are small pieces of text you add to a URL so analytics tools can reliably identify where a visit came from and which marketing effort caused it. Without UTMs, traffic often falls into buckets like direct, referral, or unknown because the platform, app, or redirect stripped the details. A repeatable UTM system reduces misattribution by making campaign traffic consistently recognizable across channels, creatives, and partners.
A UTM-tagged URL looks like this:
https://example.com/pricing?utm_source=facebook&utm_medium=paid_social&utm_campaign=2026q1_launch&utm_content=video_aEverything after the ? is a query string. Each utm_ parameter is a label that your analytics tool reads and stores with the session.
Define the UTM parameters (what each one means)
| Parameter | What it answers | When to use | Example values |
|---|---|---|---|
utm_source | Who sent the traffic? | Always | facebook, instagram, tiktok, mailchimp, partner_jane_doe |
utm_medium | What type of channel is it? | Always | paid_social, email, influencer, qr, affiliate |
utm_campaign | Which initiative or campaign? | Always | 2026q1_launch, evergreen_trial, spring_sale |
utm_content | Which creative/version? | When you need to distinguish ads, links, placements | video_a, carousel_2, header_cta, story_swipeup |
utm_term | Which keyword or targeting term? | Mainly for paid search; optionally for audience/targeting labels | brand, nonbrand_analytics, lookalike_1pct |
Practical guidance on optional fields
- Use
utm_contentfor creative-level differences (image vs. video, CTA button, placement, link position in email). - Use
utm_termfor keyword-level or targeting-level differences. If you don’t have a clear use case, leave it blank rather than inventing inconsistent values.
Naming rules: make UTMs consistent and reportable
Your goal is not just to tag links—it’s to tag them in a way that produces clean, filterable reports. The most common UTM failures are inconsistency (e.g., Facebook vs facebook) and ambiguity (e.g., social meaning five different things).
Rule 1: Use lowercase everywhere
Analytics tools often treat Facebook and facebook as different values. Standardize on lowercase:
Continue in our app.
You can listen to the audiobook with the screen off, receive a free certificate for this course, and also have access to 5,000 other free online courses.
Or continue reading below...Download the app
- Good:
utm_source=instagram - Avoid:
utm_source=Instagram
Rule 2: No spaces; use a delimiter
Spaces become %20 in URLs and create messy values. Choose one delimiter and stick to it:
- Recommended: underscore
_(easy to read) - Alternative: hyphen
-(also common)
Examples:
- Good:
utm_campaign=2026q1_launch - Avoid:
utm_campaign=2026 Q1 Launch
Rule 3: Controlled vocabulary (pre-approved values)
Create a short list of allowed values for utm_medium and common utm_source values. This prevents “medium sprawl” like paid-social, paidsocial, social_paid, and paid social all meaning the same thing.
Example controlled vocabulary:
| Field | Allowed values (example set) |
|---|---|
utm_medium | paid_social, organic_social, email, influencer, affiliate, qr, display, paid_search |
utm_source | facebook, instagram, tiktok, youtube, linkedin, mailchimp, klaviyo, partner_[name] |
Rule 4: Campaign naming format (make it sortable)
Pick a campaign format that supports filtering by time and initiative. One practical pattern:
utm_campaign={yyyy}{q#}_{initiative}_{objective}Examples:
2026q1_launch_trials2026q2_webinar_reg2026q1_evergreen_demo
Rule 5: Encode meaning in utm_content (creative + placement)
Make utm_content useful for comparisons. A simple pattern:
utm_content={format}_{hook}_{placement}_v{#}Example: video_problem_story_v1 or image_testimonial_feed_v2
Rule 6: Don’t put personally identifiable info in UTMs
Avoid names, emails, phone numbers, or anything that identifies a person. UTMs can be stored in logs and shared widely.
Step-by-step: build a UTM the same way every time
- Start with the final landing page URL (after redirects, with the correct path). Example:
https://example.com/pricing - Choose
utm_sourcefrom your approved list (the platform/partner). Example:facebook - Choose
utm_mediumfrom your controlled vocabulary (the channel type). Example:paid_social - Set
utm_campaignusing your naming format. Example:2026q1_launch_trials - Add
utm_contentif you need creative/link differentiation. Example:video_problem_feed_v1 - Add
utm_termonly if you have a defined use (keyword/targeting). Example:lookalike_1pct - Assemble and test the full URL in a browser (ensure it loads, preserves UTMs through redirects, and lands on the correct page).
Examples by channel (copy-ready patterns)
1) Paid social ads (multiple creatives and placements)
Scenario: You’re running two Facebook ads to the same landing page: one video in feed and one image in stories.
Video (feed):
https://example.com/pricing?utm_source=facebook&utm_medium=paid_social&utm_campaign=2026q1_launch_trials&utm_content=video_problem_feed_v1Image (stories):
https://example.com/pricing?utm_source=facebook&utm_medium=paid_social&utm_campaign=2026q1_launch_trials&utm_content=image_testimonial_story_v1Optional targeting label (only if you will use it):
https://example.com/pricing?utm_source=facebook&utm_medium=paid_social&utm_campaign=2026q1_launch_trials&utm_content=video_problem_feed_v1&utm_term=lookalike_1pct2) Influencer links (partner-specific tracking)
Scenario: Two influencers promote the same offer. You want to attribute traffic and conversions to each influencer without creating messy sources.
Recommended approach:
utm_medium=influencerutm_source=partner_{handle}(controlled pattern)
Example for influencer @janedoe:
https://example.com/offer?utm_source=partner_janedoe&utm_medium=influencer&utm_campaign=2026q1_creator_push&utm_content=ig_reel_v1Example for influencer @alexfit:
https://example.com/offer?utm_source=partner_alexfit&utm_medium=influencer&utm_campaign=2026q1_creator_push&utm_content=tiktok_post_v1Tip: If influencers need a short link, generate a short URL that redirects to the full UTM URL (and QA that UTMs survive the redirect).
3) Newsletters (link position and CTA testing)
Scenario: Your weekly newsletter links to a blog post in two places: a hero button and a text link near the bottom.
Hero button:
https://example.com/blog/utm-guide?utm_source=klaviyo&utm_medium=email&utm_campaign=2026w03_newsletter&utm_content=hero_buttonFooter text link:
https://example.com/blog/utm-guide?utm_source=klaviyo&utm_medium=email&utm_campaign=2026w03_newsletter&utm_content=footer_textNewsletter naming tip: If you send weekly, a sortable pattern like 2026w03_newsletter is easier to filter than jan_15_newsletter.
4) QR codes (offline-to-online tracking)
Scenario: You place a QR code on a conference booth banner and another on printed flyers. Both go to the same landing page, but you need to distinguish placements.
Booth banner QR:
https://example.com/demo?utm_source=conference_techsummit&utm_medium=qr&utm_campaign=2026q1_events&utm_content=booth_bannerFlyer QR:
https://example.com/demo?utm_source=conference_techsummit&utm_medium=qr&utm_campaign=2026q1_events&utm_content=flyer_handoutQR best practice: Use a short redirect link for the QR code (for scan reliability), but ensure the redirect preserves UTMs and lands on HTTPS.
Governance workflow: keep UTMs clean at scale
A UTM system works only if it’s governed. The goal is to prevent duplicate naming, missing parameters, and broken links—especially when multiple people and agencies create campaigns.
1) Who creates UTMs (roles and responsibilities)
- Marketing ops / analytics owner: owns the taxonomy (allowed values), approves new sources/mediums, maintains the UTM generator template, and audits usage.
- Channel owners (paid social, email, partnerships): request UTMs and/or generate them using the approved template; responsible for correct campaign and content naming.
- Creative/agency partners: must use provided UTMs; they should not invent new naming conventions.
- Web/engineering (as needed): supports redirect rules, ensures UTMs are not stripped, and helps debug tracking issues.
2) Where UTMs are stored (single source of truth)
Use a shared, searchable log (spreadsheet, database, or project tool) that includes:
- Final landing page URL
- Full tagged URL
utm_source,utm_medium,utm_campaign,utm_content,utm_term- Owner (person responsible)
- Channel/platform
- Start/end dates
- Status (draft, QA, live, paused)
Example table structure:
| Campaign | Channel | Landing page | Tagged URL | Owner | Status |
|---|---|---|---|---|---|
2026q1_launch_trials | paid_social | /pricing | ...utm_source=facebook&utm_medium=paid_social... | sam | qa |
3) QA checklist: validate before anything goes live
- Completeness:
utm_source,utm_medium, andutm_campaignpresent on every link. - Spelling and casing: lowercase, no spaces, matches controlled vocabulary.
- Click test: link loads correctly on desktop and mobile.
- Redirect test: if the link redirects, confirm the final URL still contains UTMs (or that UTMs are captured before redirect, depending on your setup).
- App handoff risk: for links used inside apps (social apps, messaging), test that the in-app browser doesn’t strip parameters.
- Duplicate meaning: ensure
utm_contentvalues are unique enough to compare (avoidad1,ad2unless you also store a mapping).
4) Handling redirects (so UTMs don’t disappear)
Redirects are a common cause of “unknown” traffic because parameters can be dropped if redirects are misconfigured or if a shortener rewrites URLs incorrectly.
- Prefer 301/302 redirects that preserve the full query string. If you control the redirect, ensure it forwards everything after
?. - Be careful with “clean URL” rules. Some systems remove query parameters for aesthetics; that breaks UTMs.
- Short links: if you use a shortener, the short URL should redirect to the full UTM URL (not the untagged landing page).
- Cross-domain flows: if a click goes from a marketing site to an app domain or checkout domain, test that UTMs are retained or captured and passed appropriately.
Practical redirect QA test: paste the tagged URL into your browser, press enter, and observe the final URL in the address bar. If UTMs vanish, fix the redirect before launch.
Hands-on exercise: build UTMs for three campaigns and verify reporting
Exercise setup
Use your organization’s controlled vocabulary. If you don’t have one yet, use these defaults for the exercise:
utm_mediumallowed values:paid_social,email,influencer,qr- Delimiter: underscore
_ - Campaign format:
{yyyy}q{#}_{initiative}_{objective}
Task A: Paid social campaign UTMs
Scenario: Instagram paid campaign promoting a free trial, two creatives (reel and story) to https://example.com/trial.
- Create one UTM for the reel and one for the story.
- Use
utm_source=instagramandutm_medium=paid_social. - Use a single
utm_campaignfor both links.
Fill in:
reel: https://example.com/trial?utm_source=_____&utm_medium=_____&utm_campaign=_____&utm_content=_____
story: https://example.com/trial?utm_source=_____&utm_medium=_____&utm_campaign=_____&utm_content=_____Task B: Influencer campaign UTMs
Scenario: Partner “TaylorRuns” posts a YouTube description link to https://example.com/offer.
- Use
utm_medium=influencer. - Use the pattern
utm_source=partner_taylorruns. - Use
utm_contentto capture placement (e.g.,youtube_description).
Fill in:
https://example.com/offer?utm_source=_____&utm_medium=_____&utm_campaign=_____&utm_content=_____Task C: Newsletter + QR code UTMs
Scenario: You’re promoting a webinar registration page https://example.com/webinar via (1) an email newsletter and (2) a QR code on a printed postcard.
- Create one email UTM link with
utm_sourceset to your email service (e.g.,mailchimporklaviyo) andutm_medium=email. - Create one QR UTM link with
utm_source=postcard(or a more specific source likepostcard_jan) andutm_medium=qr. - Use the same
utm_campaignfor both if they are part of the same initiative.
Fill in:
email: https://example.com/webinar?utm_source=_____&utm_medium=email&utm_campaign=_____&utm_content=_____
qr: https://example.com/webinar?utm_source=_____&utm_medium=qr&utm_campaign=_____&utm_content=_____Verification: confirm how UTMs appear in reporting
- Click each link yourself (or use a test device) and ensure the landing page loads.
- Check the final URL after any redirects to confirm UTMs remain present.
- Open your analytics reporting and locate the dimensions for
source,medium, andcampaign(andcontentif available). - Confirm the values match exactly what you set (case, underscores, spelling). If you see unexpected variants, fix the naming and re-test.
- Validate differentiation: ensure the two paid social creatives show up as separate
utm_contentvalues under the same campaign.