Blog

UTM parameters explained — how to track where your traffic comes from

You share a link on Twitter. You include it in your newsletter. You run an ad on Google. You mention it in a guest post on someone else's blog. A week later, your analytics shows 500 new visitors. But which of those efforts actually brought them?

Without UTM parameters, you are guessing. Your analytics might tell you that traffic came from "twitter.com" or "google.com," but it cannot tell you which specific tweet, which email, or which ad campaign drove the click. You know people arrived, but you do not know why.

UTM parameters solve this. They are small tags you add to URLs that tell your analytics tool exactly where each visitor came from, what type of channel they used, and which campaign sent them. They are free, they work with every analytics tool, and once you understand them, they take about 30 seconds to set up per link.

This guide explains what UTM parameters are, how they work, and how to use them properly. If you have never tagged a URL before, you will know exactly how to do it by the end. If you have used UTM parameters before but your data is messy, you will learn the naming conventions and best practices that keep everything clean.

What UTM parameters are

UTM stands for Urchin Tracking Module. The name comes from Urchin, a web analytics company that Google acquired in 2005 and turned into Google Analytics. The tracking method stuck around because it is simple and universal.

UTM parameters are bits of text you add to the end of a URL after a question mark. They do not change where the link goes — the visitor still lands on the same page. But when your analytics tool sees those parameters in the URL, it records them as metadata about the visit.

A regular URL looks like this:

yoursite.com/pricing

A URL with UTM parameters looks like this:

yoursite.com/pricing?utm_source=twitter&utm_medium=social&utm_campaign=product_launch

The visitor sees the same pricing page either way. But your analytics now knows this visitor came from Twitter, through a social media post, as part of your product launch campaign.

There are five UTM parameters in total. Three are used regularly, and two are situational. All five are optional — you can use as many or as few as you need.

The five UTM parameters

utm_source— identifies where the traffic comes from. This is the name of the website, platform, or publication that sends visitors to you. It answers the question: "Who sent this person?"

Examples: google, twitter, facebook, newsletter, partner_blog, linkedin, reddit, producthunt.

If you run an ad on Google, your source is google. If you post a link on Twitter, your source is twitter. If you send a newsletter through Mailchimp, your source is newsletter (or mailchimp, depending on your convention — more on that later). The source is always the specific place the click originates.

utm_medium— identifies the marketing channel or type of traffic. While source tells you the specific platform, medium tells you the category of marketing activity. It answers: "What kind of channel is this?"

Examples: cpc (cost per click), social, email, referral, display, affiliate, organic_social, paid_social.

The medium groups your sources into buckets. Twitter and Facebook are different sources, but they might both have the medium "social." Google can be a source with the medium "cpc" (when you run ads) or the medium "organic" (when someone finds you through search). The same source can have different mediums depending on how you use it.

utm_campaign— identifies the specific marketing campaign or promotion. This is your own label for the effort that the link belongs to. It answers: "Which campaign is this part of?"

Examples: spring_sale, product_launch, weekly_digest, black_friday_2026, onboarding_sequence, blog_promotion.

Campaign names are entirely up to you. They should be descriptive enough that three months from now you remember what they refer to. "campaign1" is a bad campaign name. "spring_sale_2026" is a good one.

utm_term — identifies the paid search keyword that triggered the ad. This parameter was originally designed for Google Ads campaigns where you bid on specific keywords and want to know which keyword led to each click.

Examples: analytics_tool, website_tracking, best_analytics_software, free_website_analytics.

You generally only use utm_term for paid search. If you are running Google Ads and bidding on the keyword "website analytics," you would set utm_term=website_analytics to track performance at the keyword level. Most other marketing channels do not need this parameter at all. If you are not running paid search, you can safely ignore it.

utm_content — differentiates between similar links within the same campaign. This is the parameter for A/B testing and distinguishing between multiple links that point to the same destination.

Examples: header_link, footer_link, blue_button, green_button, text_link, image_link, variant_a, variant_b.

If your newsletter has two links that both go to your pricing page — one in the header and one in the body — utm_content lets you see which placement gets more clicks. If you are testing two different ad creatives in the same campaign, utm_content tells you which creative performs better. Like utm_term, this parameter is optional and only useful when you need the extra granularity.

Why UTM parameters matter

Without UTM parameters, your marketing attribution is limited to what your analytics tool can figure out on its own. It can read the HTTP referrer header to see which website sent the visitor, but that is about it. And referrer data has significant gaps.

