# UTM (Urchin Tracking Module)

> A UTM is a tag appended to a link so your analytics can name the source, medium, and campaign that sent each visit.

- Type: Calculator: URL tags that reveal where traffic came from
- Tags: Metrics
- Growth levers: Acquisition (primary)
- ~894 words

---

**UTM link builder.**

A UTM (Urchin Tracking Module) is a set of query parameters you add to the end of a link so analytics tools can attribute each visit to a named source, medium, and campaign. The name comes from Urchin, the web-stats company Google bought in 2005 and turned into Google Analytics. Paste your destination URL into the builder above, fill in where the link is going to live, and copy the tagged version into your email, ad, or social post.

## The five UTM parameters

Every UTM link is built from up to five parameters. The first three are the ones your reports group by, so treat them as required. The last two are optional and most teams skip them until a campaign actually needs the extra detail.

- **utm_source:** where the link lives. The platform or property that sent the visit, like newsletter, google, or linkedin.
- **utm_medium:** the type of traffic, like email, cpc, social, or referral. This is the column GA groups channels by, so keep the values short and consistent.
- **utm_campaign:** the specific push the link belongs to, like launch_2026 or q3_webinar.
- **utm_term:** the paid keyword you bid on. Optional, and only useful for paid search.
- **utm_content:** which version of a link a click came from when one campaign has several, like header_cta versus footer_link. Optional.

## How a UTM link is built

There is no math here. The builder takes your destination URL and appends each filled field as a query parameter, joining them with & and skipping anything you left blank.

> **Formula:** tagged URL = base URL + ?utm_source=<source>&utm_medium=<medium>&utm_campaign=<campaign> (then optional &utm_term and &utm_content)

Worked example. Say you are emailing your newsletter list a link to your pricing page for a 2026 launch, and the button sits in the header. Put https://productgrowth.blog/pricing as the URL, newsletter as the source, email as the medium, launch_2026 as the campaign, and header_cta as the content. Leave term blank. The builder returns:

`https://productgrowth.blog/pricing?utm_source=newsletter&utm_medium=email&utm_campaign=launch_2026&utm_content=header_cta`

Notice the term field is gone from the output because you left it empty, and the parameters land in the order you filled them. Both are on purpose.

## How to use this tool

1. **Paste the full destination URL,** including https://. If you drop the scheme the builder cannot parse the link and the output stays blank.
2. **Fill source, medium, and campaign.** These three answer where the link lives, what kind of traffic it is, and which push it belongs to.
3. **Add term or content only if you need them.** Use content to tell two links in the same campaign apart, and term for a paid search keyword.
4. **Copy the tagged URL** and drop it wherever the click will happen. Hit Copy URL, or select the field by hand if your browser blocks the clipboard.

Once the link is live, your analytics tool reads those parameters back and files every session under the source, medium, and campaign you set. In Google Analytics 4 you find them under Traffic acquisition; in PostHog they land as properties on the pageview. The tagged URL is the input. The traffic report is the payoff.

## Conventions that keep your reports clean

UTM values are case sensitive and free text, so Email, email, and E-mail become three separate rows in your report. A few habits keep that from happening:

- Lowercase everything
- Use underscores or hyphens instead of spaces, and pick one and stick to it
- Keep medium to a short, fixed list (email, cpc, social, referral, affiliate) so channels group cleanly
- Never tag internal links between pages on your own site, which overwrites the original source and hides where the visitor really came from
- Write the values down in a shared sheet so the whole team spells campaign names the same way

Once your campaigns are tagged, the next questions are about what that traffic does. See how many visitors turn into customers with the [website traffic calculator](https://www.productgrowth.blog/calculators/website-traffic), measure the share who take action with the [conversion rate calculator](https://www.productgrowth.blog/calculators/conversion-rate), and price each campaign's leads with the [cost per lead calculator](https://www.productgrowth.blog/calculators/cost-per-lead-cpl).

#### What is a good UTM (Urchin Tracking Module)?

A good UTM is consistent, not clever. There is no benchmark number to hit; the quality test is whether your reports stay clean. Always set source, medium, and campaign, keep every value lowercase, use a fixed short list for medium, and never spell the same campaign two ways. A UTM that follows the same naming rules as every other link on your team is worth more than a perfectly descriptive one nobody else can match.

#### What does UTM stand for?

UTM stands for Urchin Tracking Module. Urchin was a web-analytics company Google acquired in 2005 and rebuilt into Google Analytics, and the parameter names stuck around long after the product was renamed.

#### Which UTM parameters are required?

None are technically required by the analytics tools, but utm_source, utm_medium, and utm_campaign are the three your reports group by, so treat them as mandatory. utm_term and utm_content are optional and mostly used for paid search keywords and for telling apart several links inside one campaign.

#### Do UTM parameters hurt SEO?

Not when you use them the way they are meant to be used. Tag external links pointing at your site, like ads, emails, and social posts, and leave your internal navigation untagged. Tagging internal links can create duplicate URLs for search engines to crawl and overwrites the original traffic source in your analytics.

---

All posts: https://www.productgrowth.blog/archive · Site: https://www.productgrowth.blog
