UTM Campaign URL Builder
Add UTM parameters to a URL so analytics can attribute the traffic correctly. The builder enforces the naming consistency that keeps reports readable, and flags the mistakes that quietly corrupt campaign data.
- Free, no sign-up
- Runs in your browser
- Nothing uploaded
- Updated Sep 2026
At a glance
- Parameters
- utm_source, utm_medium, utm_campaign, utm_term, utm_content
- Required
- Source and medium. Campaign in practice, or reporting is useless
- Case
- Case-sensitive in GA4 — always lowercase
- Never use
- On internal links; it resets the session and destroys attribution
- Privacy
- Parameters are visible in the URL — never put personal data in them
- Processing
- Entirely client-side
What each parameter is for
Five parameters, and most confusion comes from treating source and medium as interchangeable.
- utm_source — where the traffic came from. A specific named property:
newsletter,linkedin,partner-site. - utm_medium — the kind of channel. A category, not a name:
email,cpc,social,affiliate. GA4 uses this to group traffic into channels, so inventing values here is what breaks the default channel report. - utm_campaign — which initiative this belongs to:
spring-sale-2026,product-launch. - utm_term — the paid keyword. Rarely needed manually, since paid platforms populate it automatically.
- utm_content — which variant, for A/B testing:
header-ctaversusfooter-cta.
A useful test: source answers "which specific place?", medium answers "what kind of
place?". An email from your newsletter is source newsletter, medium
email. Sticking to the standard medium values — email,
cpc, social, affiliate, referral,
display — is what keeps GA4's channel grouping working without custom rules.
The mistakes that wreck campaign reporting
Never tag internal links. This is the one that causes real damage. UTM parameters on a link between two pages of your own site start a new session and overwrite the original attribution, so a visitor who arrived from Google and then clicked a tagged internal banner is recorded as having come from that banner. Your acquisition data becomes fiction. For internal link testing, use GA4 events instead.
Inconsistent case fragments everything. GA4 treats
Email, email and EMAIL as three separate sources. A
year of casual tagging produces a report with a dozen variants of the same channel. This
builder lowercases everything automatically, which is the simplest possible fix.
Spaces and inconsistent separators. A space becomes %20 or
+ depending on the platform, producing two versions of the same campaign. Use
hyphens, always.
Never put personal data in a UTM. Parameters are visible in the URL,
stored in analytics, sent in referrer headers and frequently shared when someone copies a
link. An email address or customer ID in a utm_content value is a data
protection problem, and it is more common than it should be.
Keeping tagging consistent over time
The technical part of UTM tagging is trivial. The part that fails is consistency across people and months.
Write down your conventions somewhere the whole team can see: the allowed medium values,
the campaign naming pattern, whether dates go in campaign names, who is allowed to invent a
new source. A shared spreadsheet logging every link built is unglamorous and works. Without
it you get spring_sale, spring-sale, SpringSale and
spring-sale-2026 all describing the same campaign, and no report can put them
back together.
Two more habits worth adopting. Include the year in campaign names — you will run
"spring sale" again, and you will want to compare. And check the tagged URL actually works
before sending it: paste it into a browser and confirm the page loads, particularly if the
destination already had query parameters, since a mishandled ? versus
& produces a broken link that goes out to your entire list.
How to use the UTM Campaign URL Builder
-
Enter the destination URL
The page you are sending people to. Existing query parameters are preserved and the separator is handled correctly.
-
Fill in source and medium
Source is the specific place, medium is the channel type. Stick to standard medium values so GA4's channel grouping keeps working.
-
Name the campaign
Use lowercase and hyphens, and include the year. Match whatever convention your team already uses.
-
Copy the URL, or switch to bulk mode
Bulk mode takes a list of destinations and applies the same campaign parameters to all of them.
Frequently asked questions
Do UTM parameters hurt SEO?
They create additional URLs for the same content, which is a duplicate-content risk. The fix is a canonical tag pointing at the clean URL, which every page should have anyway. Do not block tracking parameters in robots.txt — that is broader than intended and can block legitimate crawling.
What is the difference between source and medium?
Source is the specific place traffic came from, such as newsletter or linkedin. Medium is the type of channel, such as email or social. Source answers "which one?", medium answers "what kind?".
Can I use UTM parameters on internal links?
No — this is the most damaging UTM mistake. Tagged internal links start a new session and overwrite the original attribution, so a visitor who came from search gets re-attributed to your own banner. Use GA4 events to measure internal link clicks.
Are UTM parameters case-sensitive?
Yes in GA4, which is why Email and email appear as separate sources. This builder lowercases everything automatically to prevent that fragmentation.
Which parameters are actually required?
Technically only source and medium. In practice you want campaign too, or you cannot separate one initiative from another. Term and content are optional and only worth using when you have a specific question they answer.
Can I shorten the URL afterwards?
Yes. A shortener redirects to the full tagged URL, so the parameters still reach analytics. This is normal for print, social bios and anywhere a long URL is unwieldy. Use a shortener you control if you can, so the links do not stop working if a third-party service shuts down.