GA4 Channel Groups: Organic Search and Custom Setup

GA4 Channel Groups: Organic Search and Custom Setup

A GA4 channel group is a set of rules that sorts every session into a named bucket such as Organic Search, Direct, Referral or Paid Social, based on the session's source and medium. The default group is what you see in most acquisition reports, and its definition of Organic Search is narrower than most people assume. A session counts as Organic Search when its source is on Google's list of recognised search engines or its medium is exactly organic, provided an earlier channel such as Paid Search has not already claimed it. Anything that satisfies neither condition falls through to another bucket.

That is why an SEO report built on the default grouping can undercount the traffic you actually earn. Visits from AI assistants usually arrive as Referral. Some smaller search engines do the same. Tagged links can push organic clicks into the wrong bucket. The good news is that GA4 lets you build your own channel group, apply it retroactively, and keep the default one untouched for everyone else. This guide walks through how the default rules work, where they misclassify search traffic, and how to build a custom group you can trust in an SEO report.

What a Channel Group Actually Is

GA4 collects two attribution fields on every session: a source (where the visitor came from, such as google, bing or newsletter) and a medium (the type of traffic, such as organic, cpc, email or referral). A channel group takes those fields, plus a few others such as campaign name, and runs them through an ordered list of rules. The first rule a session matches decides its channel. Nothing is stored at collection time for the group itself, which matters later because it means a new group can be applied to old data.

The default channel group ships with GA4 and cannot be edited. It contains channels such as Direct, Organic Search, Paid Search, Display, Paid Social, Organic Social, Email, Affiliates, Referral, Audio, SMS, Mobile Push Notifications, Video, Cross-network, and several shopping and video variants. A session that matches nothing is placed in Unassigned. Google documents the full rule table in its help centre, and it is worth checking there rather than trusting a blog post from memory, because the list has been extended over time.

Channel groups are exposed as dimensions, and the scope of the dimension changes the question you are asking. Session default channel group describes how each individual session arrived. First user default channel group describes how a person was first acquired. The user-level primary channel group reports how the user is credited under the property's attribution setting. Using the wrong scope is a common reason two reports disagree about how much organic traffic a page earned.

How the Default Group Defines Organic Search

The Organic Search rule in the default group has two alternative conditions. The session source can match a list of search sites that Google maintains, or the session medium can match the exact value organic. Channel order still matters: a visit from google with a medium of cpc is Paid Search, and a visit from a search engine that is not on the list, arriving as an ordinary referral, is not Organic Search no matter how obviously it is a search engine.

For Google Search, the medium is set for you. When a visitor clicks a normal result, GA4 receives the referrer, recognises the engine, and records the session as google / organic. Clicks on AI Overviews and AI Mode results are part of Google Search and, as far as GA4 can tell, arrive with the same referrer, so they are reported as google / organic along with everything else. You cannot split them out with the channel group alone. Search Console is the place to reason about that, and it does not break them out cleanly either.

Other major engines such as Bing and Yahoo are recognised through the same mechanism, which is why bing / organic shows up as Organic Search without any configuration. The practical consequence is that the source list is doing the real work. If an engine is on it, its clicks are organic. If an engine is not, its clicks are recorded with whatever source and medium the referrer produced, which for an unrecognised site is the hostname as source and referral as medium.

There is one more trap. The medium is read from the session's attribution data, and a campaign tag can overwrite it. If a link has utm_medium set to something other than organic, the session is credited to that medium, whatever the visitor's route. A link in a newsletter tagged with utm_medium=email is Email, even if the reader found the newsletter's landing page from a search result earlier the same week.

Why AI Assistants and Some Engines Land in Referral

The default Organic Search rule does not include AI assistants. When someone clicks a link inside a chat assistant, the browser usually sends the assistant's hostname as the referrer, and GA4 has no rule that says a chat assistant is a search engine. The session is therefore recorded as something like chatgpt.com / referral or perplexity.ai / referral and lands in the Referral channel, alongside links from blogs, partner sites and directories.

Some assistants add their own tracking parameter to outbound links, which changes how the session is recorded. Whether a given product does this, and which value it writes, is decided by that product and can change without notice, so verify it in your own data instead of assuming. Open the Traffic acquisition report, switch the primary dimension to Session source / medium, and look at what actually appears. The behaviour you see there is the ground truth for your property.

A few other situations produce the same effect. A search engine missing from Google's list is classed as Referral. Privacy-focused or regional engines are the usual cases, and whether a particular one is included is something to confirm against the current list rather than guess. Traffic from in-app browsers, email clients and mobile apps may strip the referrer altogether, which sends it to Direct instead, so a share of AI-assisted and search-assisted visits will never be attributable to anything. That is a limit of the web platform, not a configuration error you can fix.

None of this is wrong in a technical sense. The default group is a general-purpose classification, not an SEO-specific one. The mistake is treating its Organic Search line as the complete measure of search-driven visibility and then being surprised when it does not match what the business sees. The fix is to decide what you want your report to mean and encode that decision explicitly.

Building a Custom Channel Group for SEO Reporting

A custom channel group is created in the Admin area of the property, under data display, in the Channel groups section. You can start from a copy of the default group, which is the safer route because it keeps every existing rule in place, and then add or reorder channels. Editing the default itself is not possible, and you would not want to: other teams may rely on it.

