The five UTM parameters
| Parameter | Answers | Examples |
|---|---|---|
utm_source | Who sent the visit? | newsletter, google, facebook, partner_blog |
utm_medium | Through what kind of channel? | email, cpc, social, paid_social, display, affiliate |
utm_campaign | Which campaign? | spring_sale_2025, product_launch |
utm_term | Which keyword? (paid search) | blue_widgets |
utm_content | Which link or creative? | header_button, banner_a |
GA4 also reads utm_id (a campaign ID, used for cost data imports) and, less commonly, utm_source_platform, utm_creative_format and utm_marketing_tactic.
Getting the channel right in GA4
GA4 sorts every visit into a default channel group (Email, Organic Social, Paid Social, Paid Search, Display, Affiliates and so on) using rules on source and medium. If your medium does not match any rule, the visit lands in Unassigned, and the campaign is hard to find in standard reports. Safe mediums: email for email, social for unpaid social posts, paid_social or cpc with a social source for social ads, cpc for search ads, display or banner for display ads, affiliate, referral, sms, push, video, audio. The builder warns when a medium is likely to be unassigned.
Conventions that keep reports clean
- Lowercase everything. GA4 is case-sensitive:
Emailandemailbecome two rows. - Pick one word separator (underscores are common) and stick to it.
- Do not tag internal links. A UTM link from your own home page to your own sale page starts a new session and overwrites the real source of the visit.
- Never put personal data (email addresses, names, user IDs) in UTM values. Analytics terms forbid it, and URLs leak into logs and referrers.
- Google Ads does not need UTMs if auto-tagging (
gclid) is on and linked to GA4.
How the builder treats your URL
Existing query parameters are kept; UTM parameters are added after them; a #fragment stays at the very end, where it belongs (parameters placed after # are never sent to the server, a common bug). If the URL already has a UTM parameter that you fill in, it is replaced rather than duplicated. Values are percent-encoded, so spring sale becomes spring%20sale (or uses the separator you choose).
The URL parser
Paste any URL to see its scheme, host (with internationalised domain names shown in Unicode), port, path (decoded), every query parameter decoded, and the fragment. It labels UTM parameters and advertising click IDs such as gclid, fbclid and msclkid, and flags parameters that appear twice, which different systems read differently.