AI SEO In Detail

AI SEO In Detail › Module B · Search Traffic Analysis › Episode 14

Episode 14 · coming soon

Branded vs Non-Branded Traffic

Episode 14 of AI SEO In Detail, a free course in practical SEO analysis: Branded vs Non-Branded Traffic.

Episode 14: Branded vs Non-Branded Traffic Video coming soon

This episode is scripted and in production. The transcript below is the script as written; it may change before the video is published.

Full transcript

1,225 words · script draft, under review.

Intro

Imagine organic clicks are up fifteen percent this quarter. Good news. Everyone's happy.

Then you split the number in two. Searches for your brand name are up forty percent, because of a campaign that had nothing to do with SEO. Searches for everything else, the topics you actually work on, are down ten.

Same total. Completely different story. In this episode I'll show you how to separate branded from non-branded traffic in Search Console, on one of my own sites, how to build a brand pattern that catches misspellings, and why the split belongs in every report you make.

Why brand masks SEO performance

A branded search is one where the person already knows you. They type your name, or your name plus something. You rank first almost automatically, and most of them click.

That traffic is real and valuable. But it's driven by awareness: advertising, word of mouth, a newsletter, a mention in the press. SEO work on your pages barely moves it.

Non-branded searches are the ones where people don't know you yet. That's where you compete with everyone else, and that's what SEO is really for.

When you mix them, the averages lie. Brand queries usually sit near position one with a very high click-through rate. They pull your site average up, and they can hide a slow decline in everything else for months. The site average ends up describing neither group.

Build the brand pattern

Search Console lets you filter queries with a regular expression, a pattern that matches text. You'll find it under the query filter, as a custom regex. We'll build one for my site, example-city-stats.com. What you see on screen is a stand-in built on the alias, but the steps are exactly the ones I used.

Start with the obvious forms. The name with spaces, without spaces, and with hyphens. Make it case-insensitive. Add the domain name itself, because people type addresses into the search box.

Then add misspellings. This is the part people skip, and it matters, because brand searches are typed fast. Letters swap, letters drop, words run together.

How do you find them? Pull every query and look for ones where your home page ranks first with a very high click-through rate. Those are almost always brand searches, including the misspelled ones you'd never guess. Then add product names and trademarks that only you use.

On my site, that list comes back empty. Not a single query where the home page sits at position one with a high click-through rate. That's a finding too: this site lives on non-brand search, and almost nobody looks it up by name. I still keep a brand pattern, because if that ever changes, I want to see it as its own line, not mixed into the SEO number.

Then test it. Run the pattern against all your queries and read two lists: everything it matched, and the top hundred queries it didn't match. The first list shows you false alarms. The second shows you brand searches you missed. Ten minutes of reading saves you a wrong report.

And here's the main trap: don't make the pattern too broad. If your brand contains common words, matching those words alone will pull in generic searches. In my case, "stats" on its own, or "city stats", would catch all kinds of searches that have nothing to do with the site. Match the full name, plus the misspellings you have actually seen.

Apply it in the API

In the interface, you can include or exclude the pattern and compare. For regular reporting, use the API instead. The Search Console API accepts the same kind of pattern as a filter, either including or excluding matches.

I prefer a third way. Pull all queries once, store them in the database, and classify them locally with a column that says brand or non-brand. That way, when you improve the pattern next month, you can re-run it on all your history. And you can see exactly which queries ended up in which group.

There's one bucket you can't classify: anonymized queries. Search Console hides rare queries for privacy, so they never appear in the query rows. You only see them as the difference between the page totals and the sum of the queries, as we covered in episode nine. Report them as a third group, "unclassified", rather than guessing. Most of them are long-tail searches, and in my experience they're mostly non-brand, but you can't prove it.

Search Console has also started offering a built-in brand filter for some sites. If yours has one, compare it with your own pattern. I keep my own, because I can see exactly what it includes.

Reading the split

Here's the split for my site. The data is real, from one of my own sites, but anonymized: the domain, the URLs and the search terms are replaced, so we stay on the principles and not on the keywords. The numbers are untouched.

Over seven months, brand searches brought this site eighteen clicks. In total. That's about half a percent of the clicks I could classify. So the brand share is small, and the total is mostly a non-brand number already. Here the split mainly protects you from the day that changes. On a site with a known name, it's often the other way round, and the total tells you more about awareness than about SEO.

And look at the third line. About eighty-seven percent of all clicks are unclassified, from queries Search Console never shows. That's why the unclassified group belongs in the report. Without it, you'd be drawing conclusions from the smallest part of the traffic.

Either way, once you have the split, three things change in how you read your data.

First, non-brand clicks become your main SEO number. That's the line that shows whether your pages are winning new searchers. Brand clicks belong in a separate line, next to your marketing activity.

Second, every analysis from earlier episodes gets cleaner. Striking distance from episode ten, CTR underperformers from episode eleven: run them on non-brand only. A brand query at position one will never be an opportunity, and it distorts the curves.

Keep an eye on brand share over time, too. A rising brand share isn't always good news for SEO. Sometimes it means your brand is growing. Sometimes it means your non-brand traffic is shrinking, and brand is all that's left.

Third, competitor brands. Searches for other companies' names behave like brand searches, just not yours. Low click-through rate there is normal. Put them in their own group, so they don't show up as underperformers.

Keep the pattern alive

A brand pattern isn't something you write once. New products launch, new misspellings appear, and the brand gets combined with new words. Review it once a month. Look at the newest queries where your home page ranks first, and check that each one landed in the right group.

Watch the combined searches too. Your brand plus a generic word, like the site name plus "login" or plus "contact", is still a brand search. The person already knows you. Make sure your pattern puts them in the brand group, even though the generic word looks like normal SEO territory.

Wrap-up

So: split brand from non-brand, catch the misspellings, and report non-brand as your SEO number. The brand regex starter kit is linked in the description. Next episode: is your traffic even real? How to find and filter bot traffic in Google Analytics.