SEO Strategy. Measurement
Branded vs Non-Branded Traffic: Why Winning Your Own Name Is Not Growth
Written by Ram Kr Shukla, SEO and growth consultant
Quick answer
Branded traffic comes from searches that include your name. Non-branded traffic comes from people searching for what you sell without knowing you yet, and that’s the line SEO actually grows. To split them, use the Branded queries filter in Search Console’s Performance report, or a regex query filter you write yourself, then copy the same pattern into a Looker Studio CASE field. Expect the two halves to add up to less than your site total, because Google leaves anonymised queries out of query rows. And don’t try to split revenue by query. GA4 never receives the query, so report non-brand clicks and organic revenue as two separate numbers.
One number in your analytics flatters you. That’s branded traffic: people typing your company name into Google. It looks like SEO working, but it’s almost entirely people who were already going to find you. The other one is harder to love. Non-branded traffic is people searching for what you sell without knowing you exist, the audience you don’t have yet. Growing it is the whole point.
I saw this most clearly on a large marketplace whose branded traffic looked healthy while its non-branded visibility trailed a competitor badly. The site looked fine on paper, but it was harvesting demand, not creating it.
The definitions are easy. Measuring the split is where reports fall apart, so most of this guide is about measurement. You’ll see how to split the two in Search Console and Looker Studio, and why the halves never add up to your total. Then there’s the “non-brand revenue” number that nobody can hand you. The figures all come from an Indian cosmetics store I audited. If your tracking can’t answer these questions yet, sort out GA4 conversion tracking before anyone sets an SEO target.
The Two Kinds of Organic Traffic
Every organic visit is one of two types, and few splits in your reporting matter more. Branded searches include your name, your product, or a term only someone who already knows you would use. Non-branded searches don’t. They’re about the category, a problem, a product type or a plain question, and the person typing one is by definition someone you haven’t reached yet. That’s where growth lives.
When someone searches your name, they’d already decided to find you. You still need to rank for it, and it’s usually easy, but that demand already existed. If your organic growth is really branded growth, you’re just watching existing awareness turn into clicks.
Non-branded searches come from people earlier in the journey who don’t know you yet. Every one of those visits is a possible new customer who found you because your page matched what they typed.
A rough health check: if branded queries make up more than about 80 percent of your organic clicks, your SEO probably isn’t finding new people. You’re ranking for yourself and little else, which feels fine until you need growth beyond the people who already know you.
The two work in sequence. Non-branded content brings new people in, and along the way it earns links and builds topical authority. Internal links then move those visitors toward your commercial pages. Some of them come back later and search your name, and that’s how a non-brand visitor turns into a brand query.
“Branded traffic is people who already know you turning into clicks. Non-branded traffic is people who don’t know you yet, discovering you. Only one of those is growth, and it’s the one most reports quietly bury.”
Ram Kr Shukla, SEO and Growth Consultant
What One Store’s Search Console Actually Showed
Here’s the split on a real account. It’s a D2C beauty brand on Shopify in India, and I pulled four weeks of Search Console data, India traffic only.
The top queries by clicks were almost all the brand, with the brand name on its own first by a distance. Then came the brand plus a product type, the name run together as one word, a split spelling, a misspelling, and the brand plus “customer care”. Queries with no brand in them only started far down the list, with clicks in the tens.
Then the split itself:
| Segment | Impressions | Clicks | CTR | Avg position |
|---|---|---|---|---|
| Non-brand | 225,897 | 2,553 | 1.13% | 7.14 |
| Brand | 22,642 | 2,509 | 11.08% | 4.97 |
Look at the impressions first. Non-brand pulled ten times the impressions for almost exactly the same clicks. Its CTR was a tenth of brand’s, and it ranked about two positions lower.
So by clicks, this store looked half brand and half non-brand, while by impressions brand was only about 9 percent of what Google showed. Both are true. Clicks tell you where today’s visits come from, but the demand shows up in impressions. Here it was overwhelmingly non-brand, sitting at an average position of 7 with hardly anyone clicking.
That gap is the whole SEO opportunity on this account. It’s also why I wouldn’t judge a store like this on total organic clicks. Half of them came from people who typed the name, and most of those visits would have happened anyway.
Why a Site Can Look Healthy and Still Be Stalling
If you run a big site or a marketplace, this is the trap to watch. Your brand awareness is strong, so branded search alone produces large, comfortable traffic numbers. The dashboard looks healthy and everyone relaxes.
Meanwhile a competitor is quietly winning the non-branded searches, the category and product terms typed by people who don’t have a preferred brand yet. Every month it picks up customers you never got a shot at. And the site with the big branded number? It’s spending down awareness it already had. By the time the totals dip, the non-branded gap is a real disadvantage, and it takes a long time to close.
How to Split Branded and Non-Branded in Search Console
You’ve got two options inside Search Console. They answer slightly different questions, so it’s worth knowing both.
Option 1: the built-in Branded queries filter
Google has added a Branded queries filter to the Performance report and rolled it out to all eligible sites (Google Search Central announcement). One click splits your queries into Branded and Non-branded, across web, image, video and news results. Search Console Insights also gets a card showing the click split.
Before you trust it, know how it works:
- It isn’t a regex. Google says the classification comes from “an internal, AI-assisted system”. It covers your brand name in all languages, typos, and queries for products or services unique to your site.
- It can be wrong. Google says some queries may occasionally be misidentified, so read the top rows of both views before you quote a number.
- Not every property gets it. It only appears on top-level properties with enough query volume. A URL-prefix property for a folder, or a subdomain property, won’t show it.
- It stays in the interface. The Search Analytics API filters only on country, device, page, query and search appearance, with no brand dimension. Google’s Looker Studio connector docs list no brand field either. Once you leave the Search Console screen, you need your own pattern.
Option 2: a regex filter you control
This is the method to use for anything you report every month, because you can see exactly what it does and reuse it everywhere. Here’s the process:
- Open the Performance report. In Search Console, open Performance, then Search results, and set the date range you want to report on.
- Add a regex query filter. Click Add filter, choose Query, then choose Custom (regex).
- Get the brand line. Enter your brand pattern, leave it on Matches regex and click Apply. Note clicks, impressions, CTR and average position.
- Get the non-brand line. Edit the same filter, switch it to Doesn’t match regex and apply it again. These are your non-brand numbers.
- Check both buckets. Read the top 50 rows of each view. Any brand query in the non-brand view, or generic query in the brand view, means the pattern needs another variant.
- Save the pattern. Store the final pattern where the team can find it, and reuse the exact same text in Looker Studio and in any API pull.
Say your brand is Acme, and you sell a product line called Glowkit that nobody else sells. A first pattern looks like this (my branded vs non-branded keyword splitter builds and tests one against your own Queries export):
ac ?me|acmee|akme|glowkit
Here’s what each piece catches. ac ?me matches both acme and ac me, because the optional space covers people who split the name. acmee and akme are the misspellings you’ll find by reading your own query list. glowkit catches the product line. You don’t need separate entries for “acme customer care” or “acme login”: the name is already in those queries, so the pattern picks them up.
Search Console uses RE2 syntax, matches anywhere in the query unless you anchor with ^ or $, and ignores case by default (Google’s advanced filtering help). So acme also matches “acme lipstick shade”, which is what you want.
The trap is a brand name that’s also an ordinary word. If your brand were called Glow, the pattern glow would pull every “glow serum” and “how to glow” search into your brand line and flatter the brand side. Spell the brand out with the words people actually pair it with instead, and check the brand view for generic queries that slipped in.
Use both, for different jobs. The built-in filter is a fast first read and a good way to test your pattern, but report on your own regex, because it travels into Looker Studio and the API unchanged. When the two disagree, read the queries where they differ. Usually it’s a product name or a misspelling your pattern missed.
How to Split It in Looker Studio
Looker Studio (Google’s own docs now call it Data Studio again) reads Search Console through two tables: Site Impression and URL Impression, and one data source can only use one of them (Google’s Search Console connector docs). For a brand split by query, use Site Impression. It counts the way the Performance report’s query table does.
Those docs list no brand field, so you build one. Edit the data source, click Add a field, and paste a calculated field like this:
CASE
WHEN Query IS NULL THEN "Anonymised"
WHEN REGEXP_CONTAINS(Query, "(?i)ac ?me|acmee|akme|glowkit") THEN "Brand"
ELSE "Non-Brand"
END
Name it Query type and use it like any dimension: a two-row table, a time series with one line per value, a filter control on every page.
The first line matters more than it looks. Google’s connector docs say queries it withholds may be grouped into a single row with a blank Query value. Without the IS NULL line, that blank row falls through to ELSE and lands in Non-Brand. That inflates exactly the number you’re trying to prove.
Use the same pattern you tested in Search Console. Data Studio also uses RE2 (regular expressions in Data Studio), so it behaves the same way. The (?i) at the front makes the match ignore case. Keep backslashes out of the pattern if you can: Google notes they may need extra escaping inside Data Studio formulas, and an optional space ( ?) does the same job without one.
If a brand field already exists in a data source someone else built, open its formula before you quote it. On the cosmetics store, the dashboard’s brand field returned exactly two values with no blank bucket. The brand and non-brand halves still came to 5,062 clicks against a site total of 7,173. Nothing was wrong with the field. That gap comes from Google, and you’ll find it in the next section. The full dashboard build, landing page blend included, is in building a Looker Studio SEO dashboard from GSC and GA4.
Why Brand Plus Non-Brand Never Adds Up to Your Total
On that store, brand clicks plus non-brand clicks came to 5,062. Search Console’s site total for the same four weeks was 7,173. About 29 percent of clicks didn’t land in either bucket.
Nothing was broken. Google explains it in its deep dive on Performance data. Some queries are anonymised to protect the person searching: queries that aren’t issued by more than a few dozen users over two to three months. They’re left out of query tables but still counted in chart totals, unless you filter by query. Any breakdown built on the Query dimension drops them. Search Console also keeps a limited number of rows per day, so very large sites lose some long-tail rows on top.
How big the gap gets depends on your search mix. A store whose shoppers type long, specific searches will have more anonymised clicks than one whose traffic is mostly its own name.
So quote the split as a share between the two halves, and don’t expect the raw numbers to add up to total clicks. If a client adds them up and asks where 2,111 clicks went, you want to have explained it already.
Don’t subtract brand from the site total to get non-brand, either. That shoves every anonymised click into the non-brand bucket. On this store it would have turned 2,553 non-brand clicks into 4,664, nearly double.
The same filtering bites in the API, with an extra twist. The Search Analytics API returns rows sorted by clicks, so a “top 1,000 queries” pull can miss the high-impression, low-click non-brand terms you most need to see. If you track a fixed keyword list, query each keyword with an exact filter. The detail is in why the Search Console API misses keywords.
Why You Can’t Split Revenue by Query
This is where most brand vs non-brand reports go wrong.
Search Console knows the query and the click. GA4 knows the session, the landing page and the order, and nothing joins the two at query level. Google says as much in its help page on linking Search Console to GA4: Search Console metrics only work with Search Console dimensions plus three GA4 dimensions, which are landing page, device and country. The query never reaches the session.
| What you need | Search Console | GA4 |
|---|---|---|
| Search query | Yes | No |
| Landing page | Yes | Yes |
| Impressions, clicks, position | Yes | No |
| Sessions, transactions, revenue | No | Yes |
The only shared column is the landing page. Every honest proxy goes through it, or around it.
When the cosmetics store asked for a “non-brand revenue” target, the agreed answer was that nobody can measure it, in any tool. So we reframed the target. A number nobody can check is a bad thing to sign up to. If someone hands you a non-brand revenue figure, ask how it was made. It’s an estimate, usually organic revenue multiplied by a click share, and the anonymised gap above makes that share shaky before you even start.
You’ll also see advice to build a brand regex inside GA4. GA4’s own reports don’t receive organic search terms, and its Search Console reports can’t be broken down by GA4 dimensions, so there’s nothing for that regex to attach revenue to.
The Three Honest Proxies for Non-Brand Value
You can’t measure non-brand revenue directly, so bracket it instead. Here are the three proxies, most useful first.
Blend Search Console’s URL Impression table with GA4 on landing page, then read organic transactions for pages whose query list has no brand queries at all, usually blog posts and category or collection pages. Their organic revenue is the closest honest answer you’ll get. It undercounts, because non-brand visitors also land on your home page and you can’t separate them there.
GA4’s Organic Search channel gives transactions and revenue from all organic search. It includes everyone who typed your name, so it overstates non-brand, sometimes by a lot. Treat it as the ceiling. Check the channel’s tracking first: a Shopify GA4 funnel audit catches broken purchase events before you report on them.
Search Console only. Non-brand clicks, impressions and position are what SEO work actually moves, and they’re measured cleanly apart from the anonymised gap. Report them next to organic revenue as a separate number. Never divide one into the other.
| Proxy | Source | Error direction | Use it for |
|---|---|---|---|
| Pages ranking only on non-brand terms | GSC URL Impression blended with GA4 | Undercounts | The revenue line in a target |
| Organic Search channel | GA4 | Overcounts | The ceiling |
| Non-brand clicks | GSC | No revenue at all | Progress month to month |
Making the landing page blend work
Two things usually break the join. Search Console’s landing page is a full URL and GA4’s is a path, so they match nothing. Add a data source field on the Search Console side and join on that:
REGEXP_REPLACE(Landing Page, "^https?://[^/]+", "")
Then use GA4’s plain Landing page dimension. The Landing page + query string version splits one page into several rows whenever a URL parameter shows up. Use a left outer join from the Search Console side, so pages with clicks but no matching GA4 sessions still show.
To confirm a page qualifies as non-brand only, filter Search Console to that page and apply your brand regex with Matches regex. Zero rows means the page earns its search traffic from people who didn’t type your name. On the cosmetics store, once the join worked, Search Console clicks and GA4 organic sessions for the same pages landed within about 8 percent of each other. That’s close enough to trust the rows.
Write the target this way instead. Grow non-brand clicks at a stable or better average position, and grow organic transactions on pages that rank only for non-brand queries. Report organic channel revenue alongside, labelled as including brand. For how to present the rest of the report, see reading an SEO report honestly.
The Non-Branded Opportunity Is Already in Your Search Console
The good news is that the non-branded upside is usually visible already. On large sites, most ranking keywords are stranded between positions 11 and 100, and almost all of them are non-branded, because you rank comfortably for your own name and struggle for everything else. That band is your growth: demand that’s already there, just not yet turned into visibility. So the job is lifting the non-brand terms you already rank for, which is the position 11 to 100 trap in practice.
Smaller stores often show a different version of it. On the cosmetics store, non-brand terms already averaged position 7.14 with a 1.13% CTR. That’s page one, mostly low on the page, and almost nobody clicks. Better titles and snippets on terms ranking 5 to 10 are where its next clicks come from.
One warning when you go looking. If you pull your top queries by clicks, the biggest non-brand opportunities won’t be in the list. On that store, one generic complexion product term had 22,589 impressions and 6 clicks in a month, and it never appeared in a top-rows pull. Track known terms one by one with exact filters.
What’s a Healthy Branded Share?
There’s no single right number. Branded share depends on brand age, ad spend and category. A young D2C brand spending heavily on paid social creates brand searches with its ads, so its organic clicks lean brand for reasons that have nothing to do with SEO. It’s why I judge a D2C SEO consultant engagement on non-branded clicks and acquisition cost against paid.
As a rough warning sign, branded above about 80 percent of organic clicks means SEO probably isn’t bringing new people in. Measure the share on impressions as well as clicks. The cosmetics store was about 50 percent brand by clicks and 9 percent by impressions, and the second number is the one that shows how much non-brand demand exists.
Watch the trend more than the level. A falling brand share is good news only if non-brand clicks are rising. If it’s falling because brand clicks dropped, that’s a different conversation, and it usually has little to do with SEO.
How to Grow Non-Branded Traffic
The non-branded growth checklist:
- Split organic reporting into brand and non-brand with one written-down pattern, and judge SEO mainly on the non-brand line
- Check your branded share on both clicks and impressions: above about 80 percent of clicks, growing non-brand is the priority
- Find the non-brand terms competitors rank for and you don’t, using a competitor gap analysis, and build or improve pages for them
- Lift the non-brand keywords already ranking on page two, the largest and fastest opportunity on most sites
- Rewrite titles and snippets on non-brand terms that rank 5 to 10 with a low CTR
- Create useful content for earlier-stage searches, for people who don’t know you yet
- Use internal links to move non-brand visitors toward the pages that convert
Branded traffic isn’t bad, and you should keep ranking for your own name. Just stop counting it as growth. The real test of a search strategy is the non-brand line: did more people who didn’t know you find you this quarter than last? Grow that, and brand search tends to follow, because some of today’s non-brand visitors are next year’s brand searches.
Related: the position 11 to 100 trap (where the non-branded upside sits), competitor gap analysis (to find the non-branded terms you’re missing), why your organic traffic numbers are lying to you, and the Search Console reports most marketers never open. This is core to my enterprise SEO work.
Common Questions
What is the difference between branded and non-branded traffic?
Branded traffic comes from searches that include your company or product name, from people who already know you. Non-branded traffic comes from searches that don’t include your name, from people looking for what you sell without knowing you exist. Branded is demand you already had. Non-branded is new demand, which is why it matters most for growth.
Why does non-branded traffic matter more for growth?
Non-branded searchers are people you haven’t reached yet, earlier in their journey and without a preferred brand. Ranking for those terms is how you win new customers, build topical authority and earn links. Branded traffic is mostly people who were already going to find you.
What is a healthy ratio of branded to non-branded traffic?
There’s no single right number, because brand age, ad spend and category all move it. A common warning sign is branded traffic above roughly 80 percent of organic clicks. Check the share on impressions as well: a store can be half brand by clicks and under 10 percent brand by impressions.
How do I filter branded queries in Google Search Console?
Open the Performance report and use the Branded queries filter if your property shows it. For a split you control, click Add filter, choose Query, then Custom (regex), and enter a pattern with your brand name, its misspellings and any product names unique to you. Matches regex gives the brand line and Doesn’t match regex gives the non-brand line.
Why don’t my branded and non-branded clicks add up to total clicks?
Google leaves anonymised queries out of query rows, but still counts them in the site total. Any split built on the Query dimension therefore sums short of the total. On one store I audited, brand and non-brand rows came to 5,062 clicks against a site total of 7,173. Quote the split as a share between the two halves.
Can I measure non-branded revenue in GA4?
No. GA4 never receives the search query, and Search Console data can only be broken down by landing page, device and country inside GA4. Nothing joins a query to a sale. Use proxies instead: revenue on landing pages that rank only for non-brand terms, organic channel revenue as a ceiling, and non-brand clicks as the effort metric.
How do I grow non-branded organic traffic?
Split your reporting so you can see the non-brand line, then work on it: find non-brand terms competitors rank for and you don’t, lift the non-brand keywords stuck on page two, fix titles on terms ranking 5 to 10 with a low CTR, and use internal links to move new visitors toward the pages that sell.
Is branded traffic bad?
No. Ranking for your own name matters and you should protect it. The mistake is counting branded growth as SEO growth, when it’s mostly existing awareness turning into clicks. Judge the strategy on the non-brand line and let brand search follow.
Is your organic growth actually just branded?
A big branded number can hide a stalling site. I split brand from non-brand, set up the tracking that can honestly report it, and find the non-brand demand you’re missing or ranking just out of reach. If the measurement is the gap, start with GA4 conversion tracking.
Enterprise SEO ServicesGet an SEO AuditMarketplace search has its own version of this problem: how Amazon search actually ranks products.
Branded queries showing several of your pages is a false positive, explained in diagnosing and fixing keyword cannibalisation. Also relevant: insurance demand by buyer stage and growth consulting.
Tags: SEO StrategyBranded SearchNon-Branded TrafficSearch ConsoleAnalytics
Written by Ram Kr Shukla
SEO and growth consultant and Fractional Chief Digital Officer with 20+ years in SEO and growth across 50+ brands. Google Analytics and Google Ads certified. Works daily in Search Console, GA4 and Looker Studio, and builds the reporting that separates brand demand from the growth SEO actually creates.




