# UTM parameters: use them without breaking your search data

You use UTM parameters to label visits from links you placed elsewhere. Do it right and your analytics tell a clear story. Do it wrong and you break attribution and pollute search data.

Updated 2026-09-14 · Source: https://porteur.ai/guides/utm-parameters

## The five UTM parameters and how tools read them

There are five standard UTM parameters: utm_source, utm_medium, utm_campaign, utm_term, utm_content.

- utm_source: who sent the traffic, for example newsletter, twitter, partner-x
- utm_medium: the channel type, for example email, social, referral
- utm_campaign: the label for the push, for example launch-2026-q3
- utm_term: the keyword label you choose, or a segment label, optional
- utm_content: the creative or link variant, optional

GA4 reads these as the session’s source, medium and campaign. Those visits fall into a default channel group based on source or medium values, for example Organic Search when the medium is organic from a search engine referrer. The Landing page report shows sessions and key events by the first page of the session.

PostHog classifies sessions into channel types from the referrer and UTM values. A $pageview carries $current_url, $pathname and $referring_domain. A person record carries initial referrer and initial UTM properties from their first visit. Funnels run from a landing page path to a product event and can be broken down by the initial referring domain.

```text/plain
Example URL you share in a newsletter:
https://yourproduct.com/guides/getting-started?utm_source=newsletter&utm_medium=email&utm_campaign=launch-2026-q3&utm_content=cta-top
```

## When to use UTM parameters, and when never to

Use UTMs on links you place outside your site: newsletters, social posts, partner sites, QR codes, a founder’s profile link. You are labelling that session’s origin.

Never use UTMs on internal links. An internal UTM starts a new session and steals credit from the actual source. It also makes paths and funnels noisy.

Do not add UTMs to links you want counted as referrals. For example, a partner’s blog links to your /pricing page. Leave their link clean so analytics treat it as referral from that domain. If you add UTMs, you overwrite the true referrer and lose the partner view in reports.

```text/html
Bad: internal UTM on your own nav
<a href="/pricing?utm_source=navbar&utm_medium=internal&utm_campaign=summer">Pricing</a>

Good: clean internal link
<a href="/pricing">Pricing</a>
```

## Build UTM links without mistakes

Use Google’s Campaign URL Builder. It is the standard form. Fill in your clean URL and the five fields. Copy the generated link and paste it where you control the placement, not on your own site’s internal links.

1. **Pick the landing page** Choose the clean URL people should land on, for example https://yourproduct.com/guides/getting-started.
2. **Set source, medium, campaign** Use lowercase and hyphens. For a newsletter, source=newsletter, medium=email, campaign=launch-2026-q3.
3. **Add content or term if useful** Use content for link variants, for example cta-top or body-text. Use term for a keyword label you choose, for example onboarding-guide. Both are optional.
4. **Generate and test** Build the URL, click it, and check the page loads. Check your analytics receive a session with the exact source and medium.

Keep values consistent across the team. Lowercase only. No spaces. Hyphens over underscores. Decide a short list of mediums you will use and stick to them. This keeps channel grouping stable in GA4 and neat in PostHog breakdowns.

## A simple naming scheme you can share

Agree this once with your team. Put it in your README so guests follow it. Here is a small scheme that works on a product site.

| Field | Rule | Examples |
| --- | --- | --- |
| utm_source | Channel or site name, lowercase, hyphens | newsletter, twitter, linkedin, indie-hackers, partner-x |
| utm_medium | Channel type from a short list | email, social, referral, cpc, display |
| utm_campaign | Purpose and date or sprint tag | launch-2026-q3, webinar-ai, promo-sept |
| utm_term | Audience or keyword label, optional | founders, onboarding-guide, pricing |
| utm_content | Creative or link variant, optional | cta-top, body-text, image-a, button-b |

What a clean set looks like in reports: source=newsletter, medium=email, campaign=launch-2026-q3, content=cta-top. No duplicates from case or spaces. The same labels appear in GA4’s session source or medium and in PostHog’s initial UTM properties.

## Keep your search data clean

A UTM URL can be indexed if others share it. You do not want /guides/getting-started?utm_source=newsletter in Google’s index. A canonical tag on that page pointing to the clean URL prevents duplicate indexing.

1. **Set a canonical to the clean URL** On /guides/getting-started, add <link rel="canonical" href="https://yourproduct.com/guides/getting-started"> in the head. This covers any UTM version that lands there.
2. **Avoid UTMs on links you want as referrals** If you want to see referring domains in analytics, let their clean links speak. Do not overwrite them with UTMs you provide.
3. **Watch Search Console for duplicates** If you see parametered URLs in Indexing, ensure your canonical is present on the landing template and returns 200.

What a fixed page looks like: /pricing renders a single canonical to https://yourproduct.com/pricing. Whether the visitor arrives with or without UTMs, the canonical is the same clean URL, and internal links are clean.

## Check your work in GA4

You care about two things. First, Organic Search stays clean. Second, your UTM-tagged pushes show as the right source or medium and campaign. Use standard GA4 reports for both checks as of 2026.

1. **Open Engagement, Landing page** Add a secondary dimension for Session source / medium. Your search traffic will show sources like google / organic and bing / organic. Your pushes show as newsletter / email or twitter / social.
2. **Check key events by landing page** Confirm that sessions with utm_source=newsletter land where you expect. Key events replaced conversions in 2024. Mark signups as key events to see them here.
3. **Spot internal UTM mistakes** If you see a spike of sessions with source=navbar or medium=internal, someone added UTMs to internal links. Fix the links and annotate the date.
4. **Use comparisons for attribution views** Switch the attribution model to first click or last click in comparisons to see how key event credit shifts. Data-driven is the default setting.

