You post the same link in three places — an Instagram story, a newsletter, a partner’s site — and traffic rolls in. Then someone asks which one actually worked, and you have nothing but a shrug.
UTM parameters fix that. They’re small tags you add to the end of a link so your analytics can tell exactly where each visitor came from, instead of lumping everyone into a vague “social” or “direct” pile.
This guide covers what UTMs are, what each of the five does, a naming convention that’ll save you future headaches, the mistakes that quietly ruin your data, and how it all feeds into attribution.
What a UTM actually is
A UTM is just extra text bolted onto the end of a URL after a question mark. Your page ignores it and loads normally — but your analytics reads it and records where the click came from. That’s the entire trick.
So this plain link — example.com/pricing — becomes something like example.com/pricing?utm_source=instagram&utm_medium=social&utm_campaign=spring_sale. Ugly, sure. But now a click from that link is unmistakably tagged as Instagram, social, spring sale — not guesswork.
A UTM doesn’t change where a link goes. It changes how much you know about who clicked it.
The name is a leftover from an old analytics tool (Urchin), and it stuck. You don’t need the history — just know that “UTM” and “campaign tag” mean the same thing, and every major analytics platform understands them out of the box.
The five parameters, one by one
There are five UTM parameters. Three you should basically always use, and two that are situational. Here’s what each one answers.
1. utm_source — where from?
The specific place the link lived: instagram, newsletter, google, a partner’s domain. If someone asked “which site or platform sent this person?”, the answer goes here.
2. utm_medium — what type of channel?
The category of traffic: social, email, cpc for paid ads, referral. Source is the exact origin; medium is the bucket it belongs to. Instagram is the source, social is the medium.
3. utm_campaign — which effort?
The named push it belongs to: spring_sale, product_launch, black_friday. This is what lets you group every link across every channel that belongs to the same campaign and total it up.
4. utm_content — which version?
Optional. Used to tell apart two links pointing to the same place — say two buttons in one email, or two ad variations. Handy for A/B tests; skip it when there’s only one link.
5. utm_term — which keyword?
Optional and niche. It was built to track paid-search keywords, so unless you’re running search ads and tagging keywords by hand, you’ll rarely touch it. Don’t feel bad about ignoring it.
In practice, source, medium, and campaign do ninety percent of the work. Nail those three consistently and you’re already ahead of most people fumbling with links.
Plan a month of posts in one sitting.
Batch, schedule, and auto-publish to every platform from one calendar. 30-day free trial, no card required.
Start scheduling free →Building your first UTM, step by step
You never have to type these by hand — and you shouldn’t, because that’s where typos creep in. Every analytics platform ships a free “campaign URL builder,” and it’s just a little form. Here’s the flow, so it feels less like magic.
- Paste your destination — the actual page you want people to land on, say example.com/spring
- Fill in utm_source with the exact platform: instagram
- Fill in utm_medium with the channel type: social
- Fill in utm_campaign with your named push: spring_sale
- Skip content and term unless you’re testing two versions or tagging keywords
Hit generate and it hands you back example.com/spring?utm_source=instagram&utm_medium=social&utm_campaign=spring_sale. Copy that, drop it wherever the link’s going, and you’re done. The builder’s real value isn’t the URL — it’s that it stops you fat-fingering an ampersand and silently breaking the tag. Once you’ve made a few, keep them in a simple shared sheet so the whole team pulls from the same tidy list instead of reinventing tags.
A naming convention you won’t regret
Here’s the thing nobody warns you about: UTMs are case-sensitive and literal. To your analytics, Facebook and facebook are two different sources, and they’ll show up as two separate rows that you then have to mentally add together. Multiply that across a year and your reports turn to mush.
The fix is boring and it works — agree on rules once and never deviate:
- Always lowercase, everything, no exceptions
- Use underscores or hyphens for spaces, and pick one — never mix spring_sale and spring-sale
- Keep source and medium values from a short fixed list, not whatever you type that day
- Name campaigns so they still make sense in six months — q3_webinar beats thing2
- Write the rules down somewhere the whole team can see
Here’s the same campaign tagged consistently across channels, so it all rolls up cleanly:
- example.com/offer?utm_source=instagram&utm_medium=social&utm_campaign=spring_sale
- example.com/offer?utm_source=newsletter&utm_medium=email&utm_campaign=spring_sale
- example.com/offer?utm_source=partnerblog&utm_medium=referral&utm_campaign=spring_sale
Same campaign name, same lowercase style, different source and medium. In your reports, spring_sale becomes one clean line you can break down by channel — which is exactly what you wanted when you asked “which one worked?”
Mistakes that quietly ruin your data
Most UTM problems aren’t dramatic — they just slowly poison your reports until you stop trusting them. A few to dodge:
- Inconsistent casing: Email today, email tomorrow, splitting one channel in two
- Tagging internal links on your own site, which can wipe out the original source
- Forgetting the campaign, so a link is trackable but ungroupable
- Cramming personal data into a UTM — they’re visible in the URL, so keep them boring and public
- Leaving UTMs off paid or partner links, the exact places you most need to prove they worked
That second one bites people constantly. If you add UTMs to links between pages on your own site, you can overwrite how the visitor originally arrived — making a real Google visitor look like they came from your own footer. Only tag links coming into your site from outside.
Every comment and DM in one inbox.
Reply across all your platforms from a single unified inbox. Free for 30 days, no card required.
Unify your inbox →Paid, organic, and email — tag them differently
Not every channel wants the same treatment, and knowing the small differences saves you from muddy data later.
- Paid ads: many ad platforms can auto-tag with their own system, but if you tag manually, use a medium like cpc or paid_social so paid and organic don’t blur into one line — mixing them is how you lose track of what your ad spend actually bought
- Organic social: tag the links you share yourself (bio links, post links), but you can’t tag someone else re-sharing you — accept that organic will always have a fuzzy edge and don’t obsess over it
- Email: most newsletter tools tag links for you, so check what they add before you also tag by hand — double-tagging the same link is a classic way to end up with a mangled URL
The rule of thumb: tag anything you control the link for, lean on the platform’s auto-tagging where it’s reliable, and never let paid and organic share a medium. That last one alone keeps a lot of reports honest.
Link shorteners and UTMs
A fully tagged link is long and ugly, which is fine in an email but awful in a printed flyer or a spoken “go to.” That’s where shorteners earn their place — and they play nicely with UTMs if you do it in the right order.
Build the full UTM link first, then run that whole thing through the shortener. The short link redirects to your tagged URL, so the UTMs still land in your analytics — the visitor just never sees the mess. Do it backwards (shorten first, tag after) and you’ll break the tags. One bonus: most shorteners count clicks too, so you get a rough tally before anyone even reaches your site, which is handy for offline stuff like a QR code on a poster.
A QA habit that catches broken tags
The worst UTM bug is the silent one — a link that looks fine, gets shared everywhere, and quietly logs nothing useful. Ten seconds of checking before you publish saves you a month of bad data.
- Click your own tagged link before it goes live and confirm it actually loads the right page
- Eyeball the URL: every parameter should have an equals sign and be joined by an ampersand, with a single question mark up front
- Check it’s all lowercase and the campaign name matches your other links exactly
- For an important launch, click it, then look in your real-time analytics to see the source land as expected
Make that a reflex — tag, click, glance, ship — and you’ll almost never discover a dead campaign after the fact. It feels fussy for about a week, then it’s just how you share links.
Where UTMs show up in analytics
Once tagged links start getting clicks, your analytics tool sorts the visits by source, medium, and campaign automatically. Instead of one big “social” blob, you see Instagram versus your newsletter versus that partner post, each with its own visits and, ideally, conversions.
That breakdown is what makes a report worth reading. When you pull numbers together for the month, UTM data is what lets you say a channel drove real results rather than just traffic — the difference we lean on in how to build a social media report. It’s also how you start connecting effort to money instead of to likes.
The place it clicks is when you go one step past visits. Most analytics tools let you attach a goal or conversion — a sign-up, a sale — and then show it broken down by the same source and medium. Suddenly you’re not admiring which post got clicks; you’re seeing which tagged link actually produced customers. A partner blog might send fewer visitors than Instagram but convert twice as well, and without UTMs you’d never have known to send that partner a thank-you.
One warning that saves a lot of head-scratching: give a new campaign a day or two before you judge it. Analytics platforms process data on a delay, so a link that looks dead an hour after you post it is often just not counted yet. Check the shape of the numbers over a few days, not the first twenty minutes.
How UTMs feed attribution
UTMs are the raw ingredient for attribution — the practice of deciding which channels get credit for a sale. Without tags, every analytics tool is guessing where people came from. With them, it has actual labels to work with.
That link between clean tags and honest credit is the whole game. If you want to know which channels are truly earning their keep — and why a single tag rarely tells the full story — read marketing attribution explained next. And when you’re ready to tie all this back to revenue, social media ROI shows where the numbers land. If you share a lot of links from one place, our link-in-bio guide pairs nicely with consistent tagging.
The short version
UTM parameters are tags on the end of a link that tell your analytics exactly where a visitor came from. Use source, medium, and campaign on every external link, keep everything lowercase and consistent, and never tag your own internal links. Done right, they turn a vague traffic blob into a clear answer about which channels actually work — and they’re the foundation every attribution model quietly depends on.