smolanalytics
log inStart free
tools · free

UTM builder: tag campaign links correctly

Add UTM parameters to any link with proper URL encoding, then copy the tagged URL. Free, runs in your browser, and nothing you type is sent anywhere.

A UTM builder is a tool that appends UTM parameters to a link so your analytics can tell exactly which campaign, channel, and creative sent each visitor. UTM parameters are five tags you add to a URL's query string: utm_source (where the click came from, like newsletter or twitter), utm_medium (the channel, like email or cpc), utm_campaign (the campaign name, like spring-launch), and the optional utm_term (paid-search keyword) and utm_content (which link or variant). The builder writes them with correct URL encoding, so a space becomes %20 and an ampersand never breaks the query string, and it preserves any parameters the URL already had. The result is one tagged link you paste into an email, ad, or social post. When someone clicks it, an analytics tool reads the UTMs off the address and attributes the session to that source and medium, which is how you know which campaign actually drove signups. smolanalytics (smolanalytics.com) captures UTMs automatically from one snippet and rolls them into channels, no extra setup.

the page you want the campaign to land on. existing query params are kept.

where the click came from (required)

the marketing channel (required)

the campaign name (required)

paid-search keyword (optional)

which link or variant (optional)

tagged url
https://example.com/pricing

heads up: utm_source, utm_medium, utm_campaign are still empty. most analytics tools need source, medium, and campaign to attribute a channel.

your inputs stay in the browser. the link is built locally with the standard URL parser, so encoding is always correct and any params the url already had are kept.

the five tags

What does each UTM parameter mean?

A UTM link is your destination URL plus up to five query parameters. Three carry the attribution that every analytics tool reads; two are optional detail you add when you need it.

utm_sourcerequired
Where the click came from: the specific site, product, or list. Values look like newsletter, twitter, google, or partner-blog. This is the single most useful tag, because it names the exact origin rather than a broad bucket.
utm_mediumrequired
The marketing channel or method the source belongs to: email, social, cpc (paid search), organic, referral, affiliate. Medium is how your report groups many sources into one channel, so keep the vocabulary small and fixed.
utm_campaignrequired
The name of the specific push this link belongs to, like spring-launch or black-friday-2026. It ties every link across sources and mediums back to one initiative, so you can measure the whole campaign, not just one email.
utm_termoptional
Originally the paid-search keyword you bid on, like product-analytics. Most teams only use it for search ads. Leave it empty for email and social, where there is no keyword to record.
utm_contentoptional
Which link or creative variant was clicked when several point to the same page: top-banner vs footer-link, or variant-a vs variant-b for an A/B test. It is how you tell two clicks apart when source, medium, and campaign are identical.

source, medium, and campaign are what turn a raw click into an attributed channel. See attribution for how those signals map a visit to the thing that earned it.

conventions

How should I name UTM values?

UTM values are matched as plain, case-sensitive text. There is no smart normalization, so Email, email, and E-mail become three separate mediums in your report. A tiny bit of discipline keeps your channels clean.

  • ·Lowercase everything. Never rely on capitalization to carry meaning; it only creates duplicate channels.
  • ·Use dashes, not spaces. Write spring-launch, not Spring Launch. Spaces encode to %20 and read badly in a report.
  • ·Be consistent. Pick one fixed vocabulary for source and medium (email, social, cpc, referral) and reuse it exactly on every link, forever. This is the single rule that decides whether your channel report is usable.
  • ·Keep medium small. Source can be many specific values; medium should be a short, closed list so many sources roll up into a handful of channels.
in practice

How do analytics tools read UTMs?

When a visitor clicks a tagged link, the analytics script on the landing page reads the utm_* parameters off the address on the first pageview, stores them with that session, and groups the visit under its source and medium as a channel. From then on, the campaign that earned the click is stitched to everything that visitor does next.

smolanalytics captures UTMs automatically from one snippet, no extra configuration. It rolls them into referrers and channels alongside the rest of your web and product analytics, and it also tracks AI-assistant referrals (chatgpt.com, claude.ai, perplexity.ai) as their own channel. You then ask "which campaign drove the most signups last week?" in plain English from the dashboard bar or your own Cursor / Claude Code over MCP, and the answer is computed from the deterministic report, never generated by an LLM.

UTMs feed attribution, but they are only the click side. Pair them with event tracking so you can follow a tagged visitor all the way to signup and revenue, and see every feature for the full picture.

Common questions

What is a UTM builder?
A UTM builder is a tool that adds UTM parameters to a link so your analytics can attribute each visitor to the campaign, channel, and creative that sent them. You enter the destination URL plus utm_source, utm_medium, utm_campaign, and optionally utm_term and utm_content, and it returns one correctly encoded, ready-to-share URL.
What do utm_source, utm_medium, and utm_campaign mean?
utm_source is where the click came from (newsletter, twitter, google), utm_medium is the channel or method (email, social, cpc, referral), and utm_campaign is the name of the specific push the link belongs to (spring-launch). Those three are the ones every analytics tool needs to attribute a channel. utm_term (paid-search keyword) and utm_content (which link or variant) are optional.
How should I name UTM values?
Use lowercase, separate words with dashes (spring-launch, not Spring Launch), and be consistent across every link. UTM values are case-sensitive and matched as plain text, so Email, email, and E-mail become three different mediums in your report. Pick a fixed vocabulary for source and medium and reuse it exactly, or your channels will splinter into near-duplicates.
Does adding UTMs break my existing URL parameters?
No. A correct builder starts from the URL you paste and only sets the utm_* keys, so any parameters already on the link (like ?ref=partner or a product id) are preserved, and the whole query string is URL-encoded so spaces and special characters do not break it. This builder does exactly that, in your browser, and sends nothing anywhere.
How do analytics tools read UTMs?
When someone clicks a tagged link, the analytics script on the landing page reads the utm_* parameters straight off the address bar on the first pageview, stores them with the session, and groups the visit under that source and medium as a channel. smolanalytics captures UTMs automatically from one snippet, no extra config, and rolls them into referrers and channels so you can see which campaign drove signups.
Start the 14-day trial
no credit card · or self-host free forever (MIT)

keep reading