Sessions and Search Console clicks never match row by row. A click can start no session, a session can trail several clicks, and consent tools drop sessions. Look for trends, not perfect totals across products.

## Join Search Console and analytics by landing page

Search Console shows queries, pages, impressions and clicks. Analytics shows what visitors did after the click. Joined by landing page, they show the pages that win clicks and the pages that convert. You fix the gap where either side is weak.

1. **Link Search Console to GA4** In GA4 Admin, Product links, Search Console. This adds two reports in the Library: Google organic search queries and Google organic search traffic.
2. **Read clicks with sessions** Use the Google organic search traffic report. It joins clicks and impressions to landing pages with Search Console’s lag and anonymisation rules.
3. **Find weak pages** Sort by clicks then scan key events. A page like /guides/getting-started might get clicks but no signups. Improve the call to action or the next step.

UTMs do not touch Organic Search classification. They label your pushes. This split lets you see which landing pages work for search, and which pushes send qualified traffic that later signs up.

## Use product analytics to answer the revenue question

First touch credits the visit that brought the person. Last touch credits the visit before the conversion. For a product site the useful question is which landing pages bring people who later sign up. You need the first landing page joined to a later event to answer it.

1. **Capture landing and signup** Send pageview events with paths. Send product events like signup and activation. Mark signup as a key event in GA4. In PostHog, you will see $pageview and your product events.
2. **Break down by first touch** In PostHog, build a funnel from a landing page path, for example /pricing, to signup. Break it down by initial referring domain. Add initial UTM properties if you want to compare pushes.
3. **Join payments to people** To attribute revenue to search, join the payment event to the person and their first landing page. Build a report from that. It answers what a search click earns.

Rates from consented sessions undercount in the EU when cookies need consent. Treat them as directional. Cookieless and server-side options exist, but compare like with like when you judge a change to a page or a push.

## Common mistakes and quick fixes

- Internal links with UTMs. Fix by removing the parameters and letting the original session continue.
- Uppercase or spaces in values. Fix by standardising to lowercase and hyphens. Update your builder template.
- Inconsistent mediums. Fix by picking a short list and rejecting new ones in review.
- UTM links indexed. Fix by adding a canonical to the clean URL on the landing template.
- Overwriting referrals. Fix by not forcing UTMs onto partners whose referral you want to see.
- Unclear campaigns. Fix by using a readable campaign label with a date or sprint tag, for example launch-2026-q3.

```text/plain
Quick checklist before you ship a link:
[ ] Clean landing page URL chosen
[ ] utm_source set to the channel or site name
[ ] utm_medium set from your short list
[ ] utm_campaign readable and dated
[ ] utm_content or utm_term only if useful
[ ] Values are lowercase, hyphenated, no spaces
[ ] Link tested and page loads fast
[ ] No internal UTMs added on your site
```

## Questions

### What are the 5 UTM parameters?

They are utm_source, utm_medium, utm_campaign, utm_term and utm_content. Source, medium and campaign label the session’s origin. Term and content are optional labels for keyword or creative variants.

### What does UTM stand for?

UTM is the common name for these tracking parameters. In practice, you only need to know the five names and how your analytics read them into source, medium and campaign.

### How do I set up UTM parameters?

Pick the landing page. Use Google’s Campaign URL Builder to set source, medium and campaign. Keep values lowercase with hyphens. Add content or term only if they will answer a real question later. Share the generated URL in the channel you control.

### How many UTM parameters should I use?

Use three as your default: source, medium and campaign. Add content when you truly compare link variants. Add term if you have a clear label that will be analysed. More fields without a plan slow you down and clutter reports.

### Do UTM parameters affect SEO?

They should not, if your landing page has a canonical to the clean URL. A UTM link can be shared and crawled, so the canonical prevents duplicate URLs from sitting in the index. Never add UTMs to internal links, which also keeps crawl paths clean.

### What if someone shares my UTM link on their site?

It is fine. Your analytics still read the UTM values. Add a canonical on the landing page to the clean URL so search treats all variants as the same page. If you want that site to count as a referral, give them a clean link instead of a UTM one.

## Read next

- [Canonical tags: what they do and the mistakes that cost rankings](https://porteur.ai/guides/canonical-tag): What a canonical tag does, when to use one, the mistakes that cost rankings, and how to check and fix canonicals on a small site.
- [The GA4 landing page report: the pages that bring people, and what they do](https://porteur.ai/guides/ga4-landing-page-report): Find the GA4 landing page report, filter to Organic Search, compare key event rates, avoid thresholds and sampling traps, and turn it into a fix list.
- [Organic search traffic in GA4: where it is and how to read it](https://porteur.ai/guides/organic-search-traffic-in-ga4): See organic search in GA4, read source and medium, landings and key events, link Search Console, and build a one‑screen monthly view that you can act on.
- [Linking Search Console to GA4: what you get and what you do not](https://porteur.ai/guides/link-search-console-to-google-analytics): Link Search Console to GA4, find the two reports, read queries next to landing pages, and know why clicks and sessions never match.
- [PostHog for search traffic: from a landing page to the signup](https://porteur.ai/guides/posthog-for-search-traffic): Set up PostHog to see organic search landings, funnels to signup, and monthly answers from landing page to product event, cleanly tied to referrers and UTMs.
- [URL parameters](https://porteur.ai/glossary/url-parameters): URL parameters are key=value after a question mark. Handle them to avoid duplicate pages, index bloat and wasted crawl, and to keep clean rankings.

Want to see if your landing pages and pushes play nicely with search, and where rivals win clicks, from your URL in about thirty seconds, free, with three findings shown whole? Try Porteur’s check. Free check: https://porteur.ai/
