What Are UTM Parameters, and How Do You Use Them Right?
UTM parameters are short tags you add to a link so Google Analytics can tell you exactly which campaign, post or message sent that visitor. This guide covers the five tags, worked examples for Indian small-business channels, and a naming system that keeps your reports readable.
UTM parameters are five short tags added to the end of a link so Google Analytics, or any other tool, can tell you exactly which campaign, post or message sent that visitor. Get them right and a vague sense that traffic went up turns into proof that one WhatsApp broadcast on a Tuesday brought forty visits and six enquiries.
I tag every campaign link I run for clients and for this site with UTM parameters, because without them Google Analytics lumps WhatsApp, Instagram and email traffic into one confusing bucket labelled direct or referral. This guide covers what each parameter does, worked examples for the channels Indian small businesses actually use, a naming system that will not fall apart by month three, and where UTM tagging clashes with Google Ads auto-tagging.
What UTM parameters are, and where the name comes from
UTM stands for Urchin Tracking Module. Urchin was a web analytics company whose software Google acquired in 2005, and the tracking code from that product became the foundation of Google Analytics. The name stuck to the five URL tags even though most people who use them today have never heard of Urchin itself.
Mechanically, a UTM link is just a normal URL with extra information appended after a question mark. Each piece of information is a key and a value joined by an equals sign, and multiple pieces are joined by ampersands, so a link ends up looking like a base address followed by utm_source=instagram, then utm_medium=social, then utm_campaign=bio-link, all strung together in one line.
UTM parameters are not a Google-only feature. Any tool that can read a URL, Meta Ads Manager, HubSpot, Zoho, or a plain spreadsheet someone updates by hand, can capture and report on the same five tags. That is what makes them useful as a shared standard: a link tagged once carries its source with it wherever it is clicked, logged or exported.
This portability matters more than it sounds. A campaign that runs across Instagram, a WhatsApp broadcast and a printed flyer all in the same week produces one consistent story in your reporting sheet, tagged the same way each time, rather than three disconnected numbers you have to reconcile by hand at the end of the month.
The five UTM parameters, and which ones you actually need
Google's own guidance for the URL builder is blunt about this: always fill in source, medium and campaign. Term and content exist for extra detail and are genuinely optional on most links. Treat the table below as a checklist before you tag anything.
| Parameter | Required | What it captures | Example value |
|---|---|---|---|
| utm_source | Yes | Where the click originated | |
| utm_medium | Yes | The type of channel | social, email, cpc |
| utm_campaign | Yes | The specific promotion or push | sep2026-offer |
| utm_term | No | A paid search keyword | running shoes pune |
| utm_content | No | Which version of an ad or link | carousel-1 |
GA4 also recognises two newer additions, utm_id and utm_source_platform, which Google recommends for advertisers who want a specific campaign ID or buying platform attached to the data. Neither is worth adding unless you are already comfortable with the five main tags and have a concrete reason to filter by ID later.
There is one case where content earns its place even on a small budget. Say two versions of the same Instagram story run in the same week, one showing a product photo and one showing a customer testimonial, both linking to the same page. Tag one utm_content=photo and the other utm_content=testimonial, and Traffic acquisition will show which version actually pulled more clicks, without needing a separate landing page for each.
Where UTM data shows up in Google Analytics 4
Once a tagged link is clicked, GA4 files the visit under Reports, then Acquisition, then Traffic acquisition. That report shows Session source, Session medium and Session campaign as columns, pulled directly from your utm_source, utm_medium and utm_campaign values. If you have not set up GA4 at all yet, my Google Analytics for beginners guide gets the property and reporting live before you tag your first link.
GA4 actually keeps two separate views of this data. Traffic acquisition reports the source of the current session, so a returning visitor who clicked a Google result last week and an email link today shows as email today. User acquisition instead reports the very first source that ever brought that person in. Both are useful; they simply answer different questions, so check which one a report is using before you draw a conclusion from it.
utm_term and utm_content do not get their own column by default. They show up as Session manual term and Session manual ad content, and you usually have to build a free-form table under Explore to see them. Most small businesses never need to, since source, medium and campaign already answer the question that matters most.
In practice, I open Traffic acquisition once a week and scan for anything unexpected. A source or medium value that shows up once and never again is usually a typo worth fixing before it repeats, not a new channel worth investigating on its own.
Tagging is only half the job. Once a sale or enquiry is tied back to the campaign that produced it, you can work out whether that campaign actually paid for itself, which is what my guide to what ROAS means and how to calculate it covers next. And if a lot of your enquiries still arrive untracked, phone calls, walk-ins, a shared WhatsApp number, my broader guide on tracking where your leads come from covers everything UTM tags cannot reach on their own.
Worked UTM examples for five Indian marketing channels
The five parameters mean little until you see them on the links you would actually send this week. Here are five channels I tag for clients constantly, each with a working pattern you can copy and adapt. Swap yoursite.in for your own domain in every example.
WhatsApp broadcasts
https://yoursite.in/?utm_source=whatsapp&utm_medium=broadcast&utm_campaign=sep2026-offer
A broadcast list is still one of the highest-reply channels an Indian small business has, so it is worth its own source rather than being lumped in as direct traffic. Tag the medium as broadcast specifically, separate from click-to-chat links you might place elsewhere, so the two never blend into one number. My WhatsApp marketing guide covers building the broadcast list this link goes out to.
Instagram bio link
https://yoursite.in/?utm_source=instagram&utm_medium=social&utm_campaign=bio-link
A bio link is clicked from many different posts and reels over weeks, so a single stable campaign value like bio-link is usually more useful than trying to change it every day. My Instagram bio guide covers what to put around this link so the click actually happens in the first place.
Email newsletters
https://yoursite.in/blog?utm_source=newsletter&utm_medium=email&utm_campaign=sep2026-digest
Most email tools such as Mailchimp or Zoho Campaigns can append UTM parameters to every link in a template automatically, which is worth turning on once rather than tagging each send by hand. My email marketing guide covers the tool setup this depends on.
QR codes on print
https://yoursite.in/menu?utm_source=print&utm_medium=qr&utm_campaign=kothrud-flyer
Say a bakery in Kothrud prints a flyer with a QR code pointing at its menu page. Tagging that code with source print and a campaign naming the flyer run is the only way to tell later whether the flyer paid for its own printing, since nothing about a QR scan says "flyer" on its own otherwise.
Meta ads with dynamic parameters
https://yoursite.in/?utm_source=facebook&utm_medium=paid-social&utm_campaign={{campaign.name}}&utm_content={{ad.name}}
Meta supports dynamic tokens, double curly braces around a field name, that Ads Manager fills in automatically at the moment of each click, so {{campaign.name}} becomes your actual campaign name without you retyping it on every ad. Add this template once in the URL Parameters field at the ad level rather than editing every destination link by hand, and confirm the current token names on Meta's own specification page before you rely on one, since Meta can add or rename tokens. My Facebook lead ads guide and Meta Pixel setup guide cover the rest of the Meta tracking stack this feeds into.
A naming convention that keeps your reports usable
A UTM system only works if everyone who builds a link uses the same words for the same things. Pick lowercase as the standard for every value, since Google Analytics treats instagram and Instagram as two different sources, and write the convention down somewhere every link-builder can see, not just in your own head.
| Channel | utm_source | utm_medium | utm_campaign |
|---|---|---|---|
| WhatsApp broadcast | broadcast | sep2026-offer | |
| Instagram bio | social | bio-link | |
| Email newsletter | newsletter | sep2026-digest | |
| Print QR code | qr | kothrud-flyer | |
| Meta ads | paid-social | {{campaign.name}} |
Keep this table, or one like it, at the top of a shared sheet next to the actual links you have already built, so the next person tagging a link copies an existing row instead of inventing new wording. This is the same sheet I recommend building out further in my guide to SEO KPIs worth tracking, since campaign-level UTM data and organic keyword data end up living well next to each other.
On a one-person marketing setup, this sheet is easy enough to keep in your own head for a while, right up until you hire a part-time social media helper or hand a client's Instagram account back to their own staff. Write the convention down before that day arrives, not after someone has already tagged three weeks of posts with wording nobody else recognises.
UTM parameters and Google Ads auto-tagging
Google Ads ships with auto-tagging switched on by default, which appends its own parameter, gclid, short for Google click identifier, to the destination URL every time someone clicks your ad. That single opaque value carries far more detail back to Google Analytics than a manual UTM link ever could, including the exact keyword, ad group and campaign behind the click.
Here is the part most guides skip: in GA4 specifically, auto-tagging takes priority over manual UTM tags when both are present on the same Google Ads click, and there is no setting to override that. So hand-tagging your Google Ads final URLs with utm_source=google is mostly wasted effort for GA4 reporting purposes, since GA4 already knows the click came from Google Ads through gclid.
None of that means UTM tags are pointless once you run Google Ads. Auto-tagging only covers Google Ads clicks inside GA4. Every other channel, WhatsApp, Instagram, email, print, and every tool outside GA4 that cannot read a gclid, still needs manual UTM tags to be seen at all. The two systems are not competing; leave auto-tagging on for Google Ads and keep tagging everything else by hand.
There is one practical exception worth knowing. A CRM such as Zoho or HubSpot that pulls leads in from a website form generally has no idea what a gclid is. If you want that CRM to show Google Ads as the source of a lead, the landing page URL still needs utm_source and utm_medium on it, entirely separate from whatever GA4 does with the same click through auto-tagging.
How to build and test a UTM link
This is the five-step routine I use before any link goes live, whether it is going into a client's next broadcast or my own newsletter.
Step 1: Confirm the destination URL first
Open the exact page you want the link to land on and copy the address as it appears in the browser bar, https and any trailing slash included. A common pitfall is tagging a URL that later gets redirected, an old address that now 301s somewhere else, which can quietly drop or duplicate parameters along the way. Verify by pasting the plain, untagged URL into a fresh browser tab first and confirming it lands exactly where you expect before you add anything to it.
Step 2: Fill in source, medium and campaign
Using your naming sheet, choose one fixed word for source, one for medium and one for campaign, copying an existing row rather than typing from memory. A common pitfall is writing insta one week and instagram the next, which quietly splits one channel into two separate rows in every report from then on. Verify by checking each value against the sheet before you save the link, not after it has already been sent out.
Step 3: Add term or content only if you need them
Skip utm_term and utm_content unless you are running paid search keywords or genuinely testing two versions of the same ad or link against each other. A common pitfall is adding content tags to every single link out of habit, which clutters every report with detail nobody will ever actually filter by. Verify by asking whether you will filter a report using this exact value later; if the honest answer is no, leave it out.
Step 4: Build the link with a free UTM builder
Paste your base URL and the chosen values into a free UTM builder, such as Google's own Campaign URL Builder, rather than typing the full string by hand every time. A common pitfall is a stray space or an extra question mark typed manually, which breaks the exact format Google Analytics expects to read. Verify that the generated link starts with exactly one question mark and every parameter after it is joined with an ampersand, not a comma or a space.
Step 5: Test the link before you publish it
Click the finished link yourself on your own phone, exactly the way a customer would, before it goes into a broadcast, a bio or a live ad. A common pitfall is a link that technically works but carries the wrong source or medium, which you can only catch by actually checking it. Verify in Google Analytics 4 under Reports, then Realtime, that the source, medium and campaign you typed appear correctly within a few minutes of your own test click.
Common mistakes with UTM parameters
Past the naming and testing routine above, these are the mistakes I see most often once a business has been tagging links for a few months.
- Tagging internal links on your own site. A UTM tag on a link from your homepage to your blog can overwrite the visitor's original session source in GA4, making a return click look like a brand new visit from nowhere.
- Inconsistent spelling or case. Instagram, instagram and insta all read as different sources, silently splitting one channel's numbers across three rows.
- Forgetting utm_medium. A source with no medium is harder for GA4 to group into a clean channel, and you lose the ability to compare all paid channels or all social channels together.
- Reusing one campaign value for two different promotions. A festive sale and a plain product launch both tagged sale merge into one number that answers neither question well.
- Letting a link shortener mangle the query string. Some shorteners handle UTM parameters fine and some quietly drop them, so always click the shortened version yourself before sending it out.
- Never writing the naming convention down. A year later nobody remembers whether last Diwali's campaign was called diwali or diwali-sale, and this year's numbers cannot be compared cleanly against it.
Most of these mistakes share one root cause: nobody wrote the rule down before the first link went out. A five-minute naming sheet, the kind in the table earlier in this guide, fixes every one of them at once and costs nothing to set up.
When UTM tagging is not worth it
UTM parameters answer one question well: which link got clicked. They do not tell you what a visitor did once they landed, whether they filled a form, called the number on the page, or left within five seconds. That second half of the picture comes from GA4 key events, which my Google Analytics guide and my Tag Manager guide both cover in more depth, so treat UTM data as the start of the story rather than the whole thing.
A small technical honesty check is worth adding too. A handful of link shorteners and some older in-app browsers can occasionally drop or reorder query parameters, so a tagged link that works perfectly in a normal browser is still worth testing inside WhatsApp or Instagram specifically before you trust it for a report. None of this is a reason to skip UTM tagging; it is a reason to test on the actual platform the link will live on, every time.
Once tagging is reliable and revenue is flowing back through named campaigns, the next honest question is whether each campaign is actually worth what it costs. My guide to what ROAS means and how to calculate it and my wider guide to measuring digital marketing ROI both start exactly where this one ends.
Frequently asked questions
What does UTM stand for?
UTM stands for Urchin Tracking Module. Urchin was a web analytics company whose software Google acquired in 2005, and its tracking code became the base of what is now Google Analytics. The name stuck to the five URL tags even though most people using them today have never heard of the original product.
Which UTM parameters do I actually need to fill in?
Source, medium and campaign are the three Google itself calls essential, and every link should carry all three. Term and content are optional extras for paid search keywords and creative testing, and most small business links never need them. Skipping term and content costs you nothing; skipping source, medium or campaign leaves a gap in every report that uses them.
Do UTM parameters still matter if Google Ads auto-tagging is switched on?
Yes, but not for Google Ads clicks specifically inside GA4, since auto-tagging's gclid parameter already carries that data and GA4 gives it priority over a manual UTM tag on the same click. UTM parameters still matter for every other channel, WhatsApp, Instagram, email and print, and for any tool outside GA4 that cannot read a gclid at all.
What is the best free tool to build a UTM link?
Google's own Campaign URL Builder is the standard free option and produces GA4-ready links without typos. The tool matters less than the habit around it though: keep a shared sheet with your fixed source, medium and campaign values so whoever builds the next link copies an existing row instead of typing new wording from memory.
Should I put UTM parameters on links inside my own website?
No. Tagging an internal link, say from your homepage to your blog, can overwrite a visitor's original session source in Google Analytics 4, making a genuine return visit look like a brand new session from nowhere. Save UTM tags for links that bring people in from outside your site: ads, bios, broadcasts, newsletters and print.
Related guides
- What is ROAS? Formula, good ROAS and ROAS vs ROI
- How to track where your marketing leads come from
- Google Search Console and Analytics for beginners
- How to measure digital marketing ROI
- WhatsApp marketing for Indian businesses
- Email marketing for small business
- How to set up your Instagram bio for business
- Google Tag Manager for beginners
Your next step
Pick one channel, your WhatsApp broadcast list, Instagram bio or next email newsletter, and tag every link you send this week using the naming system above. Once revenue starts flowing back through tagged campaigns, my guide to what ROAS means and how to calculate it shows you what to do with that data. If you would rather have the whole tracking stack set up for you, get in touch.
Get new guides in your Google Search & Discover feed.