UTM parameters: the complete guide (with copy-paste examples)
What each UTM parameter means, a naming convention that won't break your reports, and ready-made links for Google Ads, Meta, newsletters, LinkedIn, WhatsApp and QR codes.
By Rafael Coelho · Full-stack developer and creator of Analisa
Published 9 min read
You share the launch link on LinkedIn, send it in the newsletter, drop it in a Slack community and run an ad on top. The next day your analytics shows a pile of "direct" visits and a few from "linkedin.com". Which of those actually drove the sales? Without UTMs, you can't tell.
This guide covers what each parameter means, a naming convention that won't wreck your reports, ready-made links for the most common channels and the mistakes I see most often. At the end, I show how to read the results in Analisa without fooling yourself.
If you want to build links as you read, keep the UTM builder open in another tab.
What a UTM parameter is
A UTM is a tag you add to the end of a link to tell your analytics where that visit came from. The name comes from Urchin Tracking Module — Urchin was the tool Google bought and turned into Google Analytics. Today practically every analytics tool understands UTMs.
A tagged link looks like this:
https://yoursite.com/launch?utm_source=newsletter&utm_medium=email&utm_campaign=launch-v2Everything after the ? is the query string. The site still opens the same page; it's the analytics script that reads the parameters when the page loads. There's nothing to configure on your server.
The five parameters, one by one
| Parameter | Question it answers | Examples |
|---|---|---|
utm_source | Who sent the visit? | google, linkedin, newsletter, whatsapp |
utm_medium | What kind of channel is it? | cpc, paid_social, social, email, messaging |
utm_campaign | Which campaign or push? | black-friday-2026, launch-v2, bio |
utm_term | Which keyword or audience? (optional) | cookieless-analytics, cold-audience |
utm_content | Which creative or specific link? (optional) | top-banner, footer-cta, video-15s |
The first three are the ones that matter day to day: source, medium and campaign. Without them, most reports don't know what to do with the visit. term and content are tie-breakers: two ads in the same campaign, two links in the same email.
A naming convention that won't break your reports
The most important UTM rule isn't technical: agree on a vocabulary with your team and never leave it. Most tools group values by exact text. Analisa does too: LinkedIn, linkedin and li become three different rows.
The convention I use and recommend:
- Everything lowercase. No exceptions.
- Hyphens instead of spaces. Spaces turn into
%20or+in the link and look ugly in reports.black-friday, notBlack Friday. - No accents or special characters.
cafe, notcafé. It avoids encoding issues between tools. - A closed list for medium. Pick a handful of values and document what each one means.
- Dates in campaign names for one-off pushes.
2026-11-black-fridaysorts itself and won't collide with next year's. - One spreadsheet with every link you create. Who made it, when, where it points. In three months you'll be glad you did.
A suggested closed list for utm_medium, matching the presets in the builder:
utm_medium | When to use it |
|---|---|
cpc | Paid search ads (Google Ads, Microsoft Ads) |
paid_social | Paid social ads (Meta, TikTok, LinkedIn) |
social | Organic posts, profile bio, stories |
email | Newsletter, automated emails |
messaging | WhatsApp, Telegram, SMS |
video | YouTube video description |
qr | Printed QR code (flyer, packaging, event) |
referral | Partner, creator, post on another site |
The builder has a "Normalize values" option that lowercases everything and swaps spaces for hyphens, and warns you when you type uppercase or odd characters.
Ready-to-copy examples
Swap yoursite.com and the campaign names for your own. Everything else can be copied as is.
Google Ads
Google Ads tags clicks on its own with the gclid parameter (auto-tagging), which Google Analytics understands. Other tools don't read gclid as a campaign, so it's worth adding UTMs too. The easiest way is the final URL suffix at account or campaign level, with ValueTrack parameters that Google fills in at click time:
utm_source=google&utm_medium=cpc&utm_campaign={campaignid}&utm_term={keyword}&utm_content={adgroupid}{campaignid} is the campaign's numeric ID, not its name. If you'd rather read names in your reports, write a fixed name in each campaign (utm_campaign=search-brand) instead of the dynamic parameter.
Meta Ads (Facebook and Instagram)
In the ad, use the URL parameters field. Meta fills in dynamic parameters between double curly braces at click time:
utm_source={{site_source_name}}&utm_medium=paid_social&utm_campaign={{campaign.name}}&utm_term={{adset.name}}&utm_content={{ad.name}}{{site_source_name}} becomes fb, ig, msg or an (Facebook, Instagram, Messenger and Audience Network). Heads-up: {{campaign.name}} copies the name exactly as it appears in Ads Manager. If your campaign is called "Black Friday 2026 - Conversions", that's what lands in the report. Either name campaigns using your convention from the start (2026-11-black-friday) or use {{campaign.id}}.
Newsletter
https://yoursite.com/whats-new?utm_source=newsletter&utm_medium=email&utm_campaign=2026-10-issue-42&utm_content=main-ctaUse utm_content to tell apart links in the same email (main-cta, footer-link, banner). That way you know whether people click the button or the text link.
LinkedIn (organic post)
https://yoursite.com/launch?utm_source=linkedin&utm_medium=social&utm_campaign=2026-10-launch&utm_content=founder-postIf several people on the team share the same launch, keep source, medium and campaign identical and change only utm_content (founder-post, company-page, employee-share). For LinkedIn ads, switch the medium to paid_social.
WhatsApp and other messaging apps
https://yoursite.com/offer?utm_source=whatsapp&utm_medium=messaging&utm_campaign=2026-10-customer-offer&utm_content=vip-listMessaging is where UTMs make the biggest difference. Links opened from messaging apps often arrive without a referrer — the browser can't say where the person came from — so without a UTM that visit shows up as direct. If you send the same link to different groups or channels, change only utm_content (vip-list, students-group, status).
Profile bio (Instagram, TikTok, X)
https://yoursite.com/?utm_source=instagram&utm_medium=social&utm_campaign=bioIf you use a link-in-bio page, tag each button with its own utm_content (bio-shop, bio-course). Keep the campaign fixed as bio: that lets you compare the bio against stories (utm_campaign=stories-2026-10-launch) over time.
QR codes on printed material
https://yoursite.com/menu?utm_source=flyer-downtown-store&utm_medium=qr&utm_campaign=2026-10-grand-openingQR code traffic never has a referrer: people point their camera and open the link. With UTMs, each printed piece becomes its own row in the report. The builder generates the QR code for the tagged link, as an SVG you can send straight to the printer.
The mistakes that ruin your data most
1. UTMs on internal links
Adding ?utm_source=home&utm_medium=banner to a banner that links from one page of your site to another looks like a good way to measure the banner. It isn't. The visit already had a source (Google, the newsletter); the internal UTM makes your analytics record a "campaign" that is your own site. To measure internal clicks, use an event:
document.querySelector('#offer-banner').addEventListener('click', () => {
window.analytics.track('banner_click', { banner: 'home-offer' })
})2. The same channel under different names
facebook, Facebook, fb and meta in the same month. The report splits the channel into four and none of them looks important. The fix is the closed list and the spreadsheet. If the damage is done, add up the rows by hand and fix it going forward.
3. Redirects that drop the parameters
An http:// link that redirects to https://, a non-www link that redirects to www, a misconfigured shortener: any redirect that doesn't pass the query string along erases the UTM. Always test the final link in a browser.
4. A tagged link that becomes the "official" link
You put the newsletter link in a post, people copy it and share it. Weeks later, visits from unrelated places still arrive as newsletter. For links you expect to circulate, prefer the clean URL — or accept some noise.
5. Personal data in a UTM
Never put an email, name or phone number in a parameter (utm_content=jane@example.com). URLs show up in logs, browser history and reports. That's personal data spreading for no reason. I covered the privacy side in Google Analytics, consent and privacy laws.
6. Making up a medium on the spot
utm_medium=story, utm_medium=insta, utm_medium=post. The medium is the type of channel, and it's what lets you compare "paid vs organic" or "email vs social". Whatever changes from post to post goes in campaign or content.
Reading the results in Analisa
Once your links are live, this is the path in Analisa:
- Acquisition › UTM. Three tabs: Source, Medium and Campaign. Each row shows how many visits arrived with that value in the link. This is where you check whether a campaign is bringing people in and whether names are consistent — duplicates jump out right away.
- Dashboard › Conversions. The "Channels that convert" block shows conversions, sessions and conversion rate for each channel. For it to work you need at least one goal (a signup, a purchase, a thank-you page).
- Conversion › Funnels. To see the steps between arrival and conversion, and where people drop off.
One important detail so you don't get confused: in the conversions block, each session's channel is the referring site of the first page viewed — or "direct" when there's no referrer. UTMs show up in the UTM report, which counts visits. So a click from WhatsApp shows up as whatsapp in the UTM report but as "direct" in the conversions block, because it arrived without a referrer.
To answer "does this specific campaign convert?", the technique that works well today is a dedicated landing page per campaign:
- Create a page just for the campaign, for example
/lp/black-friday, and use it as the destination of every tagged link for that push. - Create a funnel with step 1 = page
/lp/black-fridayand step 2 = the conversion event (signup,purchase). - The funnel shows how many sessions that entered through the campaign page reached the conversion, and how many fell off along the way.
Because funnel steps are counted per session and in order, you get that campaign's conversion without relying on the referrer. I explain goals, funnels and attribution in more depth in how to measure conversion by channel.
When the difference between campaigns is real
Campaign A converted at 4%, campaign B at 3%. Is A better? With 100 visits each, you're probably looking at noise. Before cutting budget:
- put each campaign's numbers into the conversion rate calculator, which shows a confidence range for each rate — if the two ranges overlap a lot, you can't say which one is better yet;
- if you're planning a test, the sample size calculator tells you how many visits each version needs before you draw conclusions.
Cheat sheet for the team wiki
utm_source= who,utm_medium= type of channel,utm_campaign= which push.- Lowercase, hyphens, no accents, medium from a closed list.
- UTMs only on links coming from outside your site. Inside the site, use events.
- Test the final link (redirects) and never put personal data in it.
- Read visits in the UTM report; read conversion with goals and funnels.
Ready to start? Build the links for your next campaign in the UTM builder — it has presets for Google Ads, Meta, LinkedIn, newsletters and WhatsApp, plus bulk mode and QR codes.
Sources
- [GA4] URL builders: Collect campaign data with custom URLs — Google Analytics Help
- Set up tracking with ValueTrack parameters — Google Ads Help
- About URL parameters (dynamic parameters) — Meta Business Help Center
- Referrer-Policy — MDN Web Docs
See where your customers come from — without cookies
Analisa shows where each visit comes from (referrer and UTM), how many convert and where your funnel leaks, with IPs anonymized at ingest. Free up to 10K events a month.
Try first: UTM builder
Related tools and pages
- UTM builderTag campaign links with utm_source, utm_medium and utm_campaign — with presets, QR code and bulk mode.
- Conversion rate calculatorVisitors and conversions in, conversion rate out — with a confidence range and value per visitor.
- Getting startedSign up, create your first app, and start sending events to Analisa in under 5 minutes.

About the author
Rafael Coelho
Full-stack developer and creator of Analisa. Writes about programming, product and data — and measures everything with Analisa itself.
See all articles