UTM builder (campaign URL generator)

A UTM link is your page's URL with utm_ parameters added so Google Analytics knows where a visit came from. Enter the URL, source, medium and campaign; the builder encodes the values, warns about mixed case and spaces, and gives you the finished link.

The page the link should open, starting with https://. Any ?query and #section in it are kept.

Where the visit comes from: the site, publication or list that carries the link.

The kind of channel. GA4 sorts visits into channels mainly by this value.

The product, promotion or slogan, the same on every link of the campaign.

Optional. Use the same IDs as any campaign data you upload to GA4.

Optional. The paid keyword, for search ads tagged by hand.

Optional. Tells apart two links or creatives in the same campaign.

  • Pass · Lowercase valuesall lowercase
  • Pass · No spacesnone
  • Pass · GA4 channelEmail

Campaign URL

https://www.example.com/pricing?utm_source=newsletter&utm_medium=email&utm_campaign=diwali_sale
utm_source
newsletter
utm_medium
email
utm_campaign
diwali_sale
GA4 default channel
EmailFrom the medium: "newsletter" isn't one of the search, social, video or shopping sites this tool checks from Google's source list.
Link length
95 characters

How does a UTM link work?

A UTM link is the page's URL with utm_ query parameters added. When a visit arrives on it, Google Analytics takes the visit's source, medium and campaign from those values; on a Google Ads link that is also auto-tagged, Google says the auto-tagged values are used for source and medium. Google's help also says missing UTM parameters show as (not set) in reports, and that the parameters are left out of the Page path + query string and Landing page + query string dimensions, so tagged links don't split your page reports.

This builder reads your URL with the browser's URL parser, keeps any existing parameters and #section, replaces utm_ values already in it, and adds yours before the #: RFC 3986 ends the query at the first #. Values are percent-encoded, so a space becomes %20 and & becomes %26. URLSearchParams would write a space as +, which form decoders turn back into a space but plain percent-decoding leaves as a plus sign; %20 means a space under both.

GA4's default channel group sorts each visit into a channel by rules on source, medium and campaign name. A medium of email lands in Email; a paid medium (one matching ^(.*cp.*|ppc|retargeting|paid.*)$) from a source on Google's social list lands in Paid Social; a medium with no rule, such as qr or newsletter, lands in Unassigned unless the source is on one of Google's lists. Channel rules ignore case, but reports list each spelling of a value separately.

page URL + ? + utm_source=… & utm_medium=… & utm_campaign=… + #fragment
https://www.example.com/page?utm_source=newsletter&utm_medium=email&utm_campaign=diwali_sale#faq

Which utm_source and utm_medium should I use for each channel?

Source and medium pairs and the GA4 default channel each one gets, from Google's channel rules and source list (checked 2026-10-20)
Where the link goesutm_sourceutm_mediumGA4 default channel
Email newsletternewsletteremailEmail
Paid ad on Instagraminstagrampaid_socialPaid Social
Organic post on LinkedInlinkedinsocialOrganic Social
WhatsApp broadcastwhatsappsocialOrganic Social
Search ad on Bing, tagged by handbingcpcPaid Search
SMS campaignsmssmsSMS
Partner's websitepartner_sitereferralReferral
Affiliate programmeaffiliate_nameaffiliateAffiliates
QR code on a printed flyerflyerqrUnassigned (no default rule; use a custom channel group)

How to build a UTM campaign link

  1. 1
    Paste the page URLEnter the full address of the page the link should open, starting with https://. Existing parameters and a #section are kept.
  2. 2
    Fill in source, medium and campaignUse lowercase values, and pick a medium from the table so GA4 puts the visit in the right channel.
  3. 3
    Add the optional fieldsAdd a campaign ID, a paid keyword, or a content value to tell two links in the same campaign apart.
  4. 4
    Check the warnings and copy the linkFix any capitals, spaces or Unassigned channel the checks flag, then copy the campaign URL.

Frequently asked questions

Should I add UTM tags to links within my own site?
No. Google's GA4 help says campaign values that arrive mid-visit don't start a new session; they are attached to the events that carried them and used for event-based attribution, so your own tag becomes a traffic source that later key events can be credited to instead of the campaign that brought the visitor. To measure clicks between your own pages, track them as events.
Which UTM parameters are required?
Google's GA4 help says to always use utm_source, utm_medium and utm_campaign, and missing parameters show as (not set) in reports. utm_id, utm_term and utm_content are optional; if you upload campaign data, utm_id should match the IDs in that upload.
Are UTM parameters case-sensitive in GA4?
The values are: Google says utm_source=google is different from utm_source=Google, and recommends lowercase. GA4's channel rules ignore case, so Email still lands in the Email channel, but your source and medium reports show each spelling as its own row.
Why does my UTM traffic show as Unassigned in GA4?
Because no rule in GA4's default channel group matched the visit's source, medium and campaign. Mediums such as qr, print or newsletter have no rule; use one GA4 recognises, such as email, social, referral or cpc, or create a custom channel group, which Google says can be applied to reports retroactively.
What is the difference between utm_source and utm_medium?
utm_source names where the visit came from, such as google, newsletter or linkedin; utm_medium names the kind of channel, such as cpc, email or social. GA4 assigns most channels from the medium, and uses the source to tell apart search, social, video and shopping sites.

Sources

Related tools

See all 73 free tools

Need a custom dev tool for your team?

We build internal tools, dashboards, APIs, and SaaS platforms. If you can describe it, we can ship it.

Built by CountryDevs · No signup · No ads · We count visits, never what you enter