What this tool does
This UTM builder assembles a campaign URL from a landing page and the five utm_ parameters, and
it does the two things a text editor will not do for you: it encodes the values properly, and it
leaves the rest of the URL alone. A query string that was already there stays, a #fragment stays
at the end where it belongs, and a utm_source that was already in the link is replaced rather
than duplicated.
Everything happens in the page you are reading — no link is shortened, logged or sent anywhere.
How to use it
- Paste the landing page URL. If you leave the scheme off,
https://is assumed and you are told. - Fill in source, medium and campaign. The medium field suggests the values reports group by.
- Add term or content only if you will read those numbers separately.
- Keep Force lower case on unless you have a reason not to, and copy the result.
The three fields, in plain terms
The names are older than most of the people using them, and the labels do not help. What each one means in a report:
utm_source— the specific place the click came from:newsletter,linkedin,partner-blog.utm_medium— the kind of link, from a small fixed list. This is the one people get wrong.utm_campaign— the thing you are running, and the label you will search for in six months.
Medium is a closed vocabulary because its whole job is grouping. If half your links say social
and the other half say Social Media, social-post and linkedin, the channel report stops being
a summary of anything. The short list the tool suggests covers almost everything:
| Where the link lives | utm_source | utm_medium |
|---|---|---|
| Your monthly newsletter | newsletter | email |
| A post on your LinkedIn page | linkedin | social |
| A Google Ads text ad | google | cpc |
| A banner on a trade publication | trade-weekly | display |
| A partner writing about you | partner-blog | referral |
| An affiliate's tracked link | affiliate-name | affiliate |
| A printed flyer with a QR code | spring-flyer | offline |
The last row is the exception worth making: offline media has no referrer at all, and inventing a medium for it is better than letting the visit arrive as direct traffic.
Case sensitivity is not a style question
GA4 stores parameter values exactly as they arrive. Email and email are two mediums, and no
setting in the interface merges them after the fact — you would be editing history in a data
warehouse, not in the reports. The cheap fix is a rule everyone follows: lower case, hyphens
between words, no spaces. The switch in the tool enforces it on the way out.
Spaces are the other avoidable mess. They survive as %20, which is valid but unreadable, and they
break the moment somebody pastes the link into software that stops at the first space.
Never tag an internal link
This deserves its own heading because it is the mistake that quietly ruins attribution. Campaign parameters are how analytics recognises the start of a visit. Put them on a link from your home page to your pricing page and you have told GA4 that a brand new session began there, from a new source — so the original channel, the one that actually earned the visit, loses the conversion.
Use an internal promotion measurement instead, or nothing at all. The place to put tagged links is anywhere the click starts outside your domain.
Keep tagged URLs out of your site's plumbing
A campaign URL is for humans arriving once, not for the files that describe your site. Do not list tagged URLs in a sitemap — the sitemap generator has the rule and the reason — and do not use one as the target of an hreflang annotation. Both places want the canonical URL, and a tagged duplicate in either is a signal you have to spend effort undoing later.