If the Unassigned row in your acquisition report keeps growing, the tool is rarely broken. Unassigned is Analytics saying it ran a session through every channel rule and nothing fit. The short answer to "how do I fix it" has four steps: separate Unassigned from (not set), read source and medium side by side to see which kind of problem you have, lock down a UTM naming standard, and add a custom channel group only for legitimate traffic that the default rules cannot name.
This guide is for analysts, marketers and agency teams who own a GA4 property and have to explain odd channel numbers to someone else. It follows the order you would work in: terminology, a triage routine, tagging rules, custom channel groups, and a standing review. Every rule quoted comes from Google's Analytics Help, starting with the default channel group article (Opens in a new tab), and anything the documentation does not state is marked as such.
Unassigned vs (not set)
Most wasted debugging time comes from treating two different things as one. They sit close together in reports, but they point at different fixes.
What each term actually names
The default channel group article gives a single rule: Unassigned is the value Analytics uses when there are no other channel rules that match the event data. It does not list which sources or mediums end up there, so you infer that from the full rule set. By contrast, the (not set) article (Opens in a new tab) defines it as a placeholder name used when Analytics has not received any information for a dimension. The same article notes a related value, "(data not available)", which typically cannot be acted on, while (not set) generally can.
How one produces the other
The (not set) article spells out the link: when session source / medium is (not set), your traffic is shown as Unassigned in the default channel group, because no rule matches. That makes (not set) the cause and Unassigned the symptom for one family of problems. A second family is different: source and medium are both present and readable, but the medium value is something the rules never mention. Those sessions are also Unassigned, yet nothing is missing. The tagging is simply outside the vocabulary.
The odd one out: (other)
The default channel group article also describes "(other)" as a separate value for aggregated rows caused by cardinality limits. It is how a report compresses a long tail of unique values, not a sign that tags are missing. Do not add it to your fix list.
| Label in the report | Meaning | Typical fix |
|---|---|---|
| Unassigned | No channel rule matched | Correct tagging or add a custom rule |
| (not set) | No information received for the dimension | Fix tag setup, parameters or consent flow |
| (data not available) | Information unavailable, usually not actionable | Note it as a limitation |
| (other) | Aggregated rows from cardinality limits | Narrow the report or dimension |
Diagnosing with Source/Medium
You can triage a large Unassigned share in about the time it takes to build one exploration. The aim is to sort rows by cause before touching anything.
Pick the right scope first
Analytics groups traffic-source dimensions into user, session and event scopes. User-scoped dimensions carry the "First user" prefix, session-scoped dimensions carry "Session", and event-scoped dimensions have no prefix. Because Unassigned is a channel for a session, use "Session default channel group" together with "Session source / medium". In the "Traffic acquisition" report the session dimensions for source, medium and campaign are available, which lets you see exactly what UTM values arrived.
A three-column triage
This three-way split is not a Google classification; it is a suggested working method for diagnosis.
Filter the report to the Unassigned channel and look at what is in the source and medium columns. Every row lands in one of three situations.
- Both (not set): information never arrived. The cause is technical, not editorial.
- Both populated, medium unfamiliar: the link was tagged, but with a medium the channel rules do not recognize.
- Both populated, medium recognized: check whether the value matches the rule exactly. Spelling and spacing matter, for example "e mail" is listed but "e-post" is not.
What the help article lists for (not set) sessions
The (not set) article names the following causes for session source / medium. The session_start event is missing, often because the Google tag trigger is not set to the Initialization type. Sessions carrying an srsltid parameter without a google.com referrer can also show it. For landing page, the session has no page_view event. And consent mode has two named traps: using the default command to set all consent values, or sending events with denied consent after consent was granted, which creates a separate session without a session_start event.
None of these have anything to do with the quality of your links. You can retag every URL and the technical gap will remain.
Decision rule: where to start
This three-way split is not a Google classification; it is a suggested working method for diagnosis.
Use this rule. If the largest Unassigned slice shows (not set) in both source and medium, begin with tag firing order, session_start and consent behavior. If the largest slice shows readable values, begin with tagging conventions and the channel rules. If you cannot tell, start with whichever slice carries the most sessions. After each change, reopen the same report for the same date range on the next day, otherwise you cannot attribute an improvement to a specific fix.
Worked example: a podcast and a QR code
Example scenario: a team promotes a podcast episode with a link in the show notes and a QR code on a printed flyer. The show-notes link uses medium "podcast" and the flyer uses medium "print". Neither word appears in the documented medium patterns, so both sets of sessions fall into Unassigned even though the source names are clear. The team's options are to retag future links with a recognized medium or to define a custom channel for each. The scenario carries no numbers; it only shows how readable values can still be unclassified.
UTM Naming and Typos
Manual tagging is the most common reason readable values still end up Unassigned, because the manual traffic rules key off the medium.
What the parameters require
The campaign URL parameters article (Opens in a new tab) says you should always use utm_source, utm_medium and utm_campaign when adding parameters to a URL, with utm_term and utm_content optional. The GA4 campaign data article (Opens in a new tab) goes further and strongly recommends setting all relevant parameters, naming utm_source, utm_medium, utm_campaign, utm_id and utm_source_platform in particular. It also states that missing UTM parameters result in (not set) values in reporting.
Two different case rules
Values are case sensitive: the help text gives utm_source=google versus utm_source=Google as two different values. The default channel definitions, however, are not case sensitive. So "Email" and "email" both reach the Email channel, yet appear as two rows in a source/medium report. This is a reporting-hygiene problem, not an Unassigned problem, and it is worth fixing because messy rows hide the real Unassigned ones.
Mediums the default rules recognize
The table lists medium-based rules from the manual traffic section of the default channel group article. It is not exhaustive; several channels also match on source lists.
| Channel | Condition stated in the article |
|---|---|
| Organic Search | Medium is exactly "organic", or source matches the search-site list |
| Organic Social | Medium is social, social-network, social-media, sm, social network or social media, or source matches the social-site list |
| Source or medium matches email, e-mail, e_mail or "e mail" | |
| Referral | Medium is referral, app or link |
| Display | Medium is display, banner, expandable, interstitial or cpm |
| Affiliates | Medium is "affiliate" |
| Audio | Medium is exactly "audio" |
| SMS | Source or medium is exactly "sms" |
| AI Assistant | Medium is exactly "ai-assistant" |
| Direct | Source is exactly "(direct)" and medium is "(not set)" or "(none)" |
Read the table as a vocabulary. A medium outside it, and a source outside the relevant site lists, cannot be placed. That is expected behavior, and the reason a naming standard has to be written down.
Mistakes that keep recurring
- Inventing mediums: "bio", "story", "flyer", "podcast" feel descriptive but match no documented pattern.
- Putting the platform in the medium field: instagram belongs in source; the medium describes the channel type.
- Mixed spellings of one source: "LinkedIn", "linkedin" and "lnkd" create three rows.
- Spaces and special characters: encoded characters can produce unexpected variants. Prefer lowercase ASCII with hyphens.
- Hand-typed URLs: the article recommends a URL builder for exactly this reason.
- Tagging internal links: the documentation says nothing about internal links, so test the effect on your own data before using parameters inside your site.
- Forgetting partners: an untagged partner link will land in Referral or Direct depending on the referrer, never in the campaign you meant.
A naming convention worth copying
Keep a three-column sheet: approved sources, approved mediums, campaign name pattern. Source is the lowercase platform or publisher domain, medium comes from the vocabulary above, and campaign is a short slug with year-month and topic. Example scenario: a sponsored article on a publisher site is tagged with the publisher's domain as source, referral as medium and a month-topic campaign. It then reports under Referral and can be filtered by campaign. We cover tagging and reading these links in sponsored post reporting with UTM, GA4 and Search Console.
Pre-launch link checklist
- utm_source, utm_medium and utm_campaign are all present.
- The medium is one the channel rules recognize, or a custom rule exists for it.
- Everything is lowercase, space-free and ASCII.
- The source name appears on the approved list.
- The URL came from a URL builder, not a text editor.
- Someone clicked it and checked the channel the next day.
Custom Channel Groups
When tagging is clean and the traffic is legitimate but the default groups have no home for it, a custom channel group is the right tool. Default definitions cannot be edited, so you build your own alongside them.
What a custom group can and cannot do
A custom group changes classification, not the data underneath. If medium never arrived, no rule can invent it. If medium arrived as "podcast", a rule on medium can route it to a "Podcast" channel. The custom channel groups article (Opens in a new tab) says they can be applied to reports retroactively, so regrouping history is possible for values that exist.
Creating one, step by step
You need the Editor role or higher at the property level. Open "Admin", then "Data display", then "Channel groups". Choose "Create new channel group" to start from a copy of the default group, or copy an existing custom group. Name it, optionally describe it, then add, edit or remove channels. Supported fields for reporting include source, medium, campaign name and default channel group.
- List the source/medium pairs from your triage that deserve a name.
- Create the group from a copy of the default so existing channels are preserved.
- Add the new channel with its source and medium conditions.
- Use Reorder mode to drag it to the correct position and select Apply.
- Reopen the report and confirm that Unassigned shrank and the new channel carries the expected volume.
Order matters more than you expect
The article states that traffic is included in the first channel whose definition it matches, given the current order. A broad rule near the top swallows traffic meant for narrower rules below it. Put specific rules first and general rules last, then review the order whenever you add a channel.
Limits and cautions
- Standard properties can have 2 custom channel groups and 360 properties 5, plus the predefined group; each group can contain up to 50 channels.
- Deleting a custom channel group is irreversible.
- Channel definitions are not case sensitive and cannot be edited.
- Editing affects things differently: segments and reports update immediately, audiences change only going forward, and expanded data sets keep the earlier definition.
- Custom channel groups are not available in the BigQuery Export schema, so replicate the logic in your queries.
- The primary channel group starts out identical to the default group. You can promote any custom group to primary from the Channel groups admin page, and data uses the new criteria from that point on.
Example scenario: a link-in-bio network
A creator network sends traffic with the medium "creator" from several platforms. The default rules do not list that medium, so everything lands in Unassigned. The analyst defines a "Creator" channel with a medium condition, places it above broader rules and reviews the report. Because the rule matches on the medium value, a creator who tags a link with "influencer" instead stays unclassified. The fix therefore includes a short list of accepted mediums in the creator brief. No numbers are used in this example.
How channel definitions affect attribution reading
Whatever you decide here changes how channels compare in conversion paths. If you analyze assisted conversions, keep the same group across all comparisons. Our article on SEO assisted conversions and attribution models explains how model choice interacts with channel labels.
Ongoing Checks
A one-off cleanup decays. Every new campaign, partner or tag release can reintroduce Unassigned traffic, so build a small recurring routine.
A weekly five-minute review
- Open "Traffic acquisition" and note the Unassigned share against last week.
- Break Unassigned down by session source / medium and write down any pair you have not seen before.
- Compare those pairs to links shipped in the past week.
- If tags or consent behavior changed, look at the (not set) share in session source and medium.
- Add a rule or fix a link, and log the change with its date.
Setting your own alert threshold
Google does not publish an acceptable Unassigned percentage. Use your own baseline from the last several weeks and treat a clear departure from it as a trigger to investigate. When it fires, ask what changed: a batch of new links, a tag update or a consent banner revision.
Keep dashboards consistent
If the same metric is presented in a dashboard, say which channel group it uses. Two people looking at the default and a custom group will see different numbers for the same traffic. Dashboards that blend Search Console and GA4 are especially prone to this; the setup is discussed in Looker Studio SEO dashboard with Search Console and GA4, and the organic side of the analysis is covered in analyzing organic traffic in GA4.
Write the decisions down
Record each tagging rule, channel group change and consent update with a date, an owner and the expected effect. Three months from now, no one will remember why the Unassigned share moved unless the log says so.
Telling the Story to Stakeholders
Diagnosis only helps if the result can be explained to someone who does not use GA4 daily. A manager wants to know how big the issue is, why it exists and what has changed.
A sentence pattern that works
Try something like: "During this period some sessions matched none of the default channel rules and showed as Unassigned. Most came from newsletter links that used a free-text medium, and the rest from visits where the session start event was missing. The newsletter links now use a standard medium and the tag trigger has been corrected." Put numbers from your own property in place of the general wording.
Do not read Direct and Unassigned in isolation
According to the default rules, Direct needs the source to be exactly "(direct)" and the medium "(not set)" or "(none)". Sessions with a (not set) medium but a different source are therefore not Direct. When a fix lands, compare Unassigned, Direct and Referral together, because sessions can move between them and a drop in one is not automatically good news.
Date the break in the chart
A retroactive channel group re-labels history, while a tag fix only improves sessions after it ships. Annotate both dates in the report, so a step in the chart is read as a measurement change and not a performance change.
Separate what you can fix from what you cannot
The documentation says "(data not available)" generally cannot be acted on, and "(other)" is a cardinality artifact. Present these as known limits so the team does not chase them. The actionable part is Unassigned caused by missing or unrecognized values.
Common Triage Mistakes
- Treating all Unassigned as one cause. Break it down first.
- Expecting a channel group to supply missing data. It reclassifies only what arrived.
- Ignoring rule order. Broad rules shadow narrow ones.
- Judging a fix the same day. Compare the same report on a later day.
- Skipping consent behavior. A second session without session_start is easy to create.
- Letting spellings drift. Without a written vocabulary, every new teammate adds a variant.
Frequently Asked Questions
What does Unassigned mean in GA4?
Unassigned is the value Analytics uses when none of the channel rules match the event data. The traffic is not lost. It simply did not satisfy any definition in the channel group, usually because source or medium is missing, misspelled or uses a word the rules do not recognize.
Is Unassigned the same as (not set)?
No. (not set) is a placeholder Analytics shows when it received no information for a dimension. Unassigned is a channel group classification. When session source / medium is (not set), the traffic appears as Unassigned in the default channel group, so one is the data gap and the other is how that gap gets classified.
Are UTM values case sensitive?
Yes. UTM parameter values are case sensitive, so utm_source=google and utm_source=Google are reported as different values. The default channel definitions are not case sensitive, so a capitalization difference will not change the channel, but it will split rows in a source/medium report.
Can a custom channel group fix historical data?
Custom channel groups can be applied to reports retroactively, so historical sessions can be regrouped under a new channel. This only changes classification. It cannot recreate a value that was never sent, such as a missing medium.
How many custom channel groups can I create?
According to the help article, standard properties can have 2 custom channel groups and 360 properties can have 5, in addition to the predefined group. Each group can hold up to 50 channels. Deleting a custom group is irreversible, so write down its definition first.
Could Unassigned traffic actually be paid traffic?
It can. A manually tagged paid link whose medium does not match the paid-medium pattern, or one with a missing source or medium, may fall into Unassigned instead of a paid channel. Look at the real source/medium values before assuming the traffic is unimportant.
Conclusion
Unassigned means no channel rule matched; (not set) means a dimension arrived empty. Keeping those apart tells you the order of work: tag firing and consent first, UTM vocabulary second, a custom channel group last and only for traffic that is legitimate but unnamed. A written naming standard, a pre-launch checklist and a short weekly review keep the share small after the first cleanup. None of this guarantees a particular report result. The goal is a classification you can explain.
If you publish sponsored content and want links that are tagged and measurable from day one, you can review the guest post options on Akua Adforce; scope and terms are listed on the product page.
Post a comment
Please log in to leave a comment. Login