UTM Builder
Tag a campaign URL with UTM parameters for any analytics tool that reads the standard 5 fields (Google Analytics, Mixpanel, Amplitude, PostHog). The URL hash holds your template — bookmark or share it.
Share this UTM template
The form fields are stored in this page's URL hash, so you can bookmark or share the URL below to recreate the same template. Nothing is uploaded.
What UTM tags actually do
UTM tags are query parameters appended to a URL — typically the five fields above. When someone clicks a tagged URL, the analytics JS on your destination page reads those parameters and attributes the visit to the campaign you specified.
Without UTM tags, your analytics tool falls back to referrer-
based attribution: it reads the Referer HTTP
header to figure out where the visitor came from. Referrer is
unreliable — privacy modes strip it, mobile apps don't always
send it, and HTTPS-to-HTTP transitions discard it.
UTM tags are durable: they're in the URL itself, so they survive redirects, app-to-web transitions, and most privacy modes (which don't typically strip query params). That's why every campaign handed off between teams should use them.
The naming-convention trap
The five UTM values are case-sensitive in every analytics tool.
email, Email, and EMAIL
count as three different sources in your reports. The most common
cause of "my UTM data is a mess" is a team adopting different
conventions over time — spring-launch in one
campaign, spring_launch in the next,
SpringLaunch after that.
Pick a convention up front and document it. Common one:
lowercase + hyphens, no acronyms (twitter not
tw). Future you will thank past you for the
consistency when you're trying to filter campaign reports six
months later.
Common workflows
- Newsletter campaign — source=
newsletter, medium=email, campaign=q2-product-update. Optionally content=top-linkvsbottom-ctaif you want to A/B test placement. - Paid-social campaign — source=
twitter(orlinkedin, etc.), medium=social-paid, campaign=spring-launch-2026. Optionally content=video-ad-1vsimage-ad-1. - Partner referral — source=
partner-name, medium=partnership, campaign=q2-cobranded-launch. - Google Ads campaign — let Google's auto-tagging handle it. UTM fields will be auto-filled if you've enabled auto-tagging in Google Ads.
Related
- Marketing tools hub
- Request a tool — what other marketing calculators would help?
FAQ
Is anything I enter sent to a server?
No. The form is pure-frontend; the URL it builds is constructed in your browser. The form values are also stored in this page's URL hash so you can bookmark/share a UTM template — but the hash is client-side state, never uploaded.
What are the five standard UTM fields?
utm_source (where the traffic originates — newsletter, twitter, google), utm_medium (channel type — email, social, cpc), utm_campaign (specific campaign name), utm_term (paid-search keyword, optional), utm_content (A/B test variant, optional). Source, medium, and campaign are typically required by your analytics tool to count the visit; term and content are optional.
Should I use spaces, hyphens, or underscores?
Hyphens or underscores. Spaces work but get URL-encoded to %20 in the actual link, which is ugly and harder to debug. The widely-followed convention is lowercase + hyphens for source/medium/campaign (e.g., spring-launch-2026). Some teams prefer underscores. Pick one and stick with it across all your campaigns — analytics tools are case-sensitive, so Email and email count as different sources.
Do these work with Google Analytics 4?
Yes. GA4 reads the same five UTM parameters. If you're using GA4's source/medium/campaign reports, the parameters map directly. GA4 also accepts utm_id for tying a campaign back to a Google Ads campaign ID — that's an extra parameter we don't include here, since most non-Google-Ads users don't need it.
What happens to my UTM template if I close the tab?
The form values live in the URL hash, so closing the tab loses them. To preserve a template, copy the share URL from the 'Share this UTM template' section — it includes all the form values. Bookmark it or paste it into your team docs.
Why does the URL output sometimes look different from what I typed?
The tool uses the browser's URL API to construct the output, which may rewrite the URL into a canonical form (sort parameters, encode special characters, etc.). The result is functionally identical to what you typed.