Skip to content

UTM Builder

Add UTM parameters to a link: source, medium and campaign, plus the optional ones GA4 reads, in lowercase and with spaces replaced. The link keeps its existing query and the part after #. Or paste a campaign URL to find repeated, misspelled or misplaced tags and personal data.

Runs locally in your browser

Campaign

Required. The full address of the page, with https://. Its query and # part are kept.

Presets

A preset fills source and medium with a pair GA4's default channel groups put in that channel. Change the source to yours.

Required. Where the visit comes from.

Required. The kind of link; with the source, it decides the GA4 channel.

Required. The campaign's name.

The campaign's ID, as in campaign data you upload to GA4. Written as typed.

Paid search keywords.

Tells apart links of the same campaign, such as two buttons.

More GA4 parameters

The platform that directs the traffic, such as a buying platform.

The ad's format. GA4 doesn't report it yet.

The targeting, such as remarketing. GA4 doesn't report it yet.

Campaign URL

https://www.claystudio.example/shop/mugs/?color=blue&utm_source=newsletter&utm_medium=email&utm_campaign=autumn_sale_2026&utm_content=hero_button#reviews

What UTM parameters are

UTM parameters are tags in a link's query string that tell analytics tools where a visit came from, as in ?utm_source=newsletter&utm_medium=email&utm_campaign=spring_sale. The page works the same with or without them; they only label the visit. GA4 reads nine of them from the address of the page a visitor lands on:

ParameterWhat it saysExample
utm_sourceWhere the visit comes from: a site, a newsletter, an ad platformgoogle, newsletter
utm_mediumThe kind of link: email, paid search, socialemail, cpc
utm_campaignThe campaignspring_sale
utm_idThe campaign's ID, the same as in campaign data you uploadabc.123
utm_termPaid search keywordsceramic_mugs
utm_contentWhich link or ad of a campaign was clickedhero_button
utm_source_platformThe platform that directs the traffic, such as a buying platformdv360
utm_creative_formatThe ad's format; GA4 doesn't report it yetvideo
utm_marketing_tacticThe targeting, such as remarketing; GA4 doesn't report it yetremarketing

Google says to always set the first three. Without one of them, GA4 reports that value as (not set), so the builder requires them. The others are optional: add utm_id if you upload campaign data, and utm_term or utm_content to tell apart links of one campaign.

How to build a campaign URL

  1. Enter the page's full address, starting with https://. A query or a # part it already has stays in the link.
  2. Pick a preset for the channel, or type the source and medium yourself.
  3. Name the campaign, and add a term or content if you want to tell links apart.
  4. Copy the campaign URL and use it in the ad, email or post.
  5. To check a link you already have, open Check a URL and paste it.

Examples

A page with a query and a # part

Input

url=https://example.com/pricing?ref=nav#plans
utm_source=newsletter
utm_medium=email
utm_campaign=spring_sale

Output

https://example.com/pricing?ref=nav&utm_source=newsletter&utm_medium=email&utm_campaign=spring_sale#plans
Capitals and spaces in the values

Input

url=https://example.com/
utm_source=LinkedIn
utm_medium=Social
utm_campaign=Spring Sale 2026

Output

https://example.com/?utm_source=linkedin&utm_medium=social&utm_campaign=spring_sale_2026
Checking a link with several mistakes

Input

https://example.com/?utm_source=Newsletter&utm_source=newsletter&utm_campain=spring&utm_content=jane@example.com

Output

utm_source appears 2 times. Keep one, with the value you mean: analytics tools read only one of them. (UTM_DUPLICATE_PARAM)
utm_source has capital letters: "Newsletter". GA4 reports "Newsletter" and "newsletter" as two different source values: use lowercase. (UTM_MIXED_CASE)
utm_campain isn't one of the parameters GA4 reads. Did you mean utm_campaign? (UTM_UNKNOWN_PARAM)
The value of utm_content looks like an email address. Google Analytics doesn't allow personal data, and the whole URL is collected with each page view: remove it. (UTM_PII_SUSPECTED)
The URL has no utm_medium and utm_campaign. Google says to always set utm_source, utm_medium and utm_campaign: GA4 reports a missing one as (not set). (UTM_MISSING_REQUIRED)

Naming that keeps reports readable

GA4 keeps parameter values exactly as written: Email and email become two medium values, and SpringSale and spring_sale two campaigns, each with part of the visits. A naming rule that everyone tagging links follows matters more than the rule itself:

  • Write every value in lowercase. The builder does unless you turn off Lowercase; it leaves utm_id as typed, since it has to match the IDs of your uploaded data.
  • Use one separator instead of spaces. The builder writes _ by default, or -; Keep leaves spaces, encoded as %20 in the link.
  • Give each platform one source and each kind of channel one medium, such as facebook and paid_social, and name campaigns as they are named in the ad platform.

How source and medium decide the GA4 channel

GA4 sorts every visit into a default channel group by its source and medium. Its rules ignore case and can't be edited. The pairs below land in these channels as of November 2026; a pair that matches no rule is Unassigned.