Email clients do not send referrer headers. When someone clicks a link in your email, the visit usually shows up as "direct" traffic — indistinguishable from someone who typed your URL into their browser. Understanding the difference between direct, organic, and referral traffic is key to making sense of your analytics. Without UTM tags, your email marketing is invisible in your analytics.

Social media apps often strip or redirect referrers. Clicks from mobile apps on Instagram, LinkedIn, or TikTok may show up as direct traffic or get lumped together under a generic referrer. You lose the specificity of knowing which platform and which post drove the visit.

Referrer headers cannot tell you which campaign a click belongs to. If you post three different links to Twitter in a week, the referrer for all three is twitter.com. Without utm_campaign, you have no way to tell which post actually generated the traffic.

This matters because marketing decisions without attribution data are just guesses. If you want a broader look at connecting marketing efforts to results, see our guide on how to measure if your marketing is working. You might double down on a channel that looks busy but generates no conversions. You might cut a channel that quietly drives most of your signups. You might spend hours on a campaign that produces nothing while ignoring the one that works. UTM parameters give you the data to make informed decisions instead.

How UTM parameters work technically

There is nothing magical about UTM parameters. They are standard URL query strings — the same mechanism websites use for search filters, page numbers, and form submissions. The only special thing about them is that analytics tools are programmed to look for parameters that start with "utm_" and record their values.

When someone clicks a UTM-tagged link, here is what happens:

1. The browser sends a request to your website with the full URL, including the query string.

2. Your website loads the page normally. The UTM parameters do not affect the page content or behavior — the server simply ignores query parameters it does not use.

3. Your analytics script (whether it is Google Analytics, sourcebeam, Plausible, or any other tool) reads the URL, extracts the UTM parameters, and stores them alongside the pageview data.

4. When you look at your analytics reports, you can filter and group visitors by their UTM values — seeing exactly how many people came from each source, medium, and campaign.

Because UTM parameters are just query strings, they work everywhere. Any URL can have UTM parameters appended to it. Any analytics tool can read them. You do not need special software, plugins, or technical setup. If you have analytics installed on your website, UTM parameters work automatically.

One important detail: UTM parameters are case-sensitive in most analytics tools. "Twitter" and "twitter" and "TWITTER" will show up as three separate sources. This is why naming conventions matter so much, which we will cover shortly.

How to create UTM links

There are three common ways to create UTM-tagged URLs, from the simplest to the most organized.

Method 1: Build them manually. Take your URL, add a question mark at the end, and type your UTM parameters separated by ampersands. This is the fastest approach for a single link:

yoursite.com/pricing?utm_source=twitter&utm_medium=social&utm_campaign=product_launch

If the URL already has a question mark (for existing query parameters), use an ampersand instead of a second question mark:

yoursite.com/pricing?plan=pro&utm_source=twitter&utm_medium=social&utm_campaign=product_launch

Manual creation works fine if you only tag a few links per week. It gets error-prone at scale because a single typo means your data ends up in the wrong bucket.

Method 2: Use Google's Campaign URL Builder. Google provides a free tool at ga-dev-tools.google/ga4/campaign-url-builder that lets you fill in form fields and generates the tagged URL for you. You paste in your website URL, type your source, medium, and campaign values, and it assembles the full URL. This reduces typos and is a good option for teams that tag links occasionally.

Method 3: Use a spreadsheet template. If you tag links regularly, create a spreadsheet with columns for the base URL, source, medium, campaign, term, and content. Add a formula column that concatenates everything into a final tagged URL. This gives you a running log of every tagged link you have ever created, which is useful when you need to audit your naming conventions or debug a tracking issue months later.

A simple formula in Google Sheets looks like this:

=A2&"?utm_source="&B2&"&utm_medium="&C2&"&utm_campaign="&D2

Where A2 is your base URL, B2 is the source, C2 is the medium, and D2 is the campaign. Add columns for term and content if you use them.

Whichever method you choose, the output is the same: a URL with UTM parameters that your analytics tool will automatically capture. sourcebeam automatically captures UTM parameters and shows them in your traffic sources report, so you can see exactly which campaigns drive visits and conversions.

Naming conventions — why consistency matters

Naming conventions are the difference between useful UTM data and a mess. Most UTM tracking problems are not technical — they are consistency problems. Someone on your team tags a link with "Twitter" and someone else uses "twitter" and a third person uses "tw." Now the same source shows up as three separate entries in your analytics, and you have to mentally combine them every time you look at a report.

