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.
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)
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.
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.
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.
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.
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.