Each channel in a custom group is defined by one or more conditions. A condition picks a dimension, such as Session source, Session medium, Session source / medium, Session campaign or Session default channel group, and then a match type: exactly matches, contains, begins with, ends with, matches regular expression, and their negations. You can combine conditions with AND and OR. Regular expressions are the efficient choice for source lists, because one pattern can name every assistant you care about.

Order is the part that catches people. GA4 evaluates the channels from top to bottom and stops at the first match. If you add a new channel called AI Assistants below Referral, every assistant session has already been claimed by Referral and your new channel stays empty. Move the new channel above Referral. The same logic applies to any channel that narrows an existing one.

  • Start from a copy of the default group so Direct, Paid Search, Email and the rest keep behaving as before.
  • Add a channel named AI Assistants with a Session source condition using matches regular expression and a pattern listing the hostnames you see in your own Session source / medium report.
  • Drag AI Assistants above Referral, because the first matching channel wins.
  • Keep Organic Search as it is, or add a second condition that also admits any additional engine you have confirmed as a search engine but which the default list omits.
  • Name the group something explicit, such as SEO reporting channels, so nobody mistakes it for the default in a dropdown.

A Worked Example With Real Decisions

Suppose a content site opens the Traffic acquisition report and finds 14,000 sessions in Organic Search and 3,000 in Referral for the month. The Referral line looks large for a site with no partnerships. Switching to Session source / medium shows that a few hundred of those sessions are assistants, a few hundred come from a regional search engine, a few hundred come from a forum, and the rest are scattered across blogs. These figures are illustrative, not benchmarks; the point is the method of splitting the bucket by source before deciding anything.

The analyst then makes three separate decisions. Assistant hostnames go into a new AI Assistants channel placed above Referral. The regional engine is a genuine search engine, so a condition is added that places it in an Organic Search channel, leaving the rest of the Organic Search rule alone. The forum stays in Referral, because a link from a forum thread is a referral, and calling it organic would inflate the line for the wrong reason.

That last decision is the discipline that keeps the exercise honest. A custom group is an editorial choice about what counts, and every reclassification should be defensible to someone who did not build it. Write the definitions down next to the report. When the number moves, you want to be able to say whether traffic changed or the rules did.

Two checks are worth doing before sharing results. First, compare total sessions in the default group and the custom group for the same date range. They must match, because a channel group only relabels sessions and never creates or removes them. If the totals differ, a filter or a segment is applied to one of the reports. Second, scan the Unassigned line in the custom group. If it has grown, a rule you wrote is too narrow, or a required field is empty.

Applying the Group in Reports and Explorations

Once saved, a custom channel group becomes available as a dimension, with Session, First user and user-level variants. In Explorations you can use it directly as a row, column, or filter. In the standard reports, the Traffic acquisition and User acquisition reports let you change the primary dimension, but the default group is what appears first, so you may need to swap it each time or save a customised report in the library and publish it to the navigation.

Custom channel groups are applied at reporting time, which means they work on historical data already collected as long as it falls within the property's retention for the report you are using. This is unlike many GA4 settings, which only take effect from the moment you save them. Check a past month after creating the group and you will see the new channels populated. That makes it practical to restate a baseline before an SEO project starts, so the before and after comparison uses identical definitions.

Two limits apply. Custom groups appear in GA4's own reports and Explorations, but other destinations may not see them the way you expect: an export to a data warehouse contains the raw source and medium fields, so you would recreate the classification there in SQL. The same is true of dashboards built on other connectors, where you should verify which channel dimension is actually being pulled. Also, key events are attributed by whichever channel dimension you chose, so a change in grouping will shift how key events are divided between channels, without changing their total.

Mistakes to Avoid

The most frequent mistake is tagging organic links with campaign parameters. Adding utm parameters to links on your own site, or to links in a profile, hands control of the medium to the tag. Internal links should never carry UTMs, because they start a new session and overwrite the original source. For external placements, use a medium that describes what the link really is, and do not reuse organic for anything that did not come from a search results page.

A second mistake is building a channel around a single hostname you saw once. Assistants and apps change how they link out, so a pattern that is too tight will silently stop matching. Review the Session source / medium report periodically and extend the pattern. Looking at it each quarter is a reasonable rhythm; looking only when a stakeholder asks is not.

A third mistake is mixing channel definitions across reports in a single deck. If one chart uses the default group and another uses the custom one, the Organic Search numbers will disagree and the audience will lose confidence in both. Choose one group for SEO reporting, label it, and keep it consistent. Finally, remember that channel grouping answers where sessions came from, not how many people searched or how visible you were. Impressions, queries and average position live in Search Console, and the two sources complement each other rather than reconcile to the same number.

Frequently asked questions

Can I edit the default channel group in GA4?

No. The default channel group is fixed, and Google maintains its rules and its list of search engines. To change how traffic is classified, create a custom channel group, ideally by copying the default one, and edit the copy.

Do custom channel groups change past data?

They apply retroactively in reports, because the grouping is evaluated when you query the data rather than when the session is collected. The original source and medium values are never altered, and the default group keeps working as before.

Why is traffic from an AI assistant in Referral instead of Organic Search?

The default Organic Search rule requires a recognised search engine as source or organic as the medium. An assistant's hostname is not on that list and its medium is referral, so GA4 records the session as a referral. A custom channel placed above Referral can reclassify it.

Why is my custom channel empty even though the rule looks correct?

Most often the order is the cause. GA4 stops at the first matching channel, so a channel placed below Referral never receives sessions Referral has already claimed. Move it above the broader channel and recheck the report.

All articles