What Are UTM Parameters and How Do They Work?
The complete reference for UTM tracking — what each parameter means, naming conventions that keep reports clean, and the mistakes that break campaign attribution.
TL;DR — Key Points
What Are UTM Parameters?
UTM parameters are short tags that you append to the end of any URL before sharing it. When a user clicks that URL and lands on your website, your analytics tool reads those tags and records exactly where the visitor came from, which campaign brought them, and which specific link or ad they clicked. Without UTM parameters, the majority of your marketing traffic appears as "Direct" or "Unassigned" in Google Analytics — impossible to attribute to any specific campaign.
The name comes from Urchin Tracking Module — Urchin was a web analytics company acquired by Google in 2005, which became Google Analytics. The UTM parameter format was Urchin's invention and has since become the universal standard for campaign tracking across every analytics platform including GA4, Mixpanel, Amplitude, Adobe Analytics, and Kissmetrics.
A UTM-tagged URL looks like this: https://yoursite.com/products?utm_source=newsletter&utm_medium=email&utm_campaign=diwali_sale_2024&utm_content=header_cta. Everything after the question mark is invisible to the user experience — the page loads normally — but your analytics platform reads every tag and records the attribution data for that session.
There are five UTM parameters: three required (source, medium, campaign) and two optional (term, content). You do not need all five for every campaign — use what makes sense. Email campaigns rarely need utm_term. Paid search campaigns should always include utm_term for keyword-level data.
UTM Parameter Reference
Here is the complete reference for all five UTM parameters — what each one means, when it is required, and what values to use:
| Parameter | Required | Purpose | Example Values |
|---|---|---|---|
| utm_source | Required | Traffic origin | google, newsletter, facebook, linkedin, bing, instagram, twitter |
| utm_medium | Required | Marketing channel | cpc, email, social, display, affiliate, referral, banner |
| utm_campaign | Required | Campaign name | summer_sale_2024, product_launch, brand_awareness_q2 |
| utm_term | Optional | Paid keyword | running+shoes, project+management+tool, best+crm+india |
| utm_content | Optional | Ad or link variant | header_cta, button_green, logo_link, text_link_footer |
How UTM Parameters Work in Google Analytics 4
When a user arrives on your site via a UTM-tagged URL, GA4 reads the parameter values from the URL and associates them with the session. These values become the session's traffic source dimensions: Session source (utm_source), Session medium (utm_medium), Session campaign (utm_campaign), Session keyword (utm_term), and Session content (utm_content).
GA4 uses these dimensions to populate the Traffic Acquisition report and to assign sessions to its default channel groupings. A session with utm_medium=email is grouped into the "Email" channel. A session with utm_medium=cpc and utm_source=google goes into "Paid Search". A session with utm_medium=social goes into "Organic Social" unless it comes from a paid ad source, in which case it should use utm_medium=paid_social to land in "Paid Social".
One critical behaviour to understand: UTM parameters create a new session in GA4. If a user is already on your site and clicks a UTM-tagged internal link, GA4 starts a new session and overwrites the original attribution. This is why you must never add UTM parameters to links within your own website. Only use them for traffic coming from external sources.
GA4 also captures UTM data as user-scoped dimensions when using the "first user" attribution model. This lets you see which campaign first acquired a user, regardless of what channel they come through on subsequent visits. Use Reports → Acquisition → User Acquisition to see first-touch attribution data.
Naming Conventions That Keep Reports Clean
Poor UTM naming conventions are the single biggest source of messy, unusable analytics data. A team of five marketers using different case styles and medium names can produce a report with 30 rows for what should be 3 channels. These rules prevent that:
| Rule | Good Example | Bad Example | Why It Matters |
|---|---|---|---|
| Always use lowercase | utm_source=newsletter | utm_source=Newsletter | Analytics treats 'Email' and 'email' as different sources — mixing case fragments reports. |
| Use underscores, not spaces | utm_campaign=summer_sale_2024 | utm_campaign=summer sale 2024 | Spaces become %20 in URLs, making reports hard to read. |
| Be consistent with medium values | utm_medium=email (always) | utm_medium=email, e-mail, Email, mail (all used) | Inconsistency creates separate rows in reports for the same channel. |
| Use hyphens in source names if needed | utm_source=google-ads | utm_source=google ads | Hyphens are URL-safe and readable. Avoid spaces in any parameter value. |
| Include the year or quarter in campaign names | utm_campaign=diwali_sale_2024 | utm_campaign=diwali_sale | Without the year, you cannot compare the same campaign across years in reports. |
| Never add UTM to internal links | Internal navigation: /products (no UTM) | Internal link: /products?utm_source=homepage | Adding UTM to internal links resets the session and overwrites the original traffic source in GA4. |
UTM Values by Channel
Here are the recommended UTM parameter values for the most common marketing channels, following GA4's default channel grouping definitions:
| Channel | source | medium | campaign | content |
|---|---|---|---|---|
| Email newsletter | newsletter | weekly_digest_may2024 | header_cta | |
| Google paid search | cpc | product_launch_q2 | — | |
| Facebook ad | social | brand_awareness_2024 | video_ad_v2 | |
| Instagram story | social | summer_collection | story_swipe_up | |
| LinkedIn sponsored | cpc | saas_b2b_leads | carousel_ad | |
| Display banner | display | retargeting_q4 | banner_300x250 | |
| Affiliate partner | techblog_india | affiliate | partner_review | — |
| WhatsApp broadcast | messaging | festive_offers_2024 | — |
How to Decide Which Parameters to Use
Apply the following logic for common campaign scenarios:
You are sharing a link in an email campaign
→ Add utm_source=newsletter (or your ESP name), utm_medium=email, utm_campaign=your_campaign_name. Add utm_content if you have multiple links in the same email.
You are running Google Ads and want keyword-level tracking
→ Use utm_source=google, utm_medium=cpc, utm_campaign=campaign_name, utm_term={keyword} (Google will auto-populate the keyword with ValueTrack).
You are posting the same link in multiple social media posts
→ Use different utm_content values to distinguish which post drove traffic: utm_content=instagram_story vs utm_content=instagram_feed_post.
You want to track traffic from a QR code on print material
→ Build a UTM-tagged URL first, then generate the QR code from that URL. Use utm_source=print_flyer, utm_medium=qr_code, utm_campaign=campaign_name.
You are sharing links inside your own app or website
→ Do NOT add UTM parameters to internal links. This resets sessions in GA4 and overwrites the original traffic source. Internal navigation should have no UTM tags.
You want to track a partner blog post or press mention
→ Provide the partner a pre-built UTM URL: utm_source=partner_name, utm_medium=referral, utm_campaign=pr_outreach_2024.
UTM Values for Real Campaign Scenarios
Recommended UTM parameter values for common Indian and international marketing scenarios:
| Campaign Scenario | Recommended UTM Values |
|---|---|
| Diwali sale email to 50,000 subscribers | source=newsletter, medium=email, campaign=diwali_sale_2024, content=header_cta |
| Google Search ad for your SaaS product | source=google, medium=cpc, campaign=saas_india_q4, term={keyword} |
| Instagram Reel with link in bio | source=instagram, medium=social, campaign=product_launch, content=reel_oct_week3 |
| QR code on a conference brochure | source=conference_name, medium=qr_code, campaign=event_2024 |
| Affiliate link on a tech review site | source=techreviewer_site, medium=affiliate, campaign=review_partnership |
| WhatsApp Business broadcast message | source=whatsapp, medium=messaging, campaign=festive_sale_2024 |
| LinkedIn InMail campaign | source=linkedin, medium=email, campaign=b2b_outreach_q1 |
| Retargeting display banner on Google | source=google, medium=display, campaign=retargeting_q4, content=banner_728x90 |
Frequently Asked Questions
Are UTM parameters case-sensitive?
Yes, in Google Analytics 4 and most analytics platforms, UTM parameter values are case-sensitive. 'Email', 'email', and 'EMAIL' appear as three separate sources in your reports. This is the most common cause of fragmented campaign data. Establish a strict convention of lowercase-only across your team and enforce it with a UTM builder that normalises case automatically.
Do UTM parameters affect SEO?
No, UTM parameters do not affect your search engine rankings. They are stripped from Google's index using canonical tags or robots.txt, and Google understands they are tracking parameters. However, you should set up URL parameter handling in Google Search Console to tell Google to ignore UTM parameters when crawling, preventing duplicate content issues from pages indexed with and without UTM tags.
What is the difference between utm_source and utm_medium?
Think of utm_source as the specific publisher or platform that sent the traffic, and utm_medium as the channel type. For a Google paid search ad: source=google (the specific platform), medium=cpc (the channel type). For a newsletter: source=mailchimp (or your newsletter name), medium=email (the channel type). Source answers 'who sent this traffic?' and medium answers 'what kind of channel was it?'.
What should I use for utm_medium for social media?
Use 'social' as the medium for organic social media posts across all platforms. For paid social ads (boosted posts, Facebook Ads, LinkedIn Sponsored), use 'cpc' or 'paid_social' to distinguish paid from organic. Keeping organic social as 'social' and paid as 'cpc' ensures GA4's default channel groupings classify traffic correctly in your reports.
Can I use UTM parameters with WhatsApp and SMS?
Yes. WhatsApp Business broadcasts and SMS messages can carry UTM-tagged links. The link recipient clicks the URL which includes the UTM parameters, and GA4 records the visit with those attribution values. Use utm_medium=messaging or utm_medium=sms to distinguish these channels. WhatsApp traffic without UTM tags typically appears as Direct traffic in analytics, making it impossible to measure without tagging.
What happens if I forget to add UTM parameters to a campaign link?
Traffic from untagged links is attributed to 'Direct' in GA4 or falls into the 'Unassigned' channel group, making it impossible to measure the campaign's contribution. If you send 50,000 emails without UTM parameters and 2,000 people click through and convert, those conversions will appear to have come from nowhere — no campaign credit, no channel attribution, no way to measure ROI. Always build UTM-tagged links before any campaign launch.
How do I view UTM data in Google Analytics 4?
In GA4, go to Reports → Acquisition → Traffic Acquisition. The default dimension is 'Session default channel group'. Change the dimension to 'Session source/medium' to see your UTM source and medium combinations. For campaign-level data, use 'Session campaign'. You can also create custom explorations in the Explore section with dimensions like First user source, Session source, Session campaign, and Session manual term for keyword-level analysis.
Should I use UTM parameters on every link I share?
You should add UTM parameters to any link you share outside your own website — in emails, social posts, ads, QR codes, partner sites, and press mentions. You should never add UTM parameters to links within your own website (internal navigation), as this overwrites the original session attribution and makes your acquisition data inaccurate. A good rule: if the link crosses a domain boundary or leaves your site, tag it.
Related Concepts
Related Tools
UTM Builder
Build UTM-tagged campaign URLs with source, medium, campaign, term, and content. One-click copy.
QR Code Generator
Turn your UTM-tagged URL into a scannable QR code for print, events, and offline campaigns.
URL Encoder & Decoder
Encode and decode URL components — useful when UTM values contain special characters.
Google SERP Simulator
Preview how your page title and meta description appear in Google search results.