Free tool, runs in your browser

UTM Builder

Build a tagged campaign URL for GA4. Presets for email, social, ads and print get you started, and the builder warns about the three mistakes that quietly break campaign reporting: mixed case, a medium GA4 does not recognise, and tags on an internal link.

Start from
Your tagged URL
Enter a destination URL to build the link.
Never put these on a link between two pages of your own site. A UTM-tagged internal link restarts the session in GA4 and reattributes the visit to the tag, so the campaign that actually brought the person in loses the credit and your own site appears to be its own best traffic source. Tag only links that arrive from somewhere else. Everything here is built in your browser and sent nowhere.

Short answer

A UTM builder assembles a campaign URL from five parameters: utm_source, utm_medium, utm_campaign, utm_term and utm_content. The first three matter, because GA4 attributes on source and medium and picks a channel from medium alone. Values are case sensitive, so Facebook and facebook become two rows that never add up, and a tagged internal link restarts the session, stealing the credit from whatever brought the visitor in. This builder flags all three as you type.

The five parameters, and which three matter

Every UTM guide lists the same five fields. Fewer say which ones change what you see in a report, which is the only question worth asking before you fill one in.

ParameterAnswersExampleWhat happens without it
utm_sourceWhere did the click come from?newsletterGA4 falls back to the referrer, or records direct
utm_mediumWhat kind of traffic is it?emailThe visit lands in Unassigned rather than a channel
utm_campaignWhat should this be totalled under?spring-launchThe clicks are attributed but cannot be grouped
utm_termWhich paid keyword?seo audit toolNothing, on anything that is not a manually tagged ad
utm_contentWhich link on the page?header-buttonTwo links to one page merge into one row

Source and medium are the pair GA4 attributes on. Campaign is what makes a report readable a quarter later. Term is filled by the ad platform on anything auto-tagged, and content earns its place the moment a page has two links to the same destination.

The four mistakes that break campaign reporting

UTM tagging goes wrong in a small number of predictable ways, and none of them throws an error. The data arrives, it is simply wrong or unreadable, which is why these survive for years.

MistakeWhat you seeThe fix
Mixed case in a valueFacebook and facebook as two rows, each with half the clicksLowercase everywhere, enforced by convention
A medium GA4 does not recogniseThe campaign in Unassigned, looking like it delivered nothingUse a known medium, or define a custom channel group
Tags on an internal linkYour own site as your top traffic source, and the real campaign credited with nothingNever tag a link between two pages you own
A redirect that drops the query stringThe campaign recorded as direct trafficTest the link end to end; check shorteners preserve parameters
Two people inventing their own wordsemail, e-mail and Email as three mediumsWrite the convention down and log every link built

The internal link one is the expensive mistake

The others produce messy data. Tagging an internal link produces confidently wrong data: GA4 starts a new session at the tagged link and reassigns the visit to it, so the paid campaign that actually brought the person in shows a conversion rate of zero while an internal banner takes the credit. Measure internal clicks with events, never with UTMs.

Agreeing a convention before the links multiply

A UTM builder solves the easy half of this. The hard half is that two people will tag the same campaign differently, and neither will be wrong, and the report will be useless. That is a decision to write down rather than a tool to buy.

  1. 01

    Start from the destination you want people to land on

    The full URL, with https:// and any query string it already carries. The builder appends to an existing query string rather than replacing it, and keeps a fragment at the end so an anchor link still jumps where it should.

  2. 02

    Fill source, medium and campaign, and treat them as required

    Source is where the click came from, medium is what kind of traffic it is, campaign is what you want to total it under. GA4 uses medium to pick a channel group, so an unrecognised value quietly lands the traffic in Unassigned.

  3. 03

    Write every value in lowercase, with hyphens

    Campaign values are case sensitive in reports. Facebook and facebook become two rows that never add up, and the person reading the report six months later has no way to know they were the same campaign. Pick lowercase and never deviate.

  4. 04

    Use content to tell two links on the same page apart

    When a newsletter has a header button and a text link to the same page, content is the field that says which one was clicked. Without it the two merge and you lose the only interesting comparison in the send.

  5. 05

    Leave term alone unless you are tagging a paid keyword by hand

    Most ad platforms fill it automatically, and Google Ads auto-tagging supplies richer data than any manual UTM can. Filling it in by hand on an email link adds a column nobody will read.

  6. 06

    Write the convention down before the second person tags a link

    Every UTM problem is the same problem: two people picked different words for one thing. A one-page document naming the allowed mediums and the campaign naming pattern is worth more than any builder, this one included.

