UTM parameters are the only way most traffic sources get named correctly in GA4. They are also the most casually abused thing in marketing: capitalised, misspelt, missing, and applied to Google Ads links where they do harm. This guide sets a standard you can hand to anyone who creates a link, explains how GA4 interprets each parameter, and covers the interaction with auto-tagging and ad platform click IDs.
How GA4 Reads Them
| Parameter | GA4 dimension | Required | Example |
|---|---|---|---|
| utm_source | Session source | Yes | newsletter, facebook, linkedin, partner-site |
| utm_medium | Session medium | Yes | email, paid_social, social, referral, cpc, display |
| utm_campaign | Session campaign | Yes in practice | 2026-11-black-friday |
| utm_content | Session manual ad content | Optional | hero-banner, footer-link, carousel-2 |
| utm_term | Session manual term | Optional | audience or keyword |
| utm_id | Session campaign ID | Optional | internal campaign ID for cost import |
| utm_source_platform | Session source platform | Optional | the buying platform, such as Google Ads or Meta |
| utm_creative_format | Session creative format | Optional | video, carousel, static |
| utm_marketing_tactic | Session marketing tactic | Optional | prospecting, remarketing |
GA4 builds the Default channel group from source and medium. If the medium does not match a known pattern, the session lands in Unassigned.
The Medium Values That Map to Channels
Use exactly these:
| Channel | utm_medium |
|---|---|
| Paid Social | paid_social, or cpc with a social source |
| Organic Social | social |
| Paid Search | cpc |
| Display | display |
| Affiliate | affiliate |
| Referral | referral |
| SMS | sms |
| Audio | audio |
| Video | video |
Lowercase, no spaces, no variations.
The Standard
- Lowercase everything.
Facebookandfacebookare two sources. - Hyphens inside values, never spaces.
black-friday, notBlack Friday. - Source is where the link lives. The platform or site: facebook, instagram, linkedin, newsletter, partner-name.
- Medium is the type of channel from the table above.
- Campaign is dated and descriptive.
2026-11-black-friday,2026-q4-webinar-series. Date first so they sort. - Content distinguishes placements or creatives.
story-video-a,header-cta. - Term for audience or keyword where it applies.
- No UTMs on internal links. A UTM on a link from your homepage to your pricing page starts a new session with a fake source and destroys attribution.
- No UTMs on Google Ads final URLs. Auto-tagging handles it. If a tool insists, use the tracking template with
{lpurl}and ValueTrack parameters so the gclid survives. - Keep a tagging sheet. Every link is logged with its parameters and the date, so when a campaign shows in GA4 everyone knows what it was.
Google Ads and Auto-Tagging
Auto-tagging appends gclid to every Google Ads click. GA4, when linked to the Ads account, resolves the gclid into campaign, ad group, keyword and creative. Manual UTMs on the same URL override those values in GA4 if the override setting is on in the GA4 Google Ads link, so leave the override off and leave the UTMs off.
If a third-party tool needs UTMs on Google Ads links, put them in the account-level tracking template:
{lpurl}?utm_source=google&utm_medium=cpc&utm_campaign={campaignid}&utm_content={creative}&utm_term={keyword}
GA4 will still prefer the gclid data when the override is off.
Meta, TikTok, LinkedIn and Others
These platforms append their own click IDs, fbclid, ttclid, li_fat_id, for their pixels. GA4 does not read those for attribution, so UTMs are essential. Use dynamic parameters where the platform supports them:
Meta URL parameters field:
utm_source=facebook&utm_medium=paid_social&utm_campaign={{campaign.name}}&utm_content={{ad.name}}&utm_term={{adset.name}}
Name campaigns, ad sets and ads with the same lowercase hyphen standard so the dynamic values stay clean.
Most email platforms add UTMs automatically. Check their defaults: many use utm_medium=email correctly but set the source to the platform name rather than your list. Set the source to the list or programme, such as newsletter or onboarding, and the campaign to the send.
A Tagging Template
| Field | Value |
|---|---|
| Landing URL | https://example.com/offer |
| utm_source | |
| utm_medium | paid_social |
| utm_campaign | 2026-11-audit-offer |
| utm_content | carousel-b |
| utm_term | ecommerce-managers |
| Final URL | https://example.com/offer?utm_source=linkedin&utm_medium=paid_social&utm_campaign=2026-11-audit-offer&utm_content=carousel-b&utm_term=ecommerce-managers |
Build it as a spreadsheet with a formula for the final URL so nobody types parameters by hand.
Checking Your Work
- Click the link and confirm the parameters are present on the landing page URL after any redirects.
- In GA4 Realtime, open the session source and medium card and confirm the values appear as intended.
- Weekly, open Traffic acquisition and look at the Unassigned row. Click into source and medium to find the offending values and fix the links.
Preserving UTMs Through Your Site
If forms or booking tools redirect to other domains, or if you want the original campaign stored with a lead, capture the UTMs on landing into a first-party cookie and write them into hidden form fields. The same GTM tag that stores the gclid for offline conversions can store the five UTM values; the Google Ads offline conversions guide on this site shows the pattern.
Outcome
Every session in GA4 lands in a real channel, campaigns sort and read cleanly, paid search data comes from auto-tagging without interference, and social and email traffic is attributed instead of lost to Unassigned.
