A UTM builder adds tracking tags such as utm_source, utm_medium and utm_campaign to a landing page URL, so Google Analytics 4 can show which ad, email or post sent each visit. Paste your URL, pick a preset or fill in the fields, and copy the tagged link. The tool runs in your browser.
Free UTM builder for GA4
Runs in your browser. Nothing you type is sent or stored.
Start from a preset
Text inside {braces} or {{double braces}} is kept as typed, so ad platform parameters still work.
Parameters only is the part after the ?, for a Final URL suffix field or Meta’s URL parameters field.
Key Observations
- GA4 reports utm_id, utm_source, utm_medium, utm_campaign, utm_source_platform, utm_term and utm_content. Google says utm_creative_format and utm_marketing_tactic are not currently reported.
- UTM values are case sensitive, so "Email" and "email" become two rows. The default channel rules themselves are not case sensitive.
- utm_medium does most of the work in channel grouping. A medium such as "print" or "newsletter" matches no default rule, so the visit lands in Unassigned unless utm_source is on one of Google's site lists.
- With Google Ads auto-tagging on, GA4 takes source, medium and campaign from the gclid, and there is no override option. Manual utm_term and utm_content still fill the Manual term and Manual ad content dimensions.
- Meta and Microsoft Ads can fill UTM values for you with dynamic parameters like {{campaign.name}} and {keyword}. This builder keeps those braces exactly as typed.
What are UTM parameters, and which ones does GA4 read?
UTM parameters are name and value pairs added after the ? in a URL that tell Google Analytics where a visit came from. GA4 reads seven of them: utm_id, utm_source, utm_medium, utm_campaign, utm_source_platform, utm_term and utm_content. Google lists two more, but says they are not reported in GA4 properties yet.
Google's URL builders help page says to always use utm_source, utm_medium and utm_campaign. It also strongly recommends utm_id and utm_source_platform. Any parameter you leave out shows as (not set) in reports.
| Parameter | What it describes | GA4 dimension (session scope) | Reported in GA4? |
|---|---|---|---|
| utm_source | Where the click came from: google, newsletter, linkedin | Session source | Yes |
| utm_medium | The channel: cpc, email, social | Session medium | Yes |
| utm_campaign | Campaign, product or promo name | Session campaign | Yes |
| utm_id | Campaign ID, the same ID you use for data import | Campaign ID | Yes |
| utm_term | Paid keyword | Session manual term | Yes |
| utm_content | Which ad or link was clicked | Session manual ad content | Yes |
| utm_source_platform | The buying platform, such as Search Ads 360 or Display & Video 360 | Session manual source platform | Yes |
| utm_creative_format | Creative type: display, native, video, search | Listed, but not populated | Not currently reported |
| utm_marketing_tactic | Targeting: remarketing, prospecting | Listed, but not populated | Not currently reported |
Dimension names come from Google's page on traffic-source dimensions, manual tagging and auto-tagging. The builder above covers the six fields most advertisers use. Google's examples for utm_source_platform are Search Ads 360 and Display & Video 360, so we left it out to keep the form short.
How do you create a UTM link with this UTM builder?
To create a UTM link, paste the full landing page URL, choose a preset or type a source, medium and campaign, then copy the result. The builder keeps any existing parameters and #section, swaps spaces for hyphens, sets values to lowercase, and checks your medium against GA4's channel rules as you type.
- Paste the landing page URL, starting with https://. If you leave out the protocol, the tool offers a one-click fix.
- Pick a preset, or fill in utm_source, utm_medium and utm_campaign yourself.
- Add utm_content when one email or post has more than one link to the same page.
- Read the green channel line and any amber warnings under the output.
- Click Copy URL. For ad platforms, use Copy parameters only and paste it into the tracking field.
- For many pages, paste one URL per line into bulk mode. Every line gets the same tags.
What each preset fills in
| Preset | utm_source | utm_medium | Other values | GA4 channel it targets |
|---|---|---|---|---|
| Google Ads (manual) | cpc | utm_id={campaignid}, utm_term={keyword}, utm_content={creative} | Paid Search | |
| Meta Ads (dynamic) | fb | paid_social | utm_campaign={{campaign.name}}, utm_id={{campaign.id}}, utm_term={{adset.name}}, utm_content={{ad.name}} | Paid Social |
| Microsoft Ads | bing | cpc | utm_id={CampaignID}, utm_term={keyword}, utm_content={AdId} | Paid Search |
| Email newsletter | newsletter | utm_content=main-cta | ||
| LinkedIn organic | social | utm_content=company-page | Organic Social | |
| QR code or print | qr-code | utm_content=flyer | Unassigned unless you add a custom channel group |
The QR preset shows a warning on purpose. GA4 has no default channel for print, so you either accept Unassigned or build a custom channel group with a rule for medium "print". Source and medium still report either way.
Which utm_medium and utm_source values map to GA4 default channel groups?
GA4 sorts manually tagged visits into default channels mostly by utm_medium. Any medium containing "cp", or equal to ppc or retargeting, or starting with "paid" counts as paid. Then utm_source decides between Paid Search, Paid Social, Paid Video and Paid Other, based on Google's own lists of search, social and video sites.
The rules below come from Google's default channel group definitions. The site lists are in a spreadsheet Google links from that page, and Google says the rules may change over time.
| GA4 channel | utm_medium that matches | utm_source or campaign condition |
|---|---|---|
| Paid Search | Contains "cp", or ppc, retargeting, or starts with "paid" | Source is on Google's search-site list |
| Paid Social | Same paid mediums | Source is on Google's social-site list |
| Paid Video | Same paid mediums | Source is on Google's video-site list |
| Paid Shopping | Same paid mediums | Source is on the shopping-site list, or the campaign name contains "shopping" or "shop" (not inside another word) |
| Paid Other | Same paid mediums | Source is on none of the lists |
| Cross-network | Any | Campaign name contains "cross-network" |
| Display | display, banner, expandable, interstitial, cpm | None |
| Organic Shopping | Any | Source is on the shopping-site list, or the campaign name matches the same shop pattern |
| Organic Social | social, social-network, social-media, sm, social network, social media | Or source is on the social-site list |
| Organic Video | Contains "video" | Or source is on the video-site list |
| Organic Search | organic | Or source is on the search-site list |
| email, e-mail, e_mail, e mail | Or the same values in source | |
| Affiliates | affiliate | None |
| Referral | referral, app, link | None |
| SMS | sms | Or source is sms |
| Audio | audio | None |
| Mobile Push Notifications | Ends with "push", or contains "mobile" or "notification" | Or source is firebase |
| AI Assistant | ai-assistant | GA4 also sets this when the referrer is a known AI assistant |
| Unassigned | Anything that matches no rule | None |
Why does my UTM traffic show as Unassigned?
UTM traffic shows as Unassigned when the medium and source match none of the rules above. Common causes are mediums like "newsletter", "print" or "qr" paired with a source that is not on any of Google's lists. Put the platform name in utm_source and use a medium from the table, such as email or social. The builder flags this before you copy the link.
Note one overlap: "cpm" is on the Display list and also contains "cp", so it matches the paid pattern too. If you want a clean Display match, use display or banner instead. Google's own best-practice example uses fb for Facebook, insta for Instagram and paid_social as the medium.
Should you add UTMs to Google Ads if auto-tagging is on?
Usually no. Google Ads auto-tagging adds a gclid to every ad click, and GA4 uses it to fill source, medium, campaign and extra Google Ads dimensions. When a URL has both, GA4 uses the auto-tagged values, and Google states there is no override option. Manual UTMs only help other tools, or the Manual term and Manual ad content fields.
Google's auto-tagging help page says auto-tagging is on by default for new accounts. It also warns that some sites reject unknown URL parameters, and that redirects must pass the gclid through to the final page. Test one ad click after any site change.
Google's page on the benefits of auto-tagging adds that manually tagged utm_term and utm_content still populate the Manual term and Manual ad content dimensions. Google's traffic-source dimensions page lists one more exception: if the gclid cannot be used, GA4 takes all traffic-source values from the UTM parameters.
When manual tagging for Google Ads still makes sense
- Your CRM or call tracking tool reads UTMs but cannot decode a gclid.
- The Google Ads account is not linked to the GA4 property you report from.
- You want keyword or creative IDs in Manual term and Manual ad content for a quick check.
For manual tags, use ValueTrack parameters such as {campaignid}, {keyword} and {creative}. Google's ValueTrack list shows {keyword} is blank when an ad matches without a keyword, as in Performance Max. Google's list has no campaign name parameter, so type the name. Our guide to Google Ads conversion tracking covers the linking side.
How do you add dynamic UTM parameters to Meta and Microsoft Ads?
Meta and Microsoft Ads both replace placeholder values in your tracking string when the ad is served, so one template tags every campaign. Meta uses double braces, such as {{campaign.name}}, in the URL parameters setting under Tracking when you build the ad. Microsoft Ads uses single braces, such as {keyword}, in a Final URL suffix or tracking template. Use the builder's parameters-only output for both.
Meta Ads URL parameters
Meta's developer documentation on URL tags for tracking lists six dynamic values: {{campaign.id}}, {{adset.id}}, {{ad.id}}, {{campaign.name}}, {{adset.name}} and {{ad.name}}. Name values come from a snapshot taken when the object is first published. Renaming a campaign later may not change what lands in GA4.
The Meta preset above uses {{campaign.name}} for utm_campaign and {{campaign.id}} for utm_id, so a renamed campaign still joins on its ID. Google's URL builders page also shows utm_campaign={{campaign.name}} as its example of one name per campaign. If GA4 and Meta disagree on results, our breakdown of ROAS gaps between Google, Meta and GA4 explains why.
Microsoft Ads tracking and MSCLKID
Microsoft's account settings documentation describes MSCLKID as a 32-character GUID that is unique to each ad click. When MSCLKID auto-tagging is on, it is added to the landing page URL. GA4's default channel rules read click data only from Google's own products, such as gclid for Google Ads, so Microsoft Ads clicks are grouped by their UTM values. Tag them.
Put UTMs in the Final URL suffix. Microsoft's URL tracking guide says the suffix cannot start with ?, & or #, and that settings on lower levels override higher ones. Its examples use {keyword}, {CampaignID}, {AdGroupID} and {AdId}. Our Microsoft Ads tracking template guide covers the full setup.
Where do you see UTM data in GA4?
You see UTM data in GA4 under Reports, then Acquisition, then Traffic acquisition. Change the primary dimension to Session source / medium, Session medium, Session source or Session campaign. For utm_term and utm_content, add Session manual term or Session manual ad content as a secondary dimension.
One detail trips people up. Google's URL builders page says UTM parameters are removed from the "Page path + query string" and "Landing page + query string" dimensions. To see the full tagged URL, use the Page location dimension in an exploration.
Before a campaign goes live, click the tagged link in a private window and check the Realtime report for your visit. If you are still moving reports over from Universal Analytics, our GA4 migration guide maps the old campaign reports to the new ones.
What are the most common UTM mistakes?
The most common UTM mistakes are tagging links between your own pages, mixing upper and lower case, using a medium that matches no GA4 channel, and adding manual tags on top of Google Ads auto-tagging. Each one splits or misfiles data. Most are easy to prevent with a naming sheet and a builder that warns you.
- UTMs on internal links. A home page banner tagged utm_source=homepage can overwrite the traffic source GA4 credits for later events in that visit. A sale that started from a Google ad can then be credited to your own banner. Track internal promos with GA4 events instead.
- Mixed case. Facebook, facebook and FB are three sources in GA4. Keep Force lowercase switched on.
- The platform name as the medium. utm_medium=facebook matches no medium rule, so the channel then rests on the source alone. Use utm_source=fb with utm_medium=paid_social for ads, or social for organic posts.
- Spaces and symbols. A space becomes %20 and an ampersand breaks the parameter. The builder encodes these, but hyphens read better in reports.
- UTMs after the #. Anything after # is not part of the query string. The builder always places tags before the fragment.
- Sharing a URL that has a gclid. Copying an ad landing page URL from your browser carries the click ID along. The builder warns when it sees gclid, msclkid or fbclid.
- Expecting utm_creative_format in reports. Google says it is not reported yet, so put creative type in utm_content for now.
How we keep UTM naming consistent across client accounts
When we take over a paid account, the first GA4 check is Traffic acquisition filtered to Unassigned and to sources that differ only by case. Those two views show where naming has drifted.
We then agree one naming sheet with the client: a fixed list of sources and mediums, and a campaign pattern of channel, offer and month. Every new link goes through a builder that enforces it. Our client work is covered by signed NDAs, so this guide shares the process we follow rather than client names or results.
FAQ
Are UTM parameters case sensitive in GA4?
Yes. Google states that utm_source=google and utm_source=Google are different values, and that SpringSale and Spring_Sale count as two campaigns. The default channel rules ignore case, so both may land in the same channel, but your source and campaign reports will still split. Lowercase everything.
Is Google's Campaign URL Builder still available for GA4?
Yes. Google's help page links to a GA4 Campaign URL Builder for websites and a separate Play Campaign URL Builder for Android app campaigns, both on the GA Demos and Tools site. This page adds presets, bulk mode, dynamic parameter support and GA4 channel warnings on top of the same parameters.
Which UTM parameters are required?
GA4 does not reject a link with missing tags, but Google says to always use utm_source, utm_medium and utm_campaign. Missing parameters show as (not set). Google's (not set) help page also lists incomplete or incorrect UTM parameters as a common cause of that value.
What is utm_id used for?
utm_id holds a campaign ID. Google says to use the same IDs you use when uploading campaign data, so imported cost and campaign details can join to your sessions. For Meta and Microsoft Ads, the presets fill it with the platform's campaign ID automatically.
Can I use a UTM link in a QR code?
Yes. Build the link here with the QR preset, then paste the tagged URL into any QR code generator. Give each placement its own utm_content, such as flyer or packaging. Since print has no default channel, set up a custom channel group if you want it reported as its own channel.
Do I need UTMs for Google Ads and Microsoft Ads?
For Google Ads with auto-tagging and a linked GA4 property, no. GA4 uses the gclid instead. For Microsoft Ads, yes, because GA4's default channel rules do not use MSCLKID. Add them once in the account-level Final URL suffix with dynamic values.
What is the difference between utm_source and utm_medium?
utm_source names the site or sender, such as google, fb or newsletter. utm_medium names the type of channel, such as cpc, paid_social or email. In GA4's channel rules, the medium decides most channels, and the source splits paid traffic into search, social or video.
Want a second pair of eyes on your GA4 attribution?
Clean UTMs fix how traffic is labeled, but they will not fix a broken conversion setup. Hustle Marketers was founded in 2020, and founder Ishant Sharma has worked in Google Ads, Microsoft Ads and SEO since 2013. We are a Google Partner, Meta Business Partner and Microsoft Advertising Partner.
Our PPC management costs $600 to $800 per platform per month, month to month, and you keep ownership of your ad accounts. For more free tools, see our tools page, the keyword match type wrapper, the Shopping feed attribute mapper, the ROMI calculator and our list of free PPC tools.








