Why Your Campaign Traffic Shows Up as 'Unassigned' (and the UTM Habits That Prevent It)
By Mohak Mangal · Published October 26, 2026 · 7 min read
You tag a link carefully, send the campaign, and open your analytics report expecting a tidy row for it. Instead, the sessions are sitting in "Unassigned", or scattered across three near-identical names. Frustrating, and almost always preventable.
Disclaimer up front: analytics products change their rules from time to time. Treat the details below as the general mechanism and confirm the current mapping in your tool's documentation.
How channels get decided
Google Analytics 4 sorts traffic into default channel groups such as Email, Paid Search, Organic Social, Referral and Display. It does that by reading the source and medium of each session and matching them against a rule list. Those rules look for specific values: a medium of email is recognised as email, cpc as paid search, and so on.
If your utm_medium is something invented, such as newsletter-blast or fb-post, nothing in the rule list matches. The session still gets recorded under your source and medium, but it can fall into "Unassigned" in the channel report. That's what's happening to most people who see it.
The three rules to follow
- Use a standard medium. Keep to a short list:
email,cpc,social,referral,display,affiliate. Put the creative detail inutm_campaignorutm_content, not in the medium. - Be case-consistent.
Emailandemailare different strings to the tool. Lowercase everything. - Be spelling-consistent.
instagrameverywhere, neverigin one link andinstain another.
A naming scheme you can copy
| Situation | source | medium | campaign |
|---|---|---|---|
| Monthly newsletter | newsletter | 2026_11_digest | |
| Link in Instagram bio | social | bio_link | |
| Google search ad | cpc | brand_terms | |
| Guest post on a partner blog | partner_blog | referral | guest_post_nov |
| Product Hunt style launch | launch_site | referral | v2_launch |
Notice the campaign names have a date or version so that they stay unique and sortable. Notice, too, that the medium column never invents a new word.
Other reasons campaign data goes missing
- A redirect that strips parameters. Some link shorteners, login walls or URL rewrites drop everything after the question mark. Test by clicking your own tagged link and checking the address bar on the landing page.
- Tagging your own internal links. This restarts the session with a new source and overwrites where the visitor really came from. Don't do it.
- Dark social. Links shared in private messaging apps often arrive with no referrer, so they appear as direct traffic unless you tag them.
- Consent settings. If a visitor declines analytics cookies, they may not be measured at all. That's a feature of privacy rules, not a bug in your links.
Test before you send
A thirty-second routine catches most mistakes. Build the link, open it in a private window, then look at the real-time report in your analytics tool. You should see one active user with the source and medium you intended. If not, fix it now, before ten thousand people click.
Keep a log
A simple spreadsheet with date, link, who made it, and where it was used is enough. It saves arguments later, and lets a new teammate understand the old campaigns without guessing. Our UTM link builder produces consistently formatted URLs, with lowercase and underscores applied automatically, so the log stays tidy too.
And never, ever put personal information such as an email address into a UTM value. Those URLs get stored in many places you don't control.