ChannelWhat GA4 looks forPreset
EmailSource or medium email, e-mail, e_mail or e mailnewsletter / email
Organic SocialA social site as the source, or medium social, social-network, social-media, sm, social network or social medialinkedin / social
Paid SocialA social site as the source, and a paid mediumfacebook / paid_social
Paid SearchA search engine as the source, and a paid mediumgoogle / cpc
DisplayMedium display, banner, expandable, interstitial or cpmgoogle / display
AffiliatesMedium affiliatepartner / affiliate
ReferralMedium referral, app or link
Organic SearchA search engine as the source, or medium organic

A paid medium is one GA4 matches with ^(.*cp.*|ppc|retargeting|paid.*)$: cpc, ppc, retargeting and anything that starts with paid. The lists of search engines and social sites are in Google's default channel group (opens in a new tab) documentation.

Mistakes that break campaign tracking

  • Tags on internal links. A UTM tag says where a visit comes from, so it belongs only on links from outside your site. Tagging a link between your own pages makes your site look like a campaign source, and the campaign that brought the visitor loses the credit.
  • Tags after the #. The part of a URL after # is the fragment: browsers don't send it to the server, and tools that read campaign tags from the query string don't see tags there. The builder puts the tags before the #, and the check finds them after it.
  • Personal data in the link. An email address or a phone number in a parameter ends up in your reports with every page view, and Google Analytics doesn't allow personal data.
  • The same parameter twice. Tools read only one value, and it may not be the one you meant.
  • Manual tags on Google Ads links. With auto-tagging, Google Ads adds a gclid to each click, and GA4 takes the source and medium from it rather than from utm_source and utm_medium.
  • Very long links. GA4 keeps a page location of up to 1,000 characters, counted encoded. Tags at the end of a longer URL may be cut off.

Options

Options
OptionValuesDefaultWhen to change it
ModeBuild a URL, Check a URLBuild a URLBuild a campaign URL from the form, or check one you paste: its parameters as written and as analytics tools read them, and its problems.
LowercaseOn, OffOnWrites every value in lowercase, except utm_id, which stays as typed.
SpacesAs _, As -, Keep (%20)As _What a run of spaces inside a value becomes: an underscore, a hyphen, or a space, encoded as %20. Spaces at the start and the end are always removed.

Common errors and fixes

Common errors and how to fix them
CodeWhat it meansHow to fix it
UTM_INVALID_URLErrorThe URL has no https:// at the start, is a path such as /pricing, or is another kind of link, like mailto:.Write the page's full address, starting with https://.
UTM_MISSING_REQUIREDErrorutm_source, utm_medium or utm_campaign is empty, or missing from the URL you check.Set all three: GA4 reports a missing one as (not set).
UTM_DUPLICATE_PARAMWarningA UTM parameter appears more than once. When you build a URL, the form's value replaces the one the URL had.Keep one value per parameter.
UTM_MIXED_CASEWarningA value has capital letters, so it splits from the same value in lowercase in GA4.Write values in lowercase, everywhere you tag links.
UTM_IN_FRAGMENTWarningUTM parameters come after the #, often in a link to a page of a single-page app.Move them before the #.
UTM_WHITESPACEWarningA value has a space the link doesn't encode, or one at its start or end.Use _ or - between words, and remove spaces at the ends.
UTM_UNKNOWN_PARAMWarningA parameter starts with utm but isn't one GA4 reads, like utm_campain or UTM_SOURCE.Use the parameter the problem suggests; the names are lowercase.
UTM_CLICK_ID_PRESENTNoteThe URL has a click ID an ad platform added, such as gclid or fbclid, often because the link was copied after a click.Remove it from links you share.
UTM_PII_SUSPECTEDWarningA value looks like an email address or a phone number.Remove it: Google Analytics doesn't allow personal data.
UTM_URL_TOO_LONGWarningThe URL is longer than the 1,000 characters GA4 keeps of a page location, counted encoded.Shorten the address or its other parameters.
EMPTY_INPUTNoteThe website URL, or the URL to check, is empty.Enter or paste a URL.
INPUT_TOO_LARGEErrorThe URL is longer than 8,192 characters, or a value is longer than 500.Shorten it.

Privacy

UTM Builder runs entirely in your browser. What you type, paste or open is processed on your device: it is not sent to Toolzami, and Toolzami does not store it. Only the options you choose are remembered, in this browser.

Frequently asked questions

Which UTM parameters do I need?

utm_source, utm_medium and utm_campaign. Google says to always set these three: without one, GA4 reports it as (not set). utm_id, utm_term and utm_content are optional, and so are the three newer GA4 parameters, two of which GA4 doesn't report yet.

Are UTM parameters case-sensitive?

Their values are. GA4 reports Email and email as two different medium values, which splits a campaign's numbers across rows. Use lowercase for every value, as this builder does by default. GA4's default channel groups ignore case, so the channel itself stays the same.

Should I add UTM parameters to links within my own site?

No. UTM parameters say where a visit comes from, so use them only on links from other places: ads, emails, posts and partner sites. On a link between your own pages, the tag labels your own site as a campaign, and the visits and conversions that follow can be credited to it instead of the source that brought the visitor.

Last updated