UTM parameters explained: track where your visitors come from

If you share a link in a newsletter, a social post and a poster QR code, your reports will struggle to tell which one brought each visitor. UTM parameters solve this by adding a few labels to the end of a link. When someone clicks, your analytics tool reads the labels and files the visit under the right source, medium and campaign. They are simple to add, but they are easy to use badly, and messy labels make reports hard to trust. This guide explains the five parameters, gives example links, sets out a naming system you can stick to, shows how to build and check a tagged link, and lists the mistakes to avoid.

What UTM parameters are

A UTM parameter is a short piece of text added to a web address after a question mark. The name UTM comes from an older analytics company, but the idea is now used by most analytics tools. The parameters do not change the page the visitor sees. They are read by the tool and stored with the visit.

They only help when you control the link. If someone finds your page through a search engine, you do not get UTM labels, because the search engine's address is the source. Use them for links you place yourself: emails, adverts, social posts, partner sites, QR codes and links in documents.

Used well, they let you answer questions such as which of three newsletters brought the most sign-ups, or whether a printed leaflet is worth the cost.

The five parameters

utm_source says where the link was placed: the name of the site, newsletter or publication, such as newsletter, facebook or partner_blog. utm_medium says the type of channel: email, social, cpc for pay-per-click adverts, referral, print or qr. utm_campaign names the campaign or promotion, such as spring_sale_2027.

Two more are optional. utm_term was designed for the keywords behind search adverts. utm_content tells apart different links or versions in the same campaign, such as header_button and footer_link, or version_a and version_b.

The first three are the ones to fill in every time. Without a source, medium and campaign, reports group the visit under unhelpful labels or leave it as direct traffic.

Start with the full address of the page, add a question mark, then add each parameter as name=value, separated by ampersands. For example: https://example.com/offer?utm_source=newsletter&utm_medium=email&utm_campaign=spring_sale_2027.

If the address already has a question mark, because it has other parameters, add yours after an ampersand instead of a second question mark. For example: https://example.com/shop?category=lamps&utm_source=poster&utm_medium=qr&utm_campaign=autumn_launch.

Spaces and special characters need encoding. A space is written as %20 or as a plus sign, and an ampersand inside a value would break the link. The safer approach is to use only lowercase letters, numbers, underscores and hyphens in your values, so there is nothing to encode.

A naming system that keeps reports clean

Analytics tools treat Newsletter, newsletter and news-letter as three different sources. Choose lowercase for everything and stick to it. Decide on a separator, such as underscores, and use it every time.

Keep a shared list of allowed values for source and medium. A short list works well: email, social, cpc, referral, print, qr, display. For campaigns, use a pattern such as name_month_year, for example summer_sale_2027 or cookbook_launch_oct26. When you can read a campaign name in a year's time and still know what it was, the pattern is working.

Use a simple spreadsheet to log every tagged link with its date, owner, destination and parameters. This avoids duplicates and lets a new colleague find what was used. It takes seconds per link and saves hours when reports are wrong.

Worked examples

A monthly email newsletter promotes a guide. The button link is https://example.com/guides/paint/?utm_source=newsletter&utm_medium=email&utm_campaign=oct_2026_issue&utm_content=main_button. A text link lower down uses utm_content=footer_link. In reports, you can compare the two links in the same email.

A shop prints a QR code on a flyer for a local event. The link uses utm_source=flyer, utm_medium=qr and utm_campaign=village_fair_2027. When visitors scan the code, they are counted under the flyer, not under direct traffic.

A partner blog agrees to link to your guide. You give them a link with utm_source=partner_blog, utm_medium=referral and utm_campaign=guest_post_oct26. If the partner writes a second post, you change only the campaign. This lets you see the effect of each post on its own.

Printed material, QR codes and offline campaigns

Links printed on leaflets, posters and packaging cannot be edited once they are out, so plan them carefully. A long tagged address is awkward to type, so print it as a QR code or point to a short address that redirects to the full tagged one. Test the code with a phone before sending anything to print.

Give each placement its own label. If you put the same poster in three shops, use a different utm_content value for each, such as shop_high_street and shop_station. Then you can tell which location sends people, instead of knowing only that the poster worked.

Remember that offline campaigns bring fewer measurable visits than most people hope, because many readers will search for you by name instead of scanning the code. Treat the tagged visits as a lower bound, and compare the campaign period with a normal period to see the wider effect.

Mistakes to avoid

Do not put UTM parameters on links inside your own site. When a visitor clicks an internal link with a UTM, many tools start a new session and replace the original source, which makes your best traffic sources look as if they came from your own menu.

Do not put personal information in a UTM value. Addresses are stored in reports, logs and browser history, and people copy and share them. Never include email addresses, names or account numbers. If you need to match clicks to a person, use a different method that respects privacy rules.

Avoid very long values, uppercase and spaces, and do not reuse one campaign name for unrelated activity. Do not forget that tagged links get copied. If someone shares the link from your email on social media, those visits are counted as your email. Use short links or link-hiding only where it is acceptable and clear.

Checking and using the data

Before sending a campaign, click the tagged link yourself and confirm the page loads correctly. Then check in your analytics tool, in the real-time view, that the visit appears under the source and medium you set. A URL parser can list the parameters in a link so you can check for typos.

After a few weeks, look at the results by campaign and by content label. Compare visitors, but also what they do on the site: sign-ups, purchases, or time on the page. A source that sends few visitors but many customers is worth more than a busy one that sends none.

Keep a note of what you learn and review your naming list every few months. Remove values you never use and merge duplicates. A small, consistent set of labels is worth far more than lots of detailed ones that nobody can compare.

Tools mentioned in this guide

Frequently asked questions

Which UTM parameters are required?

In practice, use utm_source, utm_medium and utm_campaign every time. utm_term and utm_content are optional.

Are UTM values case sensitive?

Yes in most tools. Newsletter and newsletter appear as different sources, so stick to lowercase.

Should I use UTM links inside my own website?

No. They can start new sessions and overwrite the real source of the visit. Use them only on links you place on other sites, emails, adverts and printed material.

Do UTM parameters change the page content?

No. The page is the same for the visitor. The parameters are only read by analytics tools.

Can I put an email address in a UTM value?

No. Addresses are stored in logs and can be copied and shared. Keep personal information out of links.