Non-brand clicks are the SEO number that matters
Total clicks told us nothing, because most of them were people already searching for AHA by name. Splitting brand from non-brand turned SEO into a number we could steer by.
The problem
Most Google clicks came from people already searching “AHA”, which hid real SEO progress.
The solution
A Search Console scorecard that splits brand from non-brand and tracks rank and blog share.
The first chart anyone opens in Search Console is total clicks. For AHA it was mostly flat, and it would have stayed flat whatever I did to the site. A large share of those clicks came from people who typed “AHA” or the company name. They already knew us. Better meta descriptions don’t change that, and SEO doesn’t earn it.
The question that matters for a growing company is different: are people who don’t know us finding us?
Splitting the clicks
Search Console can filter queries with a regular expression. That makes the split simple to state and easy to repeat:
- Brand: any query that matches
\baha\b,ahasmartoraha!. - Non-brand: everything else. That’s total clicks minus brand clicks, so it also includes the anonymised long-tail queries Google won’t show you.
BRAND = r"(?i)(\baha\b|ahasmart|aha!)"
def daily(site, start, end, filters=None):
body = {"startDate": start, "endDate": end, "dimensions": ["date"],
"dataState": "final", "rowLimit": 25000}
if filters:
body["dimensionFilterGroups"] = [{"filters": filters}]
return gsc.query(site, body)
total = daily(SITE, START, END)
brand = daily(SITE, START, END, [{"dimension": "query",
"operator": "includingRegex",
"expression": BRAND}])
nonbrand = total - brand # per day, then per Monday–Sunday week
I kept the brand rule deliberately blunt. A clever rule that changes every month makes the trend meaningless. A simple one that never changes makes the trend honest.
What the scorecard tracks
Non-brand clicks alone can be noisy, so the scorecard puts them next to the measures that explain them:
- Non-brand clicks, weekly, against the four weeks before I took over.
- Average position on non-brand queries, weighted by impressions. Is the site climbing for the things buyers type?
- Ranking depth: how many non-brand queries rank in the top 3, on page one, and in the “striking distance” band of positions 4 to 20, where a better page can move the needle fastest.
- Blog share: what fraction of non-brand clicks land on an article. It shows whether the content programme is doing its job.
What happened
Over the next ten weeks, against the four weeks before 17 August:
- Non-brand clicks rose 183%, and total clicks rose 48%.
- Average position on non-brand queries went from 18.5 to 9.2, from page two onto page one.
- The blog went from 2% of non-brand clicks to 57%.
- Brand’s share of all clicks fell from 62% to 27%. Brand demand didn’t collapse; the rest of the site finally started pulling its weight.
Those numbers come straight from the API. The impact page shows them week by week.
What I’d tell anyone starting SEO
- Decide the number before you start changing things, and write down the rule that produces it.
- Brand clicks are a marketing outcome, not an SEO one. Report them, but don’t take credit for them.
- Watch the next step, not just the number. Non-brand traffic at AHA nearly tripled while website enquiries stayed roughly flat, so turning readers into enquiries is the next problem I’m working on.