A monthly SEO report is not a small audit. An audit is a one-off diagnostic that ends in a plan; a report is a recurring answer to a much narrower question — is this working, and what are we doing next?
Confusing the two produces the 24-page monthly PDF that nobody reads. If you are after the diagnostic document instead, that structure is in our SEO audit template.
The template
| Section | Content | Length |
|---|---|---|
| 1. Headline | One sentence: are we ahead, level, or behind | 1 line |
| 2. The four numbers | Same four every month, with prior month and prior year | ½ page |
| 3. What we did | Work completed, linked to deliverables | ¼ page |
| 4. What it produced | Movement attributable to that work | ½ page |
| 5. Next month | What we will do, and why that and not something else | ¼ page |
| 6. Decisions needed from you | Blockers awaiting the client | 1 line each |
| Appendix | Rankings, full query data, crawl status | Unlimited |
Two pages before the appendix. If it runs longer, something has migrated from the appendix that belongs there.
The four numbers
Pick four and never change them. Changing metrics between months is how reporting loses credibility — it reads as looking for a number that happens to be up.
| Metric | Why this one | Where from |
|---|---|---|
| Organic sessions | The volume answer | Analytics |
| Organic conversions | The only one the client’s board cares about | Analytics + goal |
| Non-brand clicks | Growth, with brand demand stripped out | Search Console |
| Pages earning ≥1 click | Breadth — catches decay early | Search Console |
The fourth is the one most reports omit and the most useful of the four. A site can hold steady on sessions while the number of pages producing them quietly halves. By the time that shows up in the session count you have lost two quarters.
Non-brand is not optional. A brand campaign, a funding announcement or a competitor’s name collision will inflate total clicks with traffic SEO did not create. Report brand and non-brand separately, always, or you will eventually take credit for something you did not do — and then take blame when it stops.
Section 3 and 4 must be adjacent
Report what you did and what it produced next to each other, or neither means anything.
What we did in July
- Published 5 articles targeting the audit/reporting cluster
- Fixed trailing-slash duplication on 4 templates
- Added internal links from 31 articles to service pages
What it produced
- Duplicate-URL fix:
/blog/keyword-research-guideconsolidated from two URLs (85 + 9 impressions) into one, average position 49.7 → 41.2- Internal links: too early, no ranking effect expected before September
- New articles: indexed, no rankings yet — normal at three weeks
Note the second and third lines. Reporting “too early to tell” is what makes the rest of the report believable. A report where every action produced a result is a report nobody trusts by month four.
The section to delete
Rankings for a hand-picked keyword list. Almost every template leads with it. It is the least honest number in SEO reporting, for three reasons: results are personalised and localised so there is no single truth; the list is chosen by the agency, which selects for terms that are moving; and position 4 on a term nobody searches outranks nothing.
If the client insists — and many do — put it in the appendix and lead section 2 with the four numbers above. Rankings are diagnostic, not performance.
Also delete: tool score dials, competitor “share of voice” charts with no method disclosed, and any chart whose axis does not start at zero.
Length is an inverse signal
Watch what happens to report length when results are poor. It grows. More charts, more competitor context, more “SEO is a long-term investment” framing. The work has not increased; the padding has.
A good month is short and specific. A bad month is also short and specific, and says what went wrong and what changes. If you are receiving reports that get longer as traffic gets flatter, that is a pattern worth naming — it appears alongside the others in signs of a bad SEO agency.
Section 6: decisions needed from you
The section that saves the relationship. One line per blocker:
- Developer time for the canonical fix — requested 3 June, still outstanding. This is holding back the indexation recovery.
- Approval on the pricing page copy — sent 18 June.
Without it, three months later the conversation is “why hasn’t traffic recovered” and the honest answer — “because the fix has been waiting on your engineers since June” — arrives as an excuse instead of a documented record. Log blockers monthly and it is neither.
Cadence
Monthly is right for most retainers. Weekly reporting on an SEO programme measures noise: crawl cycles and update rollouts do not resolve in seven days, so weekly reports invite reaction to variance.
The exceptions are a live migration and an active recovery, where weekly is genuinely useful because you are watching for a specific event. During a site migration the report becomes a monitoring log with a different job.
Reporting under someone else’s brand
If you deliver these to agencies rather than end clients, the document needs different handling — what to strip, what breaks when it is rebranded, and where tool watermarks leak through. That is covered in white label SEO reports.
Where the time goes
Two pages a month sounds trivial and is not. Pulling non-brand splits, checking page-level decay and writing an honest attribution paragraph is a few hours per client per month, every month.
That time is real and it is priced into what you pay — see SEO pricing benchmarks for where reporting sits within a retainer, and the pricing comparison for how the delivery models differ on it. If you are an agency looking to hand the reporting layer off entirely rather than build it, our white label service delivers in this format under your brand.