adop.tools
All guides Channels

Brand vs Non-Brand Traffic in GA4

Splitting branded search out of Organic so the report shows what your marketing actually earned.

6 min read

Open almost any GA4 report and "Organic Search" sits there as one of your biggest channels, usually trending up and to the right, looking like proof that your SEO is working. It might be. But hidden inside that single number is a question it can't answer on its own: how much of that traffic is people who already knew you and typed your name into Google, versus people who found you while searching for something you sell?

Those are two completely different stories. One is demand you already created, coming home to roost. The other is new demand your marketing actually captured. Reporting them as a single line called "Organic" lets a brand-heavy quarter masquerade as SEO success, and it lets genuine non-brand growth get buried under a brand spike. Splitting them is the single most useful refinement you can make to a channel report.

Why the Split Matters

Branded search is downstream of everything else you do. When someone runs a TV ad, a billboard, a podcast read, a press mention, or even a strong paid-social campaign, a chunk of the people who see it later search your brand name to find you. That search lands in Organic. So when your "Organic Search" sessions jump, it might mean your content is ranking for new terms, or it might just mean your above-the-line spend worked and people came looking for you by name.

Non-brand organic is the number that tells you whether your SEO and content investment is winning new demand, the people who didn't know you existed before they searched. That is the harder, more valuable growth, and it is exactly the signal that a blended Organic number drowns out. If you are judging the marketing team, the agency, or the content budget on "Organic Search is up 30%," you may be congratulating the wrong department entirely.

Why GA4 Can't Do It Out of the Box

The frustrating part is that GA4 simply does not have the data to make this split for you. When a user clicks through from a Google organic result, Google does not pass the search query they typed to your analytics. It hasn't for over a decade, ever since the move to secure search stripped the keyword from the referrer. GA4 sees that the session came from google / organic, and that is all it knows.

Because the query is missing, every organic session lands in one undifferentiated bucket. There is no built-in dimension you can add, no segment you can build in Explore, that separates "searched our brand name" from "searched a generic term." The information that would let you tell them apart never reaches GA4 in the first place.

GA4 never sees the organic search query. Every organic session arrives as the same anonymous "google / organic," with no way to know whether the person searched your brand or a generic term.

Where the Query Data Actually Lives

The query exists, just not in GA4. It lives in Google Search Console, which reports on the search side of the click rather than the site side. Search Console knows the exact query for every organic impression and click, which is precisely the dimension GA4 is missing.

The implication is straightforward: the true brand vs non-brand picture comes from Search Console, and GA4 can only ever approximate it. Search Console is where you can filter queries that contain your brand name and read off real clicks for brand versus non-brand. The catch is that Search Console reports clicks and impressions, not sessions, conversions, or revenue, so it cannot tell you what that traffic did once it arrived. To connect the split to outcomes, you have to recreate an approximation inside GA4 itself.

Approaches to Approximate the Split

There is no single correct method, only a trade-off between how accurate the result is and how much work it takes to build. Here are the three practical approaches, ranked.

Method Accuracy Effort
Search Console query data, filtered for brand terms High (the only source with the real query) Low to set up, but stays in clicks/impressions, not sessions
Landing-page heuristic (treat your homepage and brand pages as brand) Medium (a reasonable proxy that leaks at the edges) Low (one rule on existing GA4 data)
Custom channel group or rule keyed off brand landing pages or campaign tags Medium to high, depending on how carefully you scope it Medium (needs definition and maintenance)

The landing-page heuristic rests on a real behavioural pattern: people who search your brand name tend to land on your homepage or a branded entry page, because that is what Google ranks first for a brand query. People searching a generic term land on the specific blog post, product page, or category that matched their intent. It is not perfect, but it correlates well enough to be useful, and it works entirely on data GA4 already has.

A Worked Rule Example

The simplest workable rule reads like this: take all sessions where the source/medium is google / organic, and classify the session as Brand when its landing page is the homepage (/) or sits under a known brand path (/brand-name*). Everything else from organic is Non-Brand.

In plain terms, the logic is:

You extend the brand path list to cover any URLs that only a brand-aware searcher would hit: your /about page, /contact, branded landing pages, your store locator. The rest of organic, the content and product pages that rank for what people are actually searching for, becomes your non-brand row. This is an approximation, and it will mislabel the occasional generic searcher who happens to land on the homepage, but it gives you two rows you can trend, compare, and tie to conversions, which the blended number never could.

Cross-check your rule against Search Console before you trust it. Pull the real brand-versus-non-brand click split from Search Console for the same period, and compare it to what your GA4 landing-page rule produces. If the two are roughly in line, your heuristic is sound. If brand looks far larger in GA4, your brand path list is catching generic traffic, and you should tighten it.

Reading the Two Rows Together

Once the split exists, the interpretation gets sharper. Brand organic climbing while non-brand stays flat usually means your awareness marketing is working but your SEO is treading water. Non-brand climbing is the signal that your content and rankings are pulling in people who didn't know you, which is the growth you can scale. And brand organic falling, even while total organic holds up, can be an early warning that awareness is slipping before any other channel shows it.

None of those readings are available from a single Organic line. The whole point of the split is to stop one story standing in for the other.

In adop.tools

Channel group rules in adop.tools let you carve a Brand vs Non-Brand split, by landing page or by campaign tag, and report on it as two clean rows rather than one blended Organic figure. Because you can place that split next to Search Console data in the same report, you can sanity-check your GA4 approximation against the real query-level numbers without leaving the page.

Build the Rule Once, Then Trend It

The split is worth setting up early, because like most analytics work it only becomes useful over time. A single month of brand versus non-brand tells you little; six months of the two rows trended side by side tells you whether your marketing is creating new demand or just harvesting demand you already had. Define the brand path list carefully, cross-check it against Search Console once, and from then on you have a channel report that distinguishes the work your marketing earned from the traffic that was always going to come.

Related guides

See this in a real report.

Build a live GA4 report and share it with your client — free for one report.

Create a report →