UTM URL Generator Free UTM builder

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_mediumTypical default groupUse when
cpc, ppc, paidsearchPaid Search (especially google, bing)Search ads. Not Meta.
paid_socialPaid SocialMeta, LinkedIn ads, TikTok ads, X ads.
socialOrganic SocialBios, organic posts, unpaid creator links.
emailEmailNewsletters and flows. Not “crm” as medium.
display, cpm, banner*Display (cpm/display more reliably)Programmatic / display. Prefer display over banner.
affiliateAffiliatesPartner and network traffic.
referralReferralUnpaid mentions that are not social.
smsOften Unassigned or a custom bucketDecide once; write it down.
ad, ads, paid, promo, sponsoredOften UnassignedDo 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.

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

  1. Export a sample of final URLs. Decode the list in the bulk UTM decoder.
  2. Sort by medium. Anything in the Unassigned column of the table above gets a new medium on the live ad, email, or partner link.
  3. Rebuild or clean a row in the builder or cleaner. Score it in the validator.
  4. 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.

FAQ

UTM builder questions

Why is my UTM traffic Unassigned in GA4?

The session has a source and medium, but that pair does not match a default channel-group rule. Mediums like ad, paid, banner, promo, or Paid Social with a space commonly land in Unassigned. The tags worked. The grouping did not.

Is Unassigned the same as Direct?

No. Direct is usually no source/medium (or the session was classified as direct). Unassigned means GA4 saw values and could not bucket them. Fixing Unassigned is a naming problem. Fixing Direct on paid clicks is often a missing URL or a stripped query string.

Should I create a custom channel group instead of changing the medium?

You can, if the whole company already shipped promo for two years. For new links, change the medium to one GA4 already understands. Custom groups do not fix (not set) and they do not travel to a new property.