Here are the rules that prevent this:

Use lowercase for everything. Never capitalize UTM values. "twitter" not "Twitter." "email" not "Email." "spring_sale" not "Spring_Sale." Since most analytics tools treat uppercase and lowercase as different values, mixed case fragments your data.

Use underscores instead of spaces. Spaces in URLs get encoded as "%20" which is ugly and can cause issues with some tools. Use underscores to separate words: "spring_sale" not "spring sale." Some teams prefer hyphens ("spring-sale") — either works, just pick one and stick with it.

Be specific but not verbose. "newsletter" is a better source than "email_list" or "our_weekly_email_newsletter_list." Keep values short enough to scan in a report but specific enough to be unambiguous.

Use consistent terms for the same thing. Decide once whether you call it "newsletter" or "email" as a source. Decide once whether Twitter is "twitter" or "x" or "x_twitter." Document your choices and share them with anyone who creates links.

Include dates or identifiers in campaign names. "weekly_digest" is okay for a recurring campaign, but "weekly_digest_2026_03_26" is better because you can tell exactly which edition drove the traffic. For one-off campaigns, include enough context that future-you understands what it refers to.

A simple UTM naming convention template

Here is a straightforward convention you can adopt today. Adjust it to fit your needs, but use it as a starting point.

utm_source — the platform or sender name in lowercase. Use the most recognizable short name: google, twitter, facebook, linkedin, newsletter, partner_name.

utm_medium — the channel category. Stick to a small set of standard values: email, social, cpc, display, referral, affiliate, organic_social, paid_social. The fewer unique medium values you have, the easier your reports are to read.

utm_campaign — a descriptive label with format: purpose_detail_date. Examples: product_launch_2026_03, spring_sale_2026, weekly_digest_2026_03_26, blog_promo_utm_guide.

utm_term — only for paid search. Use the actual keyword or keyword group you are bidding on: website_analytics, free_tracking_tool.

utm_content — only when you need to differentiate links. Use a short descriptor: header_cta, footer_link, blue_button, image_ad, text_ad.

Here is what this looks like in practice for different channels:

Newsletter link:

?utm_source=newsletter&utm_medium=email&utm_campaign=weekly_digest_2026_03_26

Twitter post:

?utm_source=twitter&utm_medium=social&utm_campaign=blog_promo_utm_guide

Google Ads:

?utm_source=google&utm_medium=cpc&utm_campaign=spring_sale_2026&utm_term=analytics_tool

Partner blog link:

?utm_source=partner_blog_name&utm_medium=referral&utm_campaign=guest_post_march_2026

Common UTM mistakes and how to avoid them

Inconsistent naming. This is the most common mistake by far. You use "twitter" in one link and "Twitter" in another. You use "email" as a medium in January and "Email" in February. Every inconsistency creates a new entry in your reports and makes your data harder to read. The fix: document your conventions, share them with your team, and review your UTM values in your analytics periodically to catch drift.

Tagging internal links. UTM parameters should only be used on links that point to your site from external sources. Never put UTM parameters on links within your own website — for example, a link from your blog post to your pricing page. If you do, the UTM values will overwrite the visitor's original source data. Someone who arrived from Google will suddenly look like they came from "blog_sidebar" because they clicked an internal UTM-tagged link. This corrupts your traffic source data and makes attribution unreliable.

Forgetting to tag links entirely. You spend three hours writing a newsletter and forget to add UTM parameters to the links. All those clicks show up as "direct" traffic in your analytics, and you have no way to attribute them to the email. Make UTM tagging a required step in your publishing checklist for every channel — emails, social posts, ads, partner links, and any other link you control.

Using UTM parameters for organic search. You do not need to tag links for organic search. When someone finds you through Google or Bing organically, your analytics tool automatically identifies the source from the referrer header. UTM parameters are for links you place — not links that others or search engines create.

Making campaign names too vague. "campaign1" or "test" or "promo" tells you nothing when you look at your data three months later. Every campaign name should be specific enough that you can identify the effort without checking a separate document. Include the purpose, the audience or channel, and a date or identifier.

Putting sensitive information in UTM parameters. UTM parameters are visible in the URL bar, in server logs, in analytics reports, and sometimes in shared links. Never include personal data, email addresses, user IDs, or anything confidential in a UTM parameter.