A convention that holds up

  • Lowercase, always, with hyphens between words. No exceptions, because one exception is all it takes.
  • A fixed list of allowed mediums, drawn from the ones GA4 recognises. Anything else needs a decision, not an improvisation.
  • A campaign naming pattern with the date in it, such as 2026-q1-pricing-launch, so the report still makes sense to someone reading it next year.
  • One shared sheet logging every link built, who built it and where it went. Copying an existing link is the only reliable way to stay consistent.
  • Source names the platform, never the format. linkedin is a source; carousel is content.

What tagged URLs do to your organic reporting

UTMs are a marketing tool rather than an SEO one, but they land in SEO's lap through the back door, because every tagged link creates a second URL serving the same page. They also decide what counts as organic traffic in GA4, which is why a mis-tagged campaign can make a month of search performance look like something else entirely.

  • A tagged URL needs a canonical pointing at the clean one. Nearly every CMS does this already, and it is worth confirming once rather than assuming.
  • Tagged URLs occasionally pick up backlinks when someone copies a link out of a newsletter. The canonical consolidates the signal; without it the equity sits on a URL nobody else links to.
  • Tagged URLs in a sitemap are a configuration error worth checking for. A sitemap should declare clean URLs only.
  • Search Console reports the clean URL, so tagged traffic never appears there. Campaign traffic and organic traffic are different reports by design.

If you want to confirm a tagged URL is handled properly on your own site, the canonical checker reads what a URL declares and follows it to the page it names.

What this UTM builder does

All five parameters

Source, medium, campaign, term and content, with the required three marked

Presets to start from

Email, LinkedIn, Google Ads, paid social and printed QR codes

Mixed case flagged

The commonest cause of one campaign appearing as two rows

Unknown mediums flagged

A warning when GA4 will file the traffic under Unassigned

Existing query strings kept

Appends rather than replacing, so a URL with parameters survives

Fragments kept at the end

An anchor link still jumps where it should after tagging

Values encoded correctly

Spaces and symbols escaped so the link does not break when pasted

Nothing leaves your browser

Built client-side, which matters for an unlaunched campaign

What a builder cannot fix

This assembles a correct URL and warns about the mistakes a URL can show. It cannot tell you whether the word you chose for a medium is the word your colleague chose last quarter, and that is where almost all real UTM damage comes from. Decide the convention, write it in one page, and keep a log of the links you build. The builder is the easy half.

Frequently asked questions

What is a UTM parameter?

A UTM parameter is a tag added to a URL's query string so an analytics tool can record where a visit came from. There are five: utm_source, utm_medium, utm_campaign, utm_term and utm_content. They are read by the analytics tag on the destination page, they do nothing on their own, and the name is historic: UTM stands for Urchin Tracking Module, after the company Google bought to build Analytics in 2005.

Which UTM parameters are required?

Source, medium and campaign in practice, though nothing enforces it. Source and medium are what GA4 uses to attribute the visit and assign it to a channel group, so a link missing either is recorded with the attribution it was meant to replace. Campaign is what lets you total several links together later. Term and content are genuinely optional.

Do UTM parameters hurt SEO?

