On this page+
The single mistake that creates more messy GA4 reports than any other is putting the channel name in utm_medium. utm_medium=facebook instead of utm_medium=social. Every time someone makes that mistake, their Facebook traffic vanishes from the Paid Social row and lands in "Other," which is the GA4 graveyard for misconfigured tags.
Here is the rule, the lookup table that fixes it, and the half-dozen edge cases that come up.
The rule
utm_source is the specific origin of the click. utm_medium is the channel category that origin falls into. One source, one medium, every time.
utm_source=facebookandutm_medium=social(Facebook organic post)utm_source=facebookandutm_medium=paid_social(Facebook ad)utm_source=mailchimpandutm_medium=email(any email through Mailchimp)utm_source=linkedinandutm_medium=social(LinkedIn organic post)utm_source=linkedinandutm_medium=paid_social(LinkedIn ad)utm_source=googleandutm_medium=cpc(Google paid search)
The source is always specific. The medium is always categorical.
Why GA4 cares about utm_medium specifically
GA4's default channel grouping is built around utm_medium. The exact strings GA4 looks for, in the channels most marketing teams use:
| GA4 channel group | utm_medium values it matches |
|---|---|
| Paid Search | cpc, ppc, paidsearch |
| Paid Social | paidsocial, paid_social, social-paid, paid-social |
| Organic Social | social, social-network, social-media, sm |
| email, e-mail, e_mail | |
| Display | display, banner, expandable, cpm |
| Affiliates | affiliate, affiliates |
| Referral | referral |
| Organic Shopping | organic_shopping |
| Paid Shopping | paid_shopping, paidshopping |
Any value that does not match these strings goes into "Unassigned" or "Other" depending on the GA4 version. A utm_medium=facebook lands in Other. A utm_medium=paidsocial lands cleanly in Paid Social. The tag is a one-character difference and the report is a different row.
The lookup table that keeps your team aligned
Pin this somewhere. The table below covers roughly 95 percent of marketing channels:
| Channel | utm_source examples | utm_medium |
|---|---|---|
| Google paid search | cpc | |
| Google organic | organic | |
| Bing paid search | bing | cpc |
| Facebook ads | paid_social | |
| Facebook organic | social | |
| Instagram ads | paid_social | |
| Instagram organic / bio | social | |
| LinkedIn ads | paid_social | |
| LinkedIn organic | social | |
| TikTok ads | tiktok | paid_social |
| Twitter / X organic | social | |
| Reddit organic | social | |
| Reddit ads | paid_social | |
| YouTube organic | youtube | social |
| social | ||
| Mailchimp | mailchimp | |
| Iterable, Klaviyo, Customer.io | (vendor name) | |
| Customer newsletter | newsletter | |
| Sales rep email | sales-email | |
| Partner blog post | partner-name | referral |
| Affiliate network | (network or affiliate ID) | affiliate |
| Display ad network | google-display, meta-audience | display |
| Podcast ad | podcast-name | podcast |
| QR scan from print | qr | offline |
| SMS | sms | sms |
Two notes:
- Use lowercase, hyphens, and underscores. GA4 distinguishes
paid_socialandpaid-social. Both appear in the GA4 channel match list. Pick one and stay consistent. Underscore is more common in GA4 documentation; hyphen reads better in URLs. We default to underscore for the medium values listed above and hyphen for source values. - Use
cpcfor paid search,paid_socialfor paid social. This is a GA4 oddity. Paid search uses the historic Google Ads conventioncpc. Paid social uses the modernpaid_social. Both work; mixing them inside one campaign does not.
The three edge cases that trip teams up
Influencer posts. If a creator posts about your product on their channel, the source is the creator (utm_source=creator-name) and the medium depends on how you compensated them. Paid sponsorship is paid_social. Affiliate commission is affiliate. Earned-media organic mention is referral or social depending on the channel.
Email links inside email. A weekly newsletter contains links. A subscriber clicks. Source is the newsletter platform (mailchimp, klaviyo). Medium is email. So far so good. The trap: when the visitor lands and clicks an internal link on your site, GA4 attributes a new pageview to the original source as long as the session continues. This is correct. The mistake some teams make is appending UTMs to internal site links inside the same session, which breaks the attribution chain.
Cross-domain campaigns. Your campaign sends a visitor from marketing.com to app.com. Without cross-domain measurement enabled in GA4, the second domain shows up as a referrer and the original utm_source and utm_medium get clobbered. Fix: Admin → Data Streams → Configure tag settings → Configure your domains. Add both domains.
The smart-paste shortcut
Manually typing source-medium pairs into a UTM builder is the slowest path to the right answer. The faster path:
- Build the URL once for each channel using a builder that enforces the table above.
- Save the templates in a shared doc your team works from.
- When a new campaign starts, copy the template URL and replace only the
utm_campaignvalue.
The Trakl free UTM builder has the source/medium taxonomy from the table above built into dropdowns. The medium dropdown filters to whatever is valid for the source you picked, so a marketer cannot pick linkedin / cpc even by mistake.
What to do if your historical data is already a mess
Three steps:
- Open GA4. Reports → Acquisition → Traffic Acquisition. Group by Source / Medium.
- Sort by sessions descending. Look at the top 30 rows.
- For every row where
mediumis not in the GA4 channel list, write down the campaign that produced it.
Now you have a hit list. Going forward, every link your team builds gets the right utm_medium from the start. Old data stays wrong; you cannot fix the past without a republished tracking plan, which is rarely worth it. The point is to stop the bleeding.
For the longer rules around naming, casing, and the team-discipline question, the piece on utm naming conventions is the next read.
Frequently filed
Common questions.
Q.01What is the difference between utm_source and utm_medium?+
utm_source is the specific origin of the click, like facebook, mailchimp, or partner-newsletter. utm_medium is the channel category that origin falls into, like social, email, or referral. One source maps to one medium, every time.
Q.02What happens if I put facebook in utm_medium?+
GA4's default channel grouping reads utm_medium to bucket traffic into Paid Social, Email, Organic Search, and so on. If utm_medium contains a source name like facebook, your traffic falls into the Other channel group and disappears from the report you actually look at.
Q.03Should utm_medium be lowercase?+
Yes. Always. utm_medium=Email and utm_medium=email are two different rows in GA4. Pick lowercase as a team convention and enforce it everywhere your team builds links.
By the byline
Trakl TeamEditorial team
We build Trakl, a link shortener and UTM tracker for marketing teams. We write here from the cleanup work, support tickets, and campaign reviews that fill the rest of our week. Specifics over slogans, and we cite the source.
Photo: 1981 Digital on Unsplash


