How to Track Marketing Campaigns with UTM Parameters
UTM parameters are the simplest way to know exactly where your traffic comes from. This guide walks you through every parameter, shows real-world examples, and gives you practical tips to build a tracking system that actually works.
Why UTM tracking matters
Without UTM parameters, Google Analytics lumps most of your traffic into "Direct" or "Referral" — two buckets so broad they're nearly useless for decision-making. You can't tell whether your email newsletter drove more conversions than your Instagram ad, or whether the LinkedIn post you spent an hour writing sent a single visitor.
UTM parameters fix this. They're short tags you append to any URL before sharing it. When someone clicks that link, Analytics reads the tags and records exactly which campaign, channel, and piece of content brought them in. The result: a clear, channel-by-channel picture of what's working.
What are UTM parameters?
UTM stands for Urchin Tracking Module — a naming convention inherited from Urchin Software, the analytics company Google acquired in 2005. The format has barely changed since then, which is a testament to how well it works.
A UTM parameter is a key=value pair added to the end of a URL after a question mark (?). Multiple parameters are joined with ampersands (&). Here's a full example:
https://example.com/landing-page?utm_source=newsletter&utm_medium=email&utm_campaign=summer-sale-2026&utm_content=hero-cta&utm_term=discountThe 5 UTM parameters explained
utm_sourceWhere the traffic comes from
The platform or publisher that sent the visitor. Think of it as the "who" — who is sending you this traffic?
Common values
Use lowercase, no spaces. Stick to the platform name — don't get creative here. Consistency matters more than cleverness.
utm_mediumThe marketing channel or type
The broad category of traffic — the "how" it arrived. This maps to the channel groupings you see in GA4's Acquisition reports.
Common values
GA4 uses medium to assign channel groups. Use "cpc" for paid search, "email" for newsletters, "social" for organic social posts. Deviating from these breaks automatic channel grouping.
utm_campaignThe specific campaign name
The name of the marketing initiative this link belongs to. This is your primary way to group traffic by campaign in reports.
Common values
Use a consistent naming convention across your team: {season}-{initiative}-{year} works well. Avoid spaces — use hyphens or underscores instead.
utm_contentWhich specific link or creative
Used to differentiate between multiple links in the same email or ad, or to label the creative variant in an A/B test. Optional but very useful.
Common values
If you have two CTAs in one email, use utm_content to tell them apart: "top-cta" vs "bottom-cta". This shows you which placement drives more clicks.
utm_termThe paid keyword (search ads)
Originally designed for paid search to capture the keyword that triggered the ad. Rarely used outside of Google/Bing Ads, where it's often auto-populated.
Common values
For paid search, let your ad platform auto-tag with {keyword} instead of setting this manually. For other channels, you can skip utm_term entirely.
Real-world examples
Weekly newsletter with two CTAs — a hero button and a text link in the body.
Hero button
https://example.com/sale?utm_source=newsletter&utm_medium=email&utm_campaign=weekly-digest-sep26&utm_content=hero-ctaBody text link
https://example.com/sale?utm_source=newsletter&utm_medium=email&utm_campaign=weekly-digest-sep26&utm_content=body-linkPaid social campaign running on both Facebook feed and Instagram Stories.
Facebook feed ad
https://example.com/offer?utm_source=facebook&utm_medium=cpc&utm_campaign=summer-sale-2026&utm_content=feed-image-adInstagram Stories ad
https://example.com/offer?utm_source=instagram&utm_medium=cpc&utm_campaign=summer-sale-2026&utm_content=stories-video-adSearch campaign — let Google auto-tag the keyword, but still track campaign and medium.
Search ad
https://example.com/landing?utm_source=google&utm_medium=cpc&utm_campaign=brand-search-q3&utm_term={keyword}Practical tips for a clean tracking setup
Always use lowercase
UTM values are case-sensitive. "Email" and "email" appear as two separate sources in GA4. Enforce lowercase across your whole team.
Use hyphens, not spaces
Spaces get encoded as "%20" in URLs, making them ugly and error-prone. Use hyphens (summer-sale) or underscores (summer_sale) — pick one and stick to it.
Build a naming convention doc
The biggest UTM problem isn't technical — it's inconsistency. One person writes "fb", another writes "facebook", a third writes "Facebook". Create a shared spreadsheet with approved values for source, medium, and campaign naming patterns.
Never use UTMs on internal links
Adding UTM parameters to links within your own site resets the session source in GA4, making it look like a new visit from that campaign. UTMs are for external links only.
Use a UTM builder tool
Building UTM URLs by hand is error-prone. Use a dedicated builder to generate consistent, properly encoded URLs every time.
Track your UTM links in a spreadsheet
Keep a master log of every UTM URL you create: the destination, campaign, date, and channel. This makes auditing and reporting much faster.
Ready to build your first UTM URL?
Use the free UTM Builder tool to generate properly formatted tracking URLs in seconds — no signup required.
Open UTM Builder