Guide
Fix Unassigned traffic in GA4
Unassigned means the session’s source and medium did not match a default channel rule. It is usually a medium you invented — ad, banner, Paid Social — not a broken tag. The click counted. The bucket did not.
What Unassigned is (and is not)
Open Traffic acquisition. If Session source / medium shows facebook / paid and the channel group is Unassigned, GA4 collected the UTMs. It simply has no default rule for medium paid. That is different from Direct, where source and medium are often (direct) / (none). Direct on a Meta ad usually means the URL never arrived tagged — or a redirect stripped it. Unassigned on a Meta ad usually means you tagged it with a medium Google does not bucket.
Confirm the raw values first: how to see UTMs in GA4. If campaign is (not set), add utm_campaign. That is a missing field, not a channel-group problem.
Mediums that usually group
Google’s default channel group rules look at source and medium (and sometimes more). These mediums are the ones working desks actually survive on. Preview a pair in the GA4 channel checker — it is a reading of common rules, not a filing with Google. Always confirm with a test click in your property.
| utm_medium | Typical default group | Use when |
|---|---|---|
cpc, ppc, paidsearch | Paid Search (especially google, bing) | Search ads. Not Meta. |
paid_social | Paid Social | Meta, LinkedIn ads, TikTok ads, X ads. |
social | Organic Social | Bios, organic posts, unpaid creator links. |
email | Newsletters and flows. Not “crm” as medium. | |
display, cpm, banner* | Display (cpm/display more reliably) | Programmatic / display. Prefer display over banner. |
affiliate | Affiliates | Partner and network traffic. |
referral | Referral | Unpaid mentions that are not social. |
sms | Often Unassigned or a custom bucket | Decide once; write it down. |
ad, ads, paid, promo, sponsored | Often Unassigned | Do not use on new links. |
*banner is a frequent Unassigned. If display is already live with banner, migrate new ads to display and live with a split until the old creatives die.
Paid social vs cpc
This is the mistake that makes Meta look like Paid Search. utm_source=facebook and utm_medium=cpc matches a paid-search-style medium. Use paid_social on paid social ads. Use social on organic. Full walkthrough: UTM for Meta Ads. Google search ads keep cpc: UTM for Google Ads.
Spaces and case also break grouping and split rows: Paid Social is not paid_social. The cleaner fixes case and spaces. It will not turn promo into email. You have to change the word.
How to fix live campaigns
- Export a sample of final URLs. Decode the list in the bulk UTM decoder.
- Sort by medium. Anything in the Unassigned column of the table above gets a new medium on the live ad, email, or partner link.
- Rebuild or clean a row in the builder or cleaner. Score it in the validator.
- Do not rewrite history in GA4. Old Unassigned sessions stay. You are fixing tomorrow’s clicks.
The longer process: how to audit campaign URLs.
When a custom channel is justified
SMS, QR, and audio often have no satisfying default bucket. You can add a custom channel group for reporting — after the medium is stable. If every event uses a new medium, a custom group becomes a second junk drawer. Lock the value in your spreadsheet first.