How to Set Up UTM Parameters in GA4 (With Real Examples)

UTM parameters are query string tags you add to URLs to tell GA4 where traffic came from. Without them, clicks from email campaigns appear as Direct traffic, social media clicks are unreliable, and you can’t tell which campaign drove which conversion. GA4 makes this worse than Universal Analytics did — its channel grouping rules are stricter, so untagged traffic ends up in “Unassigned” more often. This guide covers everything you need to tag links correctly from the start.

Why GA4 Specifically Needs UTM Parameters

GA4 can automatically detect some traffic sources — Google organic search, direct URL entry — but it can’t detect where a link in an email came from. Email clients don’t pass referrer headers to the browser, so every click from Gmail, Outlook, or Apple Mail arrives with no source information. GA4 records it as Direct.

The same problem applies to social media mobile apps. When someone clicks a link in the Instagram or LinkedIn app on their phone, no referrer header is passed. Without UTM parameters, that click is Direct too.

If your Direct traffic seems suspiciously high, there’s a good chance it contains a substantial amount of untagged email and social traffic.

The 5 UTM Parameters

utm_source — Where the traffic came from

The specific platform or publication sending traffic. Use lowercase, no spaces.

Use caseutm_source value
Your weekly newsletternewsletter
Facebook post or adfacebook
LinkedIn post or adlinkedin
Twitter/Xtwitter
Product Hunt launchproducthunt
Hacker News posthackernews

utm_medium — The channel type

The marketing channel category. GA4 maps specific medium values to its default channel groups — use the right ones or your traffic ends up in Unassigned.

Channelutm_medium value
All email campaignsemail
Organic social postssocial
Paid social adspaid_social
Paid search adscpc
QR codes / printqr
Affiliate linksaffiliate

The medium value email maps to GA4’s Email channel group. cpc maps to Paid Search. social maps to Organic Social. These mappings only work if you use the exact values — newsletter as a medium ends up in Unassigned.

utm_campaign — The specific campaign or initiative

What this particular send or promotion is for. Use a structured format you can filter by in GA4:

  • newsletter_apr2026 — April newsletter send
  • launch_v1_q2 — initial product launch
  • promo_spring_sale — seasonal promotion
  • retention_winback — re-engagement campaign

Keep it under 50 characters and avoid spaces. Reusing the same campaign name across multiple sends makes it impossible to compare performance between them.

utm_content — Which specific link or creative

Optional but valuable when you have multiple links in one email or multiple ad creatives in one campaign. Use it to distinguish:

  • cta_hero vs cta_footer — button position within an email
  • image_v1 vs image_v2 — A/B creative variants
  • text_link vs button — link format

utm_term — Paid keyword targeting

Used primarily for paid search to record the keyword that triggered the ad. For manual tagging: use the exact keyword, lowercase, underscores for spaces (free_utm_builder). For Google Ads with auto-tagging enabled, this parameter is handled automatically.

Naming Mistakes That Break GA4 Reporting

Mixed case. utm_source=Facebook and utm_source=facebook are two separate sources in GA4. After six months, your acquisition report will have eight variations of “facebook” that you can’t merge. Enforce lowercase everywhere.

Using the ESP name as the medium. utm_medium=mailchimp is not a valid GA4 channel medium. Mailchimp is a source, not a channel type. Use utm_medium=email&utm_source=mailchimp.

Using “newsletter” as a medium. utm_medium=newsletter doesn’t map to any GA4 channel group. Traffic ends up in Unassigned. The correct value is utm_medium=email.

Same campaign name for every email send. If every newsletter issue uses utm_campaign=newsletter, you can see aggregate email performance but can’t compare issue #47 against issue #48. Add a date or issue number.

Spaces in values. Spaces get URL-encoded as %20 or +. Use underscores instead. spring_sale_2026 not spring sale 2026.

Worked Example: Email Newsletter UTM Setup

You’re sending the April 15th edition of your weekly newsletter. It contains three links back to your website: a hero CTA button, a body text link, and a footer link. All three point to different pages.

Hero CTA → UTM builder tool:

https://webtools.engineer/utm-builder/?utm_source=newsletter&utm_medium=email&utm_campaign=digest_apr15_2026&utm_content=cta_hero

Body text link → a blog post:

https://webtools.engineer/blog/utm-parameters-ga4-guide/?utm_source=newsletter&utm_medium=email&utm_campaign=digest_apr15_2026&utm_content=link_utm_article

Footer link → homepage:

https://webtools.engineer/?utm_source=newsletter&utm_medium=email&utm_campaign=digest_apr15_2026&utm_content=link_footer_home

In GA4, under Traffic Acquisition → Session campaign, you’ll see digest_apr15_2026 as a row. Set the secondary dimension to Session content and you can see which of the three links drove more engagement and conversions from that specific send.

How to Build UTM Links Without Typing Them Manually

Manually assembling UTM strings is error-prone and slow. The free UTM Builder on WebTools.engineer generates correctly formatted, lowercase UTM URLs instantly — paste your destination URL, fill in the parameters, and copy the complete tagged link. No signup, no rate limit, runs in your browser.

Frequently Asked Questions

Do UTM parameters affect SEO?

No. UTM parameters are stripped by Google before the URL is indexed. Googlebot ignores query strings when determining canonical URLs (assuming your canonical tags are set correctly). UTM parameters have zero effect on search rankings.

Can I use UTM parameters on internal links?

You can, but you shouldn’t. UTM parameters on internal links overwrite the original session source in GA4. If a user arrived via Google organic, then clicks an internal link tagged with utm_source=newsletter, GA4 will attribute that session to the newsletter — losing the organic attribution entirely.

Does GA4 automatically tag Google Ads campaigns?

Yes. Google Ads uses auto-tagging (the gclid parameter) rather than UTM parameters by default. If you have auto-tagging enabled in Google Ads and your GA4 property is linked, campaigns are attributed automatically. You can still add manual UTM parameters but they’re usually redundant for Google Ads traffic.

What happens if I forget to add UTM parameters to a campaign link?

Traffic from that link will most likely appear as Direct in GA4 (for email clicks) or as Referral from the platform domain (for some desktop social clicks). The session is not lost — it just can’t be attributed to your specific campaign. You can’t retroactively apply UTM parameters to traffic that already happened.

Should UTM parameters be lowercase?

Always. GA4 is case-sensitive for UTM values. “Email” and “email” are two different sources. Using a consistent lowercase convention prevents your acquisition reports from fragmenting into duplicate rows.

Related Tools

  • UTM Builder — Build correctly formatted UTM URLs without typing query strings manually
  • SERP Preview Tool — Check how your destination pages look in Google before linking to them
  • Character Counter — Check link text and campaign name length

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top