How to read UTM data in your analytics

Once you start tagging links, your analytics will begin collecting UTM data automatically. Here is how to make sense of it.

Start with source and medium together. The most useful view is source/medium combined — for example, "twitter / social" or "google / cpc" or "newsletter / email." This tells you both where traffic came from and what type of channel it was in a single view.

Compare channels by volume and quality. Sort by total visitors to see which channels send the most traffic. Then look at engagement metrics — time on site, pages per visit, bounce rate — to see which channels send the best traffic. A channel that sends 50 engaged visitors often outperforms one that sends 500 visitors who immediately leave.

Drill into campaigns for details. When you see that "newsletter / email" sent 200 visitors this month, drill into the campaign dimension to see which specific emails drove the traffic. Maybe one edition of your weekly digest drove 150 of those 200 visits. That tells you something about which topics resonate with your audience.

Connect UTM data to conversions. The real power of UTM data is connecting it to business outcomes. Which source/medium/campaign combinations lead to signups, purchases, or other conversions? If Twitter social posts drive lots of traffic but zero conversions, and your newsletter drives modest traffic but 20 conversions, you know where to focus your energy.

Look at trends over time. A single week of UTM data is a snapshot. A quarter of UTM data is a trend. Track your top traffic sources month over month to see what is growing and what is declining. This helps you spot opportunities (a channel that is growing fast) and problems (a channel that is drying up) before they become obvious.

UTM best practices by channel

Email campaigns. Tag every link in every email. Use utm_source to identify the type of email (newsletter, onboarding, transactional) or the email platform (mailchimp, convertkit). Set utm_medium to email — always. Use utm_campaign for the specific email or sequence: weekly_digest_2026_03_26, onboarding_day_3, product_update_march. If your email has multiple links to the same page, use utm_content to differentiate them: header_cta, inline_link, footer_cta.

Social media. Tag every link you post on social platforms. The source is the platform name (twitter, linkedin, facebook, reddit). The medium depends on whether it is organic or paid — use "social" or "organic_social" for organic posts, and "paid_social" for promoted or boosted content. The campaign describes what you are promoting: blog_promo_utm_guide, product_launch_2026, feature_announcement.

Paid ads. For Google Ads, use utm_source=google and utm_medium=cpc. For Meta ads, use utm_source=facebook (or instagram) and utm_medium=paid_social. Set utm_campaign to match your ad campaign name so you can easily cross-reference between your ad platform and your analytics. Use utm_term for the keyword (in search ads) and utm_content for the ad variation or creative. Google Ads can auto-tag with a gclid parameter, but adding UTM parameters manually gives you consistent data across all your analytics tools, not just Google's.

Partnerships and guest posts. When a partner, affiliate, or guest blog links to your site, provide them with pre-tagged URLs. Set the source to the partner name (partner_name_blog), the medium to "referral" or "affiliate," and the campaign to the specific collaboration: guest_post_march_2026, affiliate_program, co_marketing_webinar. This way you can measure exactly how much traffic and how many conversions each partnership generates.

Offline and QR codes. If you use QR codes on printed materials, business cards, or event banners, the link behind the QR code should include UTM parameters. Use the source to describe the placement (conference_banner, business_card, flyer), the medium as "qr_code" or "offline," and the campaign for the specific event or material: tech_conference_2026, product_flyer_v2. This is the only way to connect offline marketing to your website analytics.

Putting it all together

UTM parameters are not complicated. They are just labels you attach to links. But used consistently, they transform your understanding of where your traffic comes from and which marketing efforts actually work.

Start with three things today:

1. Pick a naming convention. Use the template from this article or create your own. Write it down somewhere your team can access it.

2. Tag your next five links. The next time you send an email, post on social media, or share a link anywhere, add utm_source, utm_medium, and utm_campaign. It takes 30 seconds.

3. Check your analytics next week. Look at the traffic sources report and see your tagged campaigns showing up with real data. Once you see how much clarity UTM parameters add, you will never want to share an untagged link again.

The difference between a team that uses UTM parameters and one that does not is the difference between knowing and guessing. Both teams do marketing. But only one team knows which marketing actually brings results. Once you have clean UTM data, you can start getting more traffic to your website by doubling down on the channels that work.

sourcebeam automatically captures UTM parameters and shows them alongside your traffic, conversions, and revenue — no setup required. Try it free