Not when they are used as intended, which is on links arriving from somewhere else. They create a second URL for the same content, so each tagged URL needs a canonical tag pointing at the clean one, which almost every CMS does by default. The real risk is tagged URLs getting indexed or picking up backlinks, and the fix for both is the canonical, not avoiding UTMs.

Should I put UTM parameters on internal links?

No, and this is the mistake that does real damage. A UTM-tagged link between two pages of your own site starts a new session in GA4 and reattributes it to the tag, so the campaign that actually brought the person in loses the credit and your own site shows up as its own best traffic source. If you want to measure an internal banner, use GA4 events or the internal promotions report instead.

Are UTM parameters case sensitive?

Yes, and it is the commonest way campaign data turns to mush. Facebook, facebook and FaceBook are three separate rows in every report, each with part of the total, and nothing warns you. GA4 can lowercase incoming values with a data filter, but configuring that after the fact does not repair the data already collected. Picking lowercase and holding to it is the only reliable answer.

What medium values does GA4 recognise?

GA4 maps a known set to its default channel groups: email, cpc, ppc, paid_social, social, organic_social, affiliate, referral, display, banner, cpm, video, audio, sms, push and a few more. A medium outside that set is still recorded faithfully, it simply falls into Unassigned rather than a named channel, which is why a campaign can look like it delivered nothing. This builder warns when a medium is not one GA4 will recognise.

What is the difference between source and medium?

Source is the specific place, medium is the category it belongs to. A LinkedIn post is source linkedin, medium social. A LinkedIn ad is source linkedin, medium paid_social. The same source appears under several mediums and the same medium covers many sources, which is exactly why both exist: one tells you where, the other tells you what kind.

Can I use spaces in a UTM value?

They work, because the builder encodes them, but they make an ugly URL and an inconsistent report, since some tools show the encoded form and others decode it. Hyphens are the usual convention and underscores are the usual alternative. Pick one and apply it everywhere, because spring-launch and spring_launch are two campaigns as far as any report is concerned.

Do UTM parameters work with Google Ads?

They do, and you usually should not use them there. Google Ads auto-tagging adds a gclid parameter that carries far more than five UTM fields can, including the keyword, the ad group and the match type, and it stays accurate when you rename things in the Ads interface. Manual UTMs on Ads links are worth it only when you need the data in a tool that cannot read gclid.

Does this builder send my URLs anywhere?

No. The link is assembled in your browser as you type and nothing is posted to a server, which is why it has no run limit. That matters here more than on most tools, because an unlaunched campaign URL frequently names a product or a date that is not public yet.

How do I keep UTM tags consistent across a team?

With a written convention and a shared spreadsheet, not with discipline. Name the allowed mediums explicitly, fix a campaign naming pattern such as year-quarter-name, require lowercase, and log every link built so the next person copies rather than invents. Every messy UTM dataset comes from the same cause: two people independently picking a word for the same thing.

Why does my campaign show as direct traffic?

Usually a redirect that drops the query string, which is the quiet one: link shorteners, some email click trackers and badly configured server redirects all strip parameters on the way through. The others are a link pasted without the tags, an app that opens the URL in a webview with no analytics, and https-to-http downgrades. Test a tagged link end to end before a campaign goes out, and check the parameters survive to the landing page.

Read up on auditing and reporting

A tool tells you what is wrong. These explain what to do about it.

Terms this tool checks

  • CTR (Click-Through Rate)

    Click-Through Rate (CTR) is the percentage of people who click on your search result after seeing it.

  • Clicks

    A click in Google Search Console is counted when a searcher clicks a result that sends them to your site.

  • Organic Traffic

    Organic traffic is the volume of visitors who arrive at your website through unpaid search engine results.

Campaign traffic measured, organic traffic guessed at

UTMs tell you what your campaigns brought in. They say nothing about the search traffic arriving without a tag, which on most sites is the larger half. CrawlRaven joins Search Console, GA4 and a crawl of your site, so the pages earning impressions, the queries behind them and the sessions they convert all sit in one view.