UTM Link Builder
Must include https://. An existing query string is preserved.
https://example.com/pricing?utm_source=newsletter&utm_medium=email&utm_campaign=spring_launch
The UTM link builder adds campaign parameters to a URL and enforces the three that analytics actually requires. Miss any of source, medium or campaign and the visit is usually attributed to direct traffic instead, which is the single most common reason campaign reporting shows nothing.
How it works
- utm_source: where the traffic comes from, newsletter, google, partner-site.
- utm_medium: the channel type, email, cpc, social, referral.
- utm_campaign: which campaign it belongs to, spring_launch.
- utm_term: the paid search keyword. Optional, and only meaningful for paid search.
- utm_content: distinguishes two links to the same place in the same campaign, header_cta against footer_cta.
Parameters are added with the URL API, so an existing query string is preserved and values are encoded correctly. A space becomes %20 rather than breaking the link.
Lowercasing is on by default because analytics treats values as case-sensitive strings. Email and email appear as two separate sources in a report, which quietly splits a campaign in half.
Examples
A newsletter link
URL
https://example.com/pricing
Source
newsletter
Medium
Campaign
spring_launch
Result
https://example.com/pricing?utm_source=newsletter&utm_medium=email&utm_campaign=spring_launch
Three parameters, appended in order. An existing query string on the URL would be kept and these added to it.
Two links in the same email
Content
header_cta and footer_cta
Result
Identical links apart from utm_content
This is exactly what utm_content is for, telling apart two links to the same destination in the same campaign, so you can see which placement worked.
Frequently asked questions
Which UTM parameters are actually required?
Source, medium and campaign. Google Analytics needs all three to attribute a session to a campaign; with any of them missing the visit is generally reported as direct traffic, which is why a campaign can appear to have driven nothing at all.
Does capitalisation matter?
Yes, and it causes real problems. Analytics treats values as case-sensitive, so Email and email become two separate sources and split your campaign across two rows. Forcing lowercase is on by default for that reason.
What is utm_content for?
Distinguishing two links that point at the same page within the same campaign, a header button against a footer link, or two creative variants. Without it those visits are indistinguishable in reporting.
Are UTM parameters visible to the visitor?
Yes, they sit in the address bar and are shared whenever someone copies the link. That has a real side effect: a tagged link shared onward attributes those visits to your original campaign, which inflates it.