How to Use UTM Parameters to Track Marketing Campaigns
Learn what UTM parameters are, how to build them for every channel, and how to read the data in GA4. A practical 2026 guide with real campaign examples.
UTM parameters are short tags you add to the end of a URL that tell analytics tools like Google Analytics 4 exactly where a click came from. The five tags are utm_source, utm_medium, utm_campaign, utm_term, and utm_content. Add them to any link you share, and your reports will show which platform, channel, and campaign drove each visit instead of dumping everything into a vague "direct" bucket.
You posted the same offer to your email list, your Instagram story, and a paid Facebook ad. A week later, traffic is up and three sales came through. Great. Now, which channel actually drove those sales? If you can't answer that, you're about to renew the wrong ad budget and quietly kill the channel that was secretly carrying the campaign.
That's the exact problem UTM parameters solve. They're the tracking tags that turn "we got some traffic" into "Instagram stories drove 340 clicks and 11 signups, the email drove 90 clicks and 6 signups, and the Facebook ad cost us $200 for two." This guide walks through all five tags, how to build a tagged URL the right way, real examples for email, paid ads, and social bios, and the naming mistakes that silently corrupt half the GA4 reports we've ever seen.
By the end you'll have a repeatable system - a naming convention, a build process, and a way to read the data - that works whether you're tracking one newsletter or a thousand affiliate links. Let's get the foundation right first.
Table of Contents
- What Are UTM Parameters?
- The 5 UTM Parameters Explained
- How to Build a UTM-Tagged URL
- Real UTM Examples by Channel
- Set a UTM Naming Convention (Before You Tag Anything)
- How to Read UTM Data in Google Analytics 4
- UTM Mistakes That Wreck Your Data
- Do UTM Parameters Hurt SEO?
- Frequently Asked Questions
What Are UTM Parameters?
UTM parameters are text snippets appended to the end of a URL that pass campaign information to analytics platforms, telling them which source, channel, and campaign sent a visitor. "UTM" stands for Urchin Tracking Module, named after Urchin Software, the analytics company Google acquired in 2005 that became the basis for Google Analytics.
Here's what one looks like in the wild:
https://u2l.ai/?utm_source=newsletter&utm_medium=email&utm_campaign=spring-sale
Everything after the ? is a UTM parameter. Each one is a key=value pair, and they're chained together with &. The page loads exactly as normal - the visitor never notices the tags - but your analytics tool reads them and files the visit under the labels you assigned.
Why does this matter? Without UTMs, most of your campaign traffic lands in GA4's "direct" or "referral" buckets, which is roughly as useful as a sales report that just says "money came in." UTMs let you answer the questions that actually decide where your time and budget go: which email subject line pulled the most clicks, whether your Instagram bio link beats your TikTok one, and whether that influencer you paid sent real humans or a suspicious wave of bot traffic from one country.
UTMs are also tool-agnostic. They're not a Google-only feature - GA4, Adobe Analytics, Matomo, Plausible, and basically every serious analytics platform reads them. Tag a link once and it works across whatever stack you (or your client) happens to use. That portability is a big part of why they've survived 20 years while half the martech industry churned.
The 5 UTM Parameters Explained
There are five UTM parameters. Three are effectively required for clean reporting (source, medium, campaign), and two are optional but powerful (term, content). Here's each one, what it answers, and how we actually use it.
utm_source
utm_source identifies where the traffic came from - the specific platform, publication, or sender. It answers "which website or service sent this click?" Common values: facebook, google, newsletter, linkedin, partner-blog. This is the one parameter you should never leave off; a click with no source is a click you can't attribute.
utm_medium
utm_medium describes the type of channel, not the specific platform. It answers "what kind of marketing is this?" Standard values: email, social, cpc (cost-per-click, for paid search), organic, affiliate, referral. The trick is keeping source and medium distinct - facebook is a source, social is a medium. Mixing them up is the single most common UTM error we see.
utm_campaign
utm_campaign groups everything tied to one marketing push. It answers "which campaign is this part of?" Values are descriptive names like spring-sale-2026, product-launch, or black-friday. Use the same campaign value across every channel in that push, so you can roll all the email, social, and paid traffic up into a single comparable report.
utm_term
utm_term records the paid search keyword that triggered an ad. It answers "which keyword brought this visitor?" Values like running-shoes or crm-software. Honestly, most people running paid search let Google auto-tagging (the gclid) handle this, so utm_term is the least-used of the five. If you're not buying keywords, you can safely skip it.
utm_content
utm_content distinguishes between multiple links pointing to the same place within one campaign. It answers "which specific creative or link got clicked?" This is the A/B testing parameter. Running two versions of an ad? Tag one utm_content=video and the other utm_content=static-image. Two CTAs in one email? header-button versus footer-link. It's optional, but it's where a lot of the real optimization insight hides.
| Parameter | Required? | Answers | Example value |
|---|---|---|---|
| utm_source | Yes | Which platform sent the click? | instagram |
| utm_medium | Yes | What channel type? | social |
| utm_campaign | Yes | Which campaign? | summer-launch |
| utm_term | Optional | Which paid keyword? | crm-software |
| utm_content | Optional | Which creative/link? | story-swipe-up |
A fully tagged URL using all five looks like this:
https://u2l.ai/pricing?utm_source=instagram&utm_medium=social&utm_campaign=summer-launch&utm_content=story-swipe-up
How to Build a UTM-Tagged URL
Building a UTM URL means starting with your destination link and appending the parameters in the correct format. You can do it by hand, but there's a right order of operations that prevents the errors that wreck reporting later.
Step 1: Start with your clean destination URL
Take the page you want people to land on - your homepage, a product page, a signup form. Strip any existing tracking junk first. Example: https://u2l.ai/pricing.
Step 2: Add a question mark and your first parameter
The first parameter is separated from the URL with a ?. Add your source: https://u2l.ai/pricing?utm_source=newsletter. Use lowercase, and use a hyphen for multi-word values.
Step 3: Chain the rest with ampersands
Every parameter after the first is joined with &. Add medium and campaign: https://u2l.ai/pricing?utm_source=newsletter&utm_medium=email&utm_campaign=spring-sale. Stick to your three required tags at minimum.
Step 4: Add term or content only if you need them
If you're A/B testing or running paid search, append utm_content or utm_term. Otherwise leave them off - empty parameters just clutter the URL and look spammy to the click.
Step 5: Shorten the finished URL before you share it
A fully tagged URL is long and ugly. Run it through a shortener so you get a clean, branded link like u2l.ai/spring-email. The UTMs travel silently behind the short link, and you also pick up click tracking at the redirect layer - more on why that matters below.
For one-off links, Google's Campaign URL Builder is a free, reliable way to assemble the string without typos. For anything you'll do repeatedly, build the UTMs straight into your link creation flow. When you create a link in U2L AI on a Pro plan or higher, UTM fields are built into the link editor, so the tags are attached and the link is shortened in one step instead of two. That matters more than it sounds: the two-tool shuffle (build UTM in one place, shorten in another) is exactly where inconsistencies creep in.
Why shorten at all? Because a raw UTM-tagged URL leaks your strategy (anyone can read your campaign names) and gets mangled by in-app browsers. A short link logs the click before any of that happens. For the full picture on capturing every click, our complete guide to link tracking breaks down how the redirect layer, UTMs, and pixels stack together.
Real UTM Examples by Channel
The best way to learn UTM tagging is to steal working examples. Here's how we'd tag the same spring-sale campaign across four different channels.
Email newsletter. You're sending a promo to your list. The source is your newsletter, the medium is email, and you want to know if the hero button or the text link at the bottom performs better.
?utm_source=newsletter&utm_medium=email&utm_campaign=spring-sale&utm_content=hero-button
Facebook paid ad. Running this through Meta Ads Manager. Source is facebook, medium is cpc (it's paid), and you're testing a video creative against a static image.
?utm_source=facebook&utm_medium=cpc&utm_campaign=spring-sale&utm_content=video-ad
Instagram bio link. Your bio link points to a page, and you want to separate bio-driven traffic from story or post traffic. Source instagram, medium social, content bio.
?utm_source=instagram&utm_medium=social&utm_campaign=spring-sale&utm_content=bio-link
If you run a link-in-bio page, tag the individual links on it too, so you can see which bio button actually drives action - not just that "someone visited the bio."
Influencer partnership. You're paying a creator to promote the sale. Give them a unique link so you can measure their exact contribution. Source is their handle, medium is influencer.
?utm_source=jane-doe&utm_medium=influencer&utm_campaign=spring-sale
Notice the pattern: utm_campaign=spring-sale stays identical across all four. That's deliberate. It lets you open one report, filter to spring-sale, and instantly compare every channel side by side. Change the campaign name even slightly between channels - spring-sale here, spring_sale there - and GA4 splits them into separate rows, and your tidy comparison falls apart. Which brings us to the part nobody wants to do but everybody should.
Set a UTM Naming Convention (Before You Tag Anything)
A UTM naming convention is a documented set of rules for how you write parameter values, and it's the highest-leverage 30 minutes you'll spend on tracking all year. GA4 treats UTM values as case-sensitive, exact-match strings. Facebook, facebook, and FB are three different sources to Google. Without a convention, a team of three people will generate a dozen variations of the same source within a month, and your reports turn to confetti.
Here are the rules we'd put on the wall:
- Lowercase everything. Always.
facebook, neverFacebook. This single rule prevents the majority of fragmentation. - Use hyphens, not spaces or underscores, for multi-word values.
spring-sale-2026, notspring saleorspring_sale. Spaces get encoded into ugly%20characters; pick hyphens and stay consistent. (Pick one separator and never switch - consistency matters more than which one you choose.) - Define your medium vocabulary. Lock down a fixed list:
email,social,cpc,affiliate,referral,organic. No freelancing. If it's not on the list, it doesn't get used. - Keep source and medium in their lanes. Source = the specific platform (
linkedin). Medium = the channel type (social). Don't repeat the platform name in three parameters. - Write it down where the whole team can see it. A shared doc, a spreadsheet, or a tool that enforces it. The convention only works if it's not living in one person's head.
A study referenced across analytics communities suggests teams that standardize naming see meaningfully better attribution accuracy - the exact figure varies, but the direction is obvious. Messy inputs produce useless reports. The fix is boring and it works: agree on the rules once, then enforce them with a shared builder so nobody has to remember them. Marketers who manage campaigns inside a proper link management platform get this enforcement for free because the UTM fields are structured, not typed from scratch every time.
How to Read UTM Data in Google Analytics 4
To see your UTM data in GA4, go to Reports → Acquisition → Traffic acquisition, then set the primary dimension to "Session source / medium" or "Session campaign." That's the whole trick - the data has been flowing in since the moment your tagged links got clicked; you just have to look in the right report.
Here's the workflow we use when a campaign wraps:
Start with Session campaign. Set the primary dimension to "Session campaign" and find your campaign name (e.g., spring-sale). This shows you total sessions, engagement, and conversions for the entire campaign across every channel. That's your headline number.
Drill into source/medium. Add "Session source / medium" as a secondary dimension (click the little + next to the primary dimension). Now you see the campaign broken out by channel: newsletter / email, facebook / cpc, instagram / social. This is where you learn which channel actually carried the campaign.
Check conversions, not just clicks. Sessions tell you who showed up. Conversions tell you who mattered. If facebook / cpc drove 500 sessions but zero conversions while newsletter / email drove 90 sessions and 6 signups, your email list is the real asset and the ad spend needs a rethink.
Use Explorations for deeper cuts. GA4's Explore section lets you build free-form tables filtered to a single campaign, segmented by utm_content. This is how you settle the "did the video ad or the static ad win?" question with actual numbers.
One honest caveat: GA4 only sees the UTM if the visitor's session reaches your site with the parameters intact. In-app browsers (TikTok, Instagram, Facebook Messenger) sometimes strip parameters during their redirect chains, so social traffic gets undercounted. The reliable fix is to shorten your tagged links and read click data at the redirect layer too - the shortener logs the click even when the UTM never makes it to GA4. We cover this layering approach in depth in our walkthrough on how to track link clicks.
UTM Mistakes That Wreck Your Data
Most broken UTM reporting comes down to the same handful of mistakes. Here are the ones worth memorizing.
Inconsistent capitalization and spelling. Covered above, but it's the number one killer, so it's worth repeating: Email and email are two different mediums to GA4. Lowercase everything, enforce it with a tool.
Tagging internal links. This is the sneaky one. UTMs are for inbound traffic from external sources. If you put UTMs on links between pages of your own site, you overwrite the visitor's original source. Someone arrives from Google organic, clicks an internal link tagged utm_source=blog, and GA4 now credits "blog" instead of Google. Never tag internal navigation.
Manually tagging Google Ads URLs. If you use Google Ads auto-tagging (the default gclid system), do not also add manual UTMs to those URLs. The manual tags override gclid and break the cost and conversion data flowing between Google Ads and GA4. Let auto-tagging do its job.
Forgetting the medium. A source with no medium gives GA4 incomplete attribution. Always include all three core parameters - source, medium, and campaign - on every tagged link, even if it feels redundant.
Cramming the destination into the UTM. UTMs label the traffic source, not the landing page. The page is the part before the ?. Don't try to encode which page someone landed on inside utm_content - that's what GA4's landing page report is for.
Treating tracking as set-and-forget. Tagged links are worthless if nobody reads the report. Put a recurring 20-minute review on the calendar. The whole point of UTMs is to change what you do next, and that only happens if someone looks.
Do UTM Parameters Hurt SEO?
No - UTM parameters do not hurt your SEO in any meaningful way. This is a persistent myth, and it's worth killing. Google's crawlers are perfectly capable of recognizing tracking parameters and consolidating them to the canonical (clean) version of a page. Google's own documentation on consolidating duplicate URLs confirms that as long as your pages have a proper canonical tag pointing to the parameter-free URL, search engines treat yoursite.com/page and yoursite.com/page?utm_source=email as the same page for ranking purposes.
There's one nuance worth knowing. You don't want UTM-tagged URLs to be the version that gets indexed or that you link to internally, because that can create duplicate-URL noise in crawl data. But that's a hygiene issue, not a ranking penalty, and a canonical tag handles it automatically. The far bigger risk we flagged earlier - internal UTMs corrupting your own analytics - has nothing to do with search rankings at all. So tag your external campaign links freely. Your SEO is fine. For more on how redirects and tracking interact with search, see our breakdown of whether URL shorteners affect SEO.
Frequently Asked Questions
What are UTM parameters used for?
UTM parameters are used to track which marketing source, channel, and campaign drove traffic to your website. You add them to the links you share in emails, ads, social posts, and bios, and your analytics tool (like Google Analytics 4) reports exactly where each visitor came from. This lets you compare channels and prove which efforts actually drive clicks and conversions.
What are the 5 UTM parameters?
The five UTM parameters are utm_source (the platform that sent the traffic), utm_medium (the channel type like email or social), utm_campaign (the campaign name), utm_term (the paid search keyword), and utm_content (which specific link or creative was clicked). Source, medium, and campaign are the three you should always include; term and content are optional.
Are UTM parameters case-sensitive?
Yes. Google Analytics 4 treats UTM values as exact-match, case-sensitive strings, so Facebook and facebook register as two completely different sources. This fragments your reports and is the most common UTM mistake. The fix is to enforce all-lowercase values across your whole team, ideally with a shared builder that applies the rule automatically.
Do UTM parameters affect SEO?
No, UTM parameters on externally shared links do not hurt your search rankings. Google ignores tracking parameters and consolidates ranking signals to the canonical URL. The only real pitfall is tagging internal links, which corrupts your analytics attribution - but that's an analytics problem, not an SEO penalty.
Should I shorten URLs that have UTM parameters?
Yes, shortening is recommended. A UTM-tagged URL is long and exposes your campaign names to anyone who reads it, and in-app browsers can strip the parameters before they reach your analytics. A short link hides the clutter, looks trustworthy, and logs the click at the redirect layer so you capture data even when the UTMs get stripped. You can build UTMs directly into your links in U2L AI's link editor on Pro and higher.
Can I track UTM parameters without Google Analytics?
Yes. UTM tags are read by almost every analytics platform, including Adobe Analytics, Matomo, and Plausible, not just GA4. You can also capture UTM-tagged clicks through a URL shortener's own analytics dashboard, which logs the click and its source data at the redirect layer regardless of which web analytics tool you use.
What's the difference between utm_source and utm_medium?
utm_source is the specific platform that sent the click (like instagram, google, or newsletter), while utm_medium is the broad channel type (like social, cpc, or email). Source answers "which exact platform," medium answers "what kind of marketing." Keeping the two distinct - and not repeating the platform name in both - is essential for clean reporting.
How many UTM parameters should I use on one link?
Use at least the three core parameters - source, medium, and campaign - on every tracked link. Add utm_content when you're testing multiple creatives or links in the same campaign, and utm_term only if you're running paid search. Never add empty parameters; if you don't need term or content, leave them off entirely.
UTM parameters take five minutes to learn and pay you back for years. Get the three core tags on every link you share, lock down a lowercase naming convention so your team stops fragmenting the data, and read the results in GA4's traffic acquisition report after each campaign. The marketers who do this stop guessing which channel works and start spending only on the ones that do.
The easiest way to keep it consistent is to build the UTMs and shorten the link in one place. Create a free U2L AI account to add tracking parameters straight into your short links and watch the click data roll in, and browse all the features to see how link management, QR codes, and analytics fit together in one dashboard.