An SEO report has one job: tell the person paying for SEO whether it's working. Most fail at that. They run to twenty pages of impressions, domain scores and keyword counts, and never say how many enquiries came in.
My post on what a monthly SEO report should contain makes the case for a short report built on three numbers. This one shows you what that looks like in practice: a worked example, a template you can copy, and how to read any report you're sent.
Key takeaways
- A good report fits on one page and leads with leads, not impressions.
- Three numbers go first: position for the terms that pay, organic traffic, and organic leads.
- Every number needs a comparison: last month, the same month last year, or the starting baseline.
- The report should say what was done, what moved, and what happens next month.
- If you can't tell from the first page whether SEO paid for itself, the report has failed.
The short answer
A monthly SEO report should show rankings for the terms that bring revenue, organic traffic, and the leads that traffic produced, each compared with last month and the same month last year. Below that sit three short lists: work completed, what moved and why, and the plan for next month. Everything else is an appendix.
The example report
Here's a filled in example for a fictional roofing firm in its fifth month of a retainer. The business and every number in it are made up for illustration, but the layout is the one I send clients.
1. Headline numbers
| Metric | This month | Last month | Same month last year |
|---|---|---|---|
| Organic leads (calls and forms) | 23 | 17 | 6 |
| Organic sessions | 1,140 | 980 | 410 |
| Cost per organic lead | £35 | £47 | No SEO spend |
One sentence goes under the table: "Leads up 35% on last month, driven by the flat roof page reaching page one." If the client reads nothing else, they know where they stand.
2. Rankings for the terms that pay
| Term | Position now | Last month | At start |
|---|---|---|---|
| roofer [town] | 4 | 6 | 18 |
| flat roof replacement [town] | 7 | 14 | Not ranking |
| roof repair [town] | 3 | 3 | 11 |
| Map pack, "roofer near me" (grid coverage) | Top three across 62% of the area | 48% | 21% |
Five to ten terms is plenty. These are the searches that turn into jobs, picked at the start of the engagement and kept the same so the trend means something.
3. Work completed
- Rewrote the flat roof replacement page with pricing ranges and 14 project photos
- Published two location pages (with real jobs) for neighbouring towns
- Earned three local links: a supplier listing, a sponsorship page, a local news feature
- Fixed 11 broken internal links found in the monthly crawl
4. What moved and why
Two or three sentences. "The flat roof page moved from 14 to 7 after the rewrite, and now brings in about a third of organic leads. Roof repair held at 3. Map pack coverage grew in the two towns that got new location pages."
5. Next month
- Push flat roof replacement into the top three: add an FAQ section and two more local links
- Build the guttering service page, which currently doesn't exist
- Review request campaign: aim for eight new reviews
That's the whole report. One page, readable in five minutes, with a clear answer to "is this working?"
The template
Copy this structure into whatever you use, whether that's a doc, a spreadsheet or a Looker Studio dashboard.
| Section | What goes in it | Length |
|---|---|---|
| Headline numbers | Organic leads, organic sessions, cost per lead, each with last month and last year | One table, one sentence |
| Rankings that pay | Five to ten money terms, position now, last month, at start; map pack coverage if local | One table |
| Work completed | What was actually done, in plain English | Four to six bullets |
| What moved and why | The cause behind the biggest changes, good or bad | Two or three sentences |
| Next month | The specific actions planned, tied to a number they should move | Three bullets |
| Appendix (optional) | Impressions, full keyword lists, technical crawl results, for anyone who wants detail | As long as needed |
The order matters. Leads first, because that's what the business pays for. Rankings second, because they explain the leads. Work third, because it explains the rankings.
Where each number comes from
| Number | Source | Watch out for |
|---|---|---|
| Organic leads | GA4 key events filtered to organic search, plus call tracking | Without call tracking you'll miss most leads for trades, where people phone |
| Organic sessions | GA4, Organic Search channel | Compare like for like months; seasonality distorts month on month |
| Rankings | A rank tracker, or Search Console average position | Search Console averages across every query and location, so a tracker is more precise for money terms |
| Map pack coverage | A grid rank tracker | A single check from the office address always looks better than reality |
| Clicks and impressions | Google Search Console | Data lags a couple of days and holds 16 months of history |
Google's own documentation on the Search Console Performance report explains exactly how clicks, impressions and position are counted, which is worth reading once so you know what the numbers in any report really mean.
How to read an SEO report in five minutes
Whether you write reports or receive them, run any report through these five questions:
- Did leads go up? Find the organic leads number. If there isn't one, that's the first problem.
- Compared with what? A number without last month or last year beside it tells you nothing.
- Which rankings moved? Look only at the terms that bring revenue. A jump for a term nobody buys from is noise.
- Does the work explain the movement? If rankings rose, the report should say which work caused it.
- What happens next? Next month's plan should be specific and tied to a number.
If a report can't answer all five, ask for one that can.
Red flags in an SEO report
- Impressions as the headline. Impressions can rise while leads fall, especially with AI Overviews taking clicks on informational searches.
- "Keywords in the top 100". A count of hundreds of rankings at position 70 looks impressive and earns nothing.
- Domain authority as a goal. It's a third party estimate, not something Google uses.
- No leads number at all. Either tracking isn't set up, or someone would rather you didn't look.
- Changing the tracked terms every month. It hides the trend.
- Fifteen pages of automated charts. Length isn't effort. A tool can produce that in seconds.
The same principle applies to AI search. If your SEO includes work on ChatGPT and AI Overviews, the report should show how often you're named, not just traffic. I cover that in AI visibility tracking.
FAQs
What should be in a monthly SEO report?
Organic leads, organic traffic and rankings for the terms that bring revenue, each compared with last month and last year. Then a short list of work completed, an explanation of what moved, and the plan for next month.
How long should an SEO report be?
One page for the part people actually read, with an optional appendix for detail. If the answer to "is SEO working?" isn't clear on the first page, the report is too long or measuring the wrong things.
Which tools do I need to make an SEO report?
Google Search Console for clicks and positions, GA4 for traffic and key events, call tracking for phone leads, and a rank tracker for your money terms. Looker Studio can pull Search Console and GA4 into one dashboard for free.
Should an SEO report include impressions?
Only as supporting detail. Impressions show whether Google is surfacing you more often, but they can rise while traffic and leads fall, so they shouldn't be the headline.
How do I track leads from SEO?
Set up GA4 key events for form submissions and click to call, and use call tracking numbers on the site so phone enquiries from organic search are counted. Then filter both to the Organic Search channel.
Where this leads
If this is the bit you want handled rather than explained:
- Organic SEO. Monthly retainers reported on this exact page: position, traffic and leads.
- SEO audits. A baseline report before any work starts, so the first month has something to beat.
- A free first pass. Send your current report and I will tell you what it is hiding.