SEO KPIs for Agencies: What to Report and What to Drop
The SEO KPIs an agency should report are the ones a client can connect to revenue or to a decision. That means non-branded clicks from Google Search, organic key events such as leads or sales, and the pages and topics that gained or lost. Drop the numbers that look busy but don't change what anyone does next, such as sitewide average position, total keyword counts and tool health scores.
The test for each metric is simple. If it moved sharply next month, would the client or your team do anything differently? If the answer is no, it belongs in an appendix or nowhere.
Key takeaways
- An agency should report SEO KPIs a client can connect to revenue or a decision: non-branded clicks, organic key events, and the pages and topics that gained or lost.
- Sitewide average position, total keyword counts and tool health scores belong in an appendix or nowhere, because they look busy without changing what anyone does next.
- Search Console's branded queries filter splits Performance data into branded and non-branded views, so brand demand cannot hide the non-branded growth a client pays for.
- Google Analytics counts key events only from the moment they are marked, with no effect on historic data, per Google Analytics help, so mark them at kickoff.
The KPIs worth a client's attention
| KPI | Where it comes from | Why it earns a place |
|---|---|---|
| Non-branded clicks | Search Console, branded queries filter | Shows growth from people who didn't already know the brand |
| Branded clicks | The same filter | Tracks brand demand separately so it can't mask non-branded change |
| Organic key events | Google Analytics, Organic Search channel | Ties search traffic to leads, sign-ups or sales |
| Clicks and impressions for target topics | Search Console regex filters | Shows progress on the topics the work targets |
| Pages gained and lost | Search Console comparison, Clicks Difference | Explains the headline change in a sentence |
| Brand presence in AI answers, per engine | An AI visibility tracker | Shows whether buyers asking an assistant hear the brand |
Each row needs a little setup before it can be trusted.
Branded and non-branded clicks
Search Console has a branded queries filter that splits Performance data into branded and non-branded views. Google says branded queries typically lead to higher-ranking pages and higher click-through rates, while non-branded queries show how new users find a site. Report them together and brand demand hides the number the client is paying you to grow.
The filter has limits. Google's help page says it isn't available for sub-properties such as example.com/blog/ or for sites with a low number of impressions. The classification is AI-assisted, and Google's announcement says some queries may be misidentified. Where you need control, a regex filter does the job by hand. Google's own example captures a brand and its abbreviations with cats and dogs|cats & dogs|c&d.
Organic key events
Clicks are not outcomes. In Google Analytics, the Organic Search channel covers visits from non-ad links in organic results, and Google's channel definitions say it includes AI Overviews and AI Mode. Pair the channel with key events. A standard property can mark up to 30 events as key events, and marking one changes reports only from that point on, with no effect on historic data (Google Analytics help). Set them up at kickoff, or your first months of results will have nothing to compare against.
Expect Search Console clicks and Analytics sessions to differ. Google's guide to using both tools says they're calculated differently and won't match completely, and suggests comparing clicks with sessions to read the general pattern.
Target topics and page movers
Agree on the topics the work targets and turn each into a regex filter on queries. Search Console uses RE2 syntax, matches anywhere in the query unless you anchor the pattern, and ignores case by default, according to Google's filtering help. The same page explains comparison mode, which adds a Difference column to each row. Sort the Pages tab by that column and the page movers fall out.
AI answers
Some clients will ask whether ChatGPT or Gemini mentions them. If you track it, report it per engine, beside the search numbers and never blended into them. XeoRank asks ChatGPT, Gemini (grounded in Google Search) and Perplexity a client's buyer questions and reports each engine separately; see pricing for what each plan includes, and AI visibility for agencies for how that works across client sites.
What to drop or demote
These metrics are easy to put in a report. Each one either measures the wrong thing or moves for reasons unrelated to your work.
Sitewide average position
The chart value is the average topmost position of the whole site (Google), so it blends brand terms, stray long-tail matches and everything between. Google's own advice in its common tasks guide is to focus more on trends in impressions and clicks than on position alone.
Keep position only for a short, named list of target queries.
Total ranking keyword counts
Third-party keyword counts are estimates. Google's guidance on hiring an SEO notes that third-party tools don't have access to Google's internal ranking data. Search Console's own query list isn't a stable count either: the table shows at most 1,000 rows (Google) and leaves out anonymized queries (Google).
Tool health scores
An audit score summarises a tool's own rules. Google says on the same hiring page that it doesn't evaluate or endorse third-party SEO tools. Report the specific issues you fixed and the pages they affected, which a client can check for themselves.
Sitewide CTR
CTR depends on how data is grouped. Search Console aggregates by property in the chart and by page in the Pages table, and Google's data help page shows how the same clicks give different CTR and position values under each method. A sitewide figure also moves when the mix of queries shifts, even if no page got better or worse.
Report CTR for specific pages after a title change instead.
Set baselines before the work starts
- Pull a full baseline at kickoff. Google's drops guide uses a 16-month view to separate yearly patterns from real change, and that window is a sensible starting point.
- Store it. To keep data beyond that window, Google points to the Search Analytics API or bulk data exports.
- Mark key events in Google Analytics on day one, since they only count from the moment they're marked (source).
- Write down the brand terms and target topic regexes, and keep them fixed for the reporting period so the numbers stay comparable.
- Agree how changes will be judged. Google's SEO Starter Guide suggests waiting a few weeks to assess whether a change helped, which makes monthly a sensible rhythm for outcome reporting.
When a KPI falls
Report a drop in the same format as a gain, with the cause you've checked. Google's guide to debugging traffic drops works as a checklist before the call. Compare against the same period last year, look the main queries up in Google Trends, and check whether the drop is site-wide or limited to a group of pages. Also check Google's list of ranking updates for the dates in question.
The same guide gives a move from position 2 to 4 as an example of a small drop and recommends avoiding radical changes to a page that's already performing well. Saying so in the report, with the link, is more useful to a client than a rushed fix.
Look at the shape of the drop too. Google's guide says that when impressions hold but clicks fall, the page title and snippet may not be as clear as they could be, or other results may be more appealing (source).
That points the next month's work at titles and descriptions first.
Reporting cadence and format
Report work weekly if the client wants it, and report outcomes monthly. Compare like with like: Google recommends weekly or monthly granularity for date comparisons so the day-of-the-week effect cancels out (source). Mark each shipped change with a Search Console annotation so the chart shows when work landed.
Keep the report to a page or two. Lead with the headline numbers, then what moved and why, what you shipped, what comes next and any decision you need from the client. Put the technical detail in an appendix for the person who wants it.
For the search numbers, XeoRank's business report does the assembly for each site. You pick a weekly or monthly period, and it compares it with the previous one across clicks, impressions, rankings and branded versus non-branded traffic, with your top queries and landing pages, exported as a PDF or Google Doc. On the Growth plan the report can be issued under your agency's name, as described on the white-label reports page.
An illustrative one-page report
The outline below is illustrative. It contains no client data; each row describes what goes in that section.
| Section | What goes in it |
|---|---|
| Headline | One sentence on the change in non-branded clicks and organic key events this period |
| KPI table | Each KPI above with this period, the previous period and the difference |
| What moved | The pages that gained and lost the most, with one line of explanation each |
| What we shipped | Changes and the dates they went live, matching the annotations |
| Next period | The work planned and the KPI each item is meant to move |
| Decisions needed | Anything waiting on the client, with a recommended answer |
If a section has nothing in it this month, leave it in with "nothing to report". A fixed layout lets a client find the same section in the same place every month.
Related reading
Multi-Site SEO Management: Running SEO for 20 Client Sites
Multi-site SEO management works when client sites share the same access, baseline and review routine. A setup for Search Console, weekly triage and reports.
Read more →Content Decay in SEO: How to Spot Pages Losing Clicks Early
Content decay is the slow loss of clicks on pages that used to perform. Catch it early in Search Console, rule out other causes, then refresh, merge or wait.
Read more →SEO Client Reporting: Get Approvals Without a 40-Page Report
SEO changes are easier to approve when each request fits on one page: the change, evidence from the client's own data, the risk and the undo. Template inside.
Read more →Ready to optimize your search rankings?
XeoRank connects to Google Search Console, analyzes content gaps with AI, and gives you actionable fixes — from the terminal or dashboard.