UTM Parameters: What They Are, How to Use Them, and When Not To
The only UTM guide you need. What each parameter does, when to use which ones, real use cases by channel, and the mistakes that wreck your analytics.
What UTM parameters actually are
UTM stands for Urchin Tracking Module. The name comes from Urchin Software, which Google acquired in 2005 and turned into Google Analytics. The tracking parameters stuck around.
They're tags you add to the end of a URL. When someone clicks that tagged link, the parameters ride along to your analytics tool. GA4, Attri, Mixpanel, whatever you use. That's how you know which campaign, source, and channel brought each visitor.
There are five of them.
The five parameters
Think of them as the Five Ws:
utm_source — Where. Which platform or site sent the traffic. Examples: google, facebook, newsletter, partner-blog.
utm_medium — What channel. The marketing medium. Examples: cpc, email, social, organic, referral.
utm_campaign — Why. The specific campaign or promotion. Examples: spring-sale, 2026-q2-webinar, product-launch.
utm_term — Which keyword. Mostly for paid search. If you're running Google Ads, this captures the keyword that triggered the ad. Optional for everything else.
utm_content — Which version. Differentiates links that point to the same URL. Useful for A/B testing: did the blue button or the green button get more clicks? Examples: header-cta, sidebar-banner, video-thumbnail.
You don't need all five every time. Source, medium, and campaign are the core three. Term and content are situational.
Real use cases by channel
The generic advice is "tag your links." Here's what that looks like in practice.
Email newsletters. Tag every link in the email. utm_source=newsletter (or your ESP name), utm_medium=email, utm_campaign=weekly-digest-may-2026. If you have multiple links in the same email, use utm_content to differentiate: utm_content=hero-button vs utm_content=footer-link. This is how you find out that nobody clicks your footer CTAs.
Social media posts. utm_source=linkedin, utm_medium=social, utm_campaign=product-update. If you're posting the same link on multiple platforms, the source parameter is what separates them in your analytics. Without it, GA4 lumps all social traffic together.
Paid ads. utm_source=google, utm_medium=cpc, utm_campaign=brand-search. Google Ads can auto-tag with gclid, but UTMs give you readable campaign names in your reports instead of cryptic IDs. For Meta ads, UTMs are essential since fbclid doesn't populate campaign data in GA4 reliably.
Partner and affiliate links. utm_source=partner-name, utm_medium=referral, utm_campaign=joint-webinar. When a partner promotes your content, you need to know which partner drove the traffic. This is the only way without asking them to install your tracking pixel.
QR codes on physical media. Tag the destination URL, shorten it, generate the QR code. utm_source=product-insert, utm_medium=qr, utm_campaign=spring-packaging. This is how you track offline-to-online campaigns. We've seen brands attribute $40K+ in revenue to a single QR code on a product insert.
Guest blog posts. utm_source=blog-name, utm_medium=guest-post, utm_campaign=thought-leadership-q2. The host site probably won't let you add tracking pixels, but they'll link to your tagged URL.
When NOT to use UTM parameters
Internal links. This is the biggest mistake and it's everywhere. If you add UTM parameters to links between pages on your own site, every click starts a new session in GA4. Your visitor goes from homepage to pricing page and analytics records it as a brand new visit from "internal-cta." Your session count inflates, your attribution chain breaks, and your actual source data gets destroyed.
Just don't. Use event tracking for internal navigation. UTMs are for external sources pointing to your site.
Links you control both sides of. If you own the source page and the destination page, you don't need UTMs. Your analytics already tracks the internal referral path.
Best practices (the short version)
Lowercase everything. Facebook and facebook are two different sources in GA4. Pick lowercase, enforce it. Attri's parameter resolver does this automatically.
Hyphens, not underscores or spaces. Spaces become %20 in URLs. Underscores work but hyphens are the web convention. Be consistent.
Document your values. "facebook" vs "fb" vs "FB-Ads" is the number one UTM problem in every analytics account. Write down what's allowed and share it with your team. Better yet, use a tool that enforces it.
Don't over-tag. If you only use source, medium, and campaign, that's fine. Empty parameters are better than wrong parameters. Only add term and content when they serve a real reporting need.
Keep campaign names readable. 2026-q2-spring-sale beats springsale2026q2. Future you will thank present you when reading reports six months from now.
FAQ
What happens if I don't use UTM parameters? Your analytics still works. GA4 uses referrer data and auto-tagging (gclid, fbclid) to attribute some traffic. But anything it can't auto-detect shows up as "direct" or "(not set)." UTMs give you control over how traffic gets categorized instead of leaving it to Google's guesswork.
Do UTM parameters affect SEO? Not directly. Google ignores them when ranking pages. But they can create duplicate content issues if your canonical tags aren't set up correctly. More on that in our UTM and SEO guide.
What's the difference between UTM parameters and tracking pixels? UTMs travel in the URL and are read by your analytics tool when the page loads. Pixels are JavaScript snippets that fire on the destination page. UTMs work everywhere, including email clients and platforms where you can't install JavaScript. Pixels give you richer data (scroll depth, time on page) but only work where you control the page.
How many UTM parameters should I use? Three minimum: source, medium, campaign. Add term for paid search keywords. Add content when A/B testing ad creative or email CTAs. Using all five for every link is overkill and makes your reports noisy.
Build your tagged links with the free UTM builder, or manage them at scale with Attri.