The UTM builder also shows which GA4 channel the link will be attributed to, so you can catch a bad tag before the clicks come in.
If you put the wrong tag on a link, the link still works and gets clicks, but GA4 files them in the wrong report.
What is a UTM tag?
A UTM tag is a label on a link that tells GA4 where the click came from. For example, a tag can say which website sent the click, what kind of ad it was, and which campaign it belongs to.
Each tag has a name and a value. In utm_source=linkedin, the name is utm_source and the value is linkedin. Your visitor never sees or touches the tags. GA4 reads them when the page opens and puts the visit in the right report.
What a UTM link looks like
A UTM link is a normal page address with UTM tags added after a question mark. An ampersand (&) separates one tag from the next (Google Analytics Help on UTM link format).
https://example.com/fans/?utm_source=linkedin&utm_medium=cpc&utm_campaign=spring-fan-sale
| Part of the link | What it tells GA4 |
|---|---|
https://example.com/fans/ | The page the visitor opens |
utm_source=linkedin | LinkedIn sent the visit |
utm_medium=cpc | It was a paid click |
utm_campaign=spring-fan-sale | It came from the spring fan sale |
GA4 reads those 3 tags and files the visit under Paid Social. Nothing changes for the visitor. They see the same page with or without the tags.
Tag order and the # anchor
Put the tags in any order you like. GA4 reads utm_campaign no matter where it is in the link.
Placement matters more. Tags go after the question mark (?) and before any # anchor, for example /fans/?utm_source=linkedin#specs. If you put them after the #, GA4 reads them as part of the anchor and ignores them. The UTM builder puts the anchor last for you.
The 6 UTM tags GA4 reads
GA4 reads 6 UTM tags, and 3 of them belong on every link: source, medium, and campaign. Leave one out and GA4 shows (not set) where the value should be (Google Analytics Help on required UTM tags).
| Tag | Required | What it records | Example |
|---|---|---|---|
utm_source | Yes | Who sent the visit | google, linkedin, newsletter |
utm_medium | Yes | The type of traffic | cpc, email, social |
utm_campaign | Yes | The campaign or promotion | spring-fan-sale |
utm_term | No | The paid keyword | {keyword} |
utm_content | No | Which ad or link got the click | header-button |
utm_id | No | The campaign ID, for importing cost data | {campaignid} |
Google lists 3 more tags. We left them out of the UTM builder:
utm_source_platform: add it by hand if you buy ads through Search Ads 360 or Display & Video 360.utm_creative_format: GA4 doesn’t report it yet.utm_marketing_tactic: GA4 doesn’t report it yet.
Fill in the first 3 every time. Add the rest when you want keyword or ad-level detail.
Which GA4 channel your link is attributed to
GA4 files every tagged visit under a channel, for example Paid Search or Email. GA4 picks the channel by matching the source and medium against Google’s default channel rules. When a visit matches no rule, GA4 attributes it to Unassigned (Google Analytics Help on default channel rules).
| utm_medium | utm_source | GA4 channel |
|---|---|---|
| cpc, ppc, retargeting, or anything starting with “paid” | google, bing | Paid Search |
| cpc, ppc, or paid | facebook, linkedin | Paid Social |
| cpc, ppc, or paid | youtube | Paid Video |
| cpc, ppc, or paid | a site not on Google’s lists | Paid Other |
| display or banner | any | Display |
| your list or email tool | ||
| referral | a partner site | Referral |
| newsletter, qr, or print | a site not on Google’s lists | Unassigned |
The medium matters most. For example, a common misattribution is calling the medium newsletter:
| Tags on the link | GA4 channel |
|---|---|
utm_source=mailchimp&utm_medium=newsletter | Unassigned |
utm_source=mailchimp&utm_medium=email |
No GA4 rule matches the word newsletter, so GA4 attributes every click from that email to Unassigned. Change one word and the same clicks show up under Email.
When a link would be attributed to Unassigned, the UTM builder shows the word Unassigned in red, so you can fix the medium before you send the link.
UTM tags on Google Ads campaigns
Google Ads campaigns don’t need UTM tags for GA4 when auto-tagging is on. Auto-tagging is a Google Ads setting that adds a click ID to every ad link. GA4 reads that ID to get the source, medium, and campaign, and uses it over any UTM tags on the same link (Google Analytics Help on auto-tagging). Leave auto-tagging on.
Whether you need UTM tags on top depends on where you want the data:
| Where you want the data | What to add |
|---|---|
| GA4’s standard reports, with Google Ads linked to GA4 | Nothing. Auto-tagging covers it |
| GA4’s Manual term dimension | utm_term={keyword} |
| Every quote request in your inbox or customer relationship management (CRM) system | The full set of tags, through the Final URL suffix |
To set up the Final URL suffix:
- Click the Google Ads preset in the UTM builder above.
- Type the campaign name exactly as it reads in Google Ads.
- Copy the box labeled Google Ads final URL suffix.
- In Google Ads, paste it into the Final URL suffix field for that campaign (Google Ads Help on the Final URL suffix).
Set the suffix campaign by campaign. A suffix at the account level gives every campaign the same campaign name.
The {keyword}, {creative}, and {campaignid} tags are ValueTrack parameters. Google swaps in the real keyword, ad ID, and campaign ID on each click (Google Ads Help on ValueTrack parameters). The UTM builder keeps the curly braces intact, so the suffix works as pasted.
Don’t want to deal with any of this? Take a look at our Google Ads management service, and we’ll set up the tracking and run the ads for you.
Save UTM values with every quote request
Saving UTM tags with each quote request shows which campaign produced each lead. GA4 counts visits, while your sales team works quote requests. With the tags saved, the campaign shows up in the same email or CRM record your team already reads.
We do this on writegoodcode.com. On someone’s first visit, the site saves their UTM tags, the site that sent them, and the first page they opened. When they send our contact form, those details print at the bottom of the message. A lead from a LinkedIn ad would end like this (example values):
How they found us: LinkedIn
Referrer: https://www.linkedin.com/
UTM: linkedin / cpc / spring-fan-sale
First page: /pricing/ on 2026-10-23
We keep the tags from the first visit, because that’s the campaign that found them.
The setup has 3 parts:
- A short script on every page reads the UTM tags from the landing page URL and saves them in the browser.
- Hidden fields in your quote form, or a line added to the message, carry the saved values.
- The form sends them with the lead, so each quote request arrives with its campaign attached.
Save the tags as soon as someone arrives. If a buyer clicks to a second page before asking for a quote, the tags are already gone from the URL.
A quote request with its campaign attached tells you which ads to keep paying for.
Naming rules that keep your reports clean
UTM tag values are case sensitive in GA4, so google and Google become 2 separate rows (Google Analytics Help on case sensitivity). The channel rules ignore capitals. Your reports don’t.
| Rule | Use | Avoid |
|---|---|---|
| Lowercase everything | google | Google |
| Dashes instead of spaces | spring-fan-sale | spring fan sale, which turns into %20 |
| One name per platform | facebook, every time | facebook, fb, and Facebook |
| Match your ad platform | The campaign name in Google Ads | A nickname only your team knows |
Keep the approved names in a shared spreadsheet so everyone who tags links uses the same ones. The UTM builder points out capitals and spaces, and fixes both with one click.
Pick one spelling for each value and stick to it.
What the UTM builder does with your link
The UTM builder cleans up your link before it adds the tags.
| What you enter | What the UTM builder does |
|---|---|
| A URL without https:// | Adds https:// |
| A URL that already has ?color=blue | Keeps it and adds the tags after |
| A URL with old UTM tags | Replaces them, so the link never carries 2 sources |
| A URL with a #specs anchor | Keeps the anchor at the end |
| Spaces or symbols in a tag | Encodes them so the link works |
| {keyword} or another ValueTrack tag | Leaves the curly braces alone |
The channel check uses Google’s rules for manually tagged traffic and the most common search, social, video, and shopping sites. Google keeps a longer list of sites than we check, so the UTM builder tells you when your source isn’t on ours.
Everything runs in your browser. Nothing you type leaves your computer.
Where to find UTM data in GA4
UTM data shows up in GA4’s Traffic acquisition report.
- Open Reports.
- Go to Acquisition, then Traffic acquisition.
- Change the table’s main dimension to Session source / medium or Session campaign.
Each source and medium pair gets its own row (Google Analytics Help on the Traffic acquisition report). To see the full landing URL with its tags, use the Page location dimension. GA4 strips UTM tags out of Landing page + query string.
Questions we get
What does UTM stand for?
UTM stands for Urchin Tracking Module. Urchin was the web analytics company Google bought in 2005, and its software became Google Analytics. The name stuck, and GA4 still reads the same utm_ tags today, with 6 tags in total and 3 that belong on every link.
Do UTM parameters hurt SEO?
UTM parameters do not hurt SEO as long as each page carries 1 canonical tag that points to the clean URL. UTM tags belong on links you share in ads, emails, and posts, so search engines rarely see them. Keep them off links between your own pages, where they can take credit for conversions.
Is anything I type into this UTM builder saved or sent?
The UTM builder saves and sends nothing you type. It runs in your browser, so the link you build stays on your computer, and nothing is stored after you close the page. It then shows which GA4 channel your link is attributed to, using the 3 required tags: source, medium, and campaign.