UTM Parameters Explained: Track Every Campaign

The labels that tell your analytics where each visit came from, and how to use them without making a mess.

By Saim Shafi Updated September 2026 3 min read

If you share a link in a newsletter, an ad and a social post, your analytics report will show visits, but not always which of those three sent them. UTM parameters solve this. They are small labels added to the end of a web address that tell analytics tools exactly where a visit came from. This guide explains what each label means, how to name them so your reports stay clean, and the mistakes that quietly spoil the data.

What a UTM link looks like

A UTM link is your normal address followed by a question mark and one or more labels joined with ampersands:

https://example.com/shoes?utm_source=newsletter&utm_medium=email&utm_campaign=spring_sale

Visitors see the same page. Your analytics tool reads the labels and files the visit under the newsletter source, the email medium and the spring_sale campaign. The name “UTM” comes from Urchin Tracking Module, the tracking software that Google bought and turned into Google Analytics. You can build links in seconds with the UTM link builder.

The parameters

ParameterWhat it answersExamples
utm_sourceWhere did the visit come from?newsletter, google, facebook
utm_mediumWhat kind of channel was it?email, cpc, social, banner
utm_campaignWhich promotion was it?spring_sale, launch_2026
utm_idWhich campaign ID from an ad platform?abc123
utm_termWhich paid keyword?running_shoes
utm_contentWhich version of the link?logo_link, text_link

Source, medium and campaign are the three that matter most. Term and content are optional.

Naming rules that keep reports clean

Analytics tools treat the values as text, and text is case-sensitive. “Email”, “email” and “E-mail” become three separate rows in your report. A few habits prevent this:

  • Use lowercase everywhere. The link builder does this by default.
  • Use underscores instead of spaces. A space has to be encoded as %20, which makes links long and ugly.
  • Agree the names once and write them down. A simple table of allowed sources and mediums is enough for a small team.
  • Use common medium names. Google Analytics groups traffic into channels using rules based on the medium, so unusual values, for example “mail” instead of “email”, can leave traffic in an “Unassigned” group.

The mistakes that spoil the data

  • Tagging links inside your own website. When a visitor clicks a UTM link on your own pages, the tool starts a new session and replaces the real source, such as Google, with your internal label. UTM tags are for links that bring people to your site from outside.
  • Putting private information in a tag. The labels are visible in the address bar and in shared links, so never include names, email addresses or anything personal.
  • Forgetting special characters. A value with an ampersand or a question mark breaks the address unless it is percent-encoded. The URL encoder shows how, and the link builder does it for you.
  • Mixing with auto-tagging. Google Ads has its own automatic tagging, so check how your account is set up before adding UTM tags to Google Ads links.

Offline campaigns: posters, flyers and QR codes

UTM links also work for print. Put a campaign link in a QR code on a poster and give it its own medium, such as “poster” or “flyer”, and you can see how many people scanned it and what they did next. Keep the link short, because long links make denser codes that are harder to scan.

Reading the results

In Google Analytics, the source, medium and campaign appear as dimensions in the traffic acquisition reports, and you can compare visits, engagement and conversions for each. Give a campaign enough time before drawing conclusions, and compare like with like. A campaign that sends few visits with a high conversion rate can be more valuable than one that sends many visits that leave at once.

Sources and further reading

Numbers in worked examples are calculated by code and checked by automated tests. How we test.

Press Esc to close