UTM parameters explained: setup and tracking for Indian marketers
If you are running campaigns across WhatsApp, Google, Meta, and email without UTM parameters, you have no idea what is actually working. Here is how to set them up properly.
A client once told me their Facebook ads were not working. They had spent ₹80,000 over three months and could not see any results. When I checked their Google Analytics, there were no UTM parameters on any of their links. Traffic from Facebook was showing up under "direct" traffic because of how some mobile apps strip referrer data. They were getting results, just not seeing them.
UTM parameters solve this completely. They are small pieces of text you add to your URLs that tell Google Analytics exactly where a visitor came from.
The five UTM parameters and what each one does
There are five standard parameters. You will use three of them almost every time.
utm_source tells Analytics where the traffic came from. For a Google Ad, this would be "google." For a WhatsApp broadcast, you might use "whatsapp." For your email newsletter, use "newsletter."
utm_medium tells Analytics what type of traffic channel it is. "cpc" for paid ads, "email" for email campaigns, "social" for organic social posts.
utm_campaign is the specific campaign name. Make this descriptive: "diwali-sale-2022" or "mumbai-office-launch" or "ramadan-offer-may."
utm_term is used for paid search to track which keyword triggered the ad. utm_content is used when you are A/B testing two different ad creatives in the same campaign.
Building UTM links properly
Google has a free Campaign URL Builder tool at ga-dev-tools.web.app. Paste your landing page URL, fill in the fields, and it generates the final URL for you. This is the safest method because it handles special character encoding automatically.
A typical UTM URL looks like this: yourwebsite.com/offer?utm_source=meta&utm_medium=cpc&utm_campaign=diwali-sale-2022
For WhatsApp campaigns specifically, I add utm_source=whatsapp and utm_medium=message. This distinguishes WhatsApp traffic from other social channels, which matters because WhatsApp is so important in Indian lead generation.
Organising your UTM naming convention
The biggest mistake teams make is inconsistency. One person writes "Facebook" and another writes "facebook" and Google Analytics treats these as two different sources. Lowercase everything. Use hyphens instead of spaces. Document your naming convention in a shared Google Sheet and stick to it.
Create a master sheet with columns for campaign name, source, medium, content, the final URL, and the start date. Every new campaign gets a row. This takes five minutes to set up and saves hours of confusion later.
Reading the data in Google Analytics
In Universal Analytics, go to Acquisition, then Campaigns, then All Campaigns. In Google Analytics 4, go to Reports, then Acquisition, then Traffic Acquisition, and look at the session source/medium column.
Filter by your campaign name and you will see exactly how many sessions came from that campaign, what the bounce rate was, and whether they converted. This is how you compare Meta ads versus Google Ads versus email for the same campaign period.
Frequently asked questions
Do UTM parameters affect my SEO rankings?
No. Google treats UTM parameters as tracking additions and they do not influence how your page ranks. The parameters are stripped out in reports and do not create duplicate content issues.
Should I use UTM parameters on internal links on my website?
Do not do this. Adding UTMs to internal links resets the session source each time someone clicks, making your traffic attribution completely wrong. UTM parameters are only for links that come from outside your website.
My WhatsApp links shared in groups do not show UTM data. Why?
WhatsApp strips referrer data for privacy reasons in many cases. This means traffic from WhatsApp sometimes appears as "direct" even without UTMs. Adding UTM parameters to any link shared via WhatsApp is still recommended because the parameters in the URL itself survive, even when the referrer header is dropped.