UTM Builder (Campaign URL Generator)
Build campaign URLs that arrive in GA4 as one clean row instead of five fragmented ones. Enter your landing page and the three required parameters — utm_source, utm_medium, utm_campaign — and this builder assembles the link with proper URL-encoding, preserves any query parameters already on the page (so ?ref=pricing survives), and keeps your #fragment at the end where it belongs. Values are forced to lowercase by default because GA4 treats Google, google, and GOOGLE as three different sources, and the param-breakdown table shows exactly what each tag will report before you ship the link.
Presets (source / medium)
Enter your landing page URL and the three required parameters to build a campaign URL.
How to use the utm builder (campaign url generator)
- Paste the full landing page URL, including https:// — existing query params and #fragments are preserved.
- Click a preset (google/cpc, facebook/paid-social, newsletter/email, twitter/social) or type source and medium yourself.
- Name the campaign — use one convention everywhere, e.g. spring-sale-2026, and stick to it.
- Optionally add utm_term (paid keyword) and utm_content (which ad or link variant).
- Copy the finished URL and check the breakdown table to confirm what GA4 will record.
The three-question model behind the five parameters
Every UTM tag answers one attribution question. utm_source answers “which property sent the click?” — a site or platform name like google, newsletter, or partner-blog. utm_medium answers “what kind of channel?” — and this is the one to standardize hardest, because GA4's default channel groupings key off it: cpc lands in Paid Search, email in Email, paid-social in Paid Social, referral in Referral. Invent a creative medium like blast and your email traffic falls into Unassigned. utm_campaign answers “which push?” — the promotion name that groups every link in one effort. The optional pair refines paid and split-test reporting: utm_term carries the bidded keyword, and utm_content distinguishes variants — hero-banner vs footer-link in the same email tells you which placement earned the click.
Why force lowercase, and what proper encoding buys you
GA4 is case-sensitive across UTM values. If Monday's email uses utm_source=Newsletter and Thursday's uses utm_source=newsletter, your source report shows two rows with split totals, and every comparison you run against that dimension silently undercounts. Multiply that across source, medium, and campaign and a single campaign can shatter into a dozen fragments. The lowercase toggle (on by default) eliminates the entire class of error at the point of creation. Encoding matters for the same reliability reason: a space or ampersand typed raw into a value can truncate the parameter or spawn a phantom one. This builder percent-encodes values properly — spring sale becomes spring%20sale — though the cleaner habit is avoiding spaces entirely and using hyphens, exactly as the presets do.
One rule with no exceptions: never put UTM parameters on internal links. Clicking a tagged link starts a new attributed session in GA4, so an internal banner tagged utm_source=homepage overwrites the visitor's real acquisition source — the Google ad you paid for gets credited to your own homepage. UTMs are for links that start outside your site: emails, ads, social posts, QR codes, podcast show notes.
A worked example
Suppose you're promoting a spring sale through three channels pointing at https://example.com/sale?ref=qr. The newsletter link gets utm_source=newsletter&utm_medium=email&utm_campaign=spring-sale-2026&utm_content=hero-banner; the Google Ads link gets google / cpc / spring-sale-2026 with utm_term=spring%20sale; the organic X post gets twitter / social / spring-sale-2026. Because all three share one campaign value, GA4's campaign report shows the whole effort on one line, and source/medium splits it three ways — while the original ref=qr parameter rides along untouched. That's the entire discipline: same campaign name, the standard medium vocabulary, lowercase everywhere.
Frequently asked questions
Which UTM parameters are required?
Treat utm_source, utm_medium, and utm_campaign as required — this builder enforces all three. GA4 will technically record a link with only utm_source, but without medium it can't assign a channel group and without campaign you can't aggregate the effort. utm_term and utm_content are optional refinements for paid keywords and creative variants.
Are UTM parameters case-sensitive in GA4?
Yes. “Email”, “email”, and “EMAIL” show up as three separate medium values with split metrics. That's why the force-lowercase toggle is on by default: lowercase-everything is the simplest convention that makes the problem impossible. If you must keep capitals for some reason, turn the toggle off — but enforce your casing rule everywhere.
What's the difference between utm_source and utm_medium?
Source is the specific property that sent the click (google, facebook, newsletter, partner-blog); medium is the category of channel (cpc, paid-social, email, referral). The pair reads naturally as “medium from source”: cpc from google, email from newsletter. Keep medium to GA4's standard vocabulary so traffic lands in the right default channel group.
Do UTM parameters affect SEO or rankings?
Not directly — they're just query parameters. The real risk is duplicate-content dilution: if tagged URLs get linked publicly or indexed, example.com/page and example.com/page?utm_source=newsletter look like two pages. A canonical tag pointing at the clean URL (which most CMSs set automatically) fully neutralizes this. Never use UTMs on internal links, for analytics reasons rather than SEO ones.
Will this keep query parameters that are already on my URL?
Yes. The builder parses your base URL with the browser's URL engine, so an existing parameter like ?ref=pricing or ?gclid=… is preserved and the UTM tags are appended alongside it. A #fragment stays at the very end, after the query string, where browsers require it. If you re-tag a URL that already has UTMs, the new values replace the old ones rather than duplicating them.
Can I use spaces in UTM values?
You can — the builder encodes a space as %20 so the URL stays valid and GA4 reports the value with the space — but hyphens are the better habit. spring-sale-2026 is readable in raw URLs, immune to encoding mishaps in email clients and spreadsheets, and consistent with how the presets and most analytics teams name things.
Related tools
- Google Review Link GeneratorGenerate a direct Google review link from your Place ID, plus a ready-to-send email or text snippet. Get more reviews with one tap-to-review URL.
- WhatsApp Click-to-Chat Link GeneratorCreate WhatsApp click-to-chat links with a pre-filled message and a downloadable QR code — wa.me links for bios, ads, and business profiles.
- CTR CalculatorCalculate click-through rate from clicks and impressions, or solve for the clicks or impressions needed to hit a target CTR. Free CTR calculator.
- CPM / CPC / CPA CalculatorCalculate CPM, CPC, or CPA from any two values — solve for budget, impressions, clicks, or rate with one fast media-buying calculator.
- Conversion Rate CalculatorCalculate conversion rate from conversions and visitors, solve for the conversions or traffic you need, and get revenue per visitor from your AOV.
- Article Schema GeneratorGenerate Article, NewsArticle, or BlogPosting JSON-LD schema with author, publisher, and dates. Copy valid markup for Google article rich results.