SEO report template (free PDF)
A free monthly SEO report template in 8 sections, built on the numbers Google Search Console gives you, with what goes in each section and a filled-in example. Save it as a PDF to print and fill in by hand, or copy it into a doc.
The PDF holds the blank template, with lines to write on, and the example starting on a new page. Copies come as Markdown. Notion and most Markdown editors paste it as headings and a table. In Google Docs, turn on Markdown in Tools, Preferences, then right-click and choose Paste from Markdown.
What is an SEO report?
An SEO report shows what search brought a site over a period, usually a month: clicks, impressions, click rate and position from Google Search Console, the pages and searches behind any change, what that traffic led to, and what to work on next. It turns the numbers into decisions.
The four numbers it starts from
Search Console's Performance report gives every site the same four. Put each next to last month and the same month last year.
- Clicks
- Times someone clicked through to your site from Google Search results.
- Impressions
- Times your site appeared in Google Search results.
- CTR
- Clicks divided by impressions.
- Average position
- The average position of your site's highest result. Lower is better.
| Metric | This month | Last month | Change | Same month last year |
|---|---|---|---|---|
| Clicks | 2,210 | 1,840 | +20% | 1,120 |
| Impressions | 118,300 | 96,500 | +23% | 51,800 |
| CTR | 1.9% | 1.9% | 0.0 pts | 2.2% |
| Average position | 22.9 | 24.6 | 1.7 up | 31.4 |
For average position, a lower number is better, so 24.6 to 22.9 is a climb. Report CTR changes in percentage points, not percent.
The template, section by section
Each section with what goes in it, and the example filled in for a garden-care blog.
Summary
Three sentences at the top: what changed, the main reason, and what happens next month. Many readers stop here, so it has to stand on its own.
Example
Clicks from Google rose 20% to 2,210, mostly from the fall lawn care guide published in September and the updated overseeding guide. Impressions rose 23%, a little faster than clicks, and CTR held at 1.9%. In November we work on the two searches at positions 11 and 14.
Search Console numbers
Clicks, impressions, CTR and average position for the month, next to last month and the same month last year. The year-ago column shows whether a change is seasonal.
Example
Clicks 2,210, up 20% on September and almost double October last year (1,120). Impressions grew faster than clicks over the year, so CTR is 1.9%, down from 2.2% a year ago. Average position moved from 24.6 to 22.9.
Pages that gained and lost clicks
The three to five pages with the biggest change in clicks each way, with the likely reason. A list without reasons is just data.
Example
- Gained: /fall-lawn-care-guide +240 clicks (published September 12, now position 6 for "fall lawn care")
- Gained: /overseeding-a-lawn +150 (seed-rate table added October 2)
- Lost: /summer-watering-schedule −90 (seasonal; it fell the same way last October)
Queries close to page one
Queries at positions 8 to 20 with real impressions. These are usually the cheapest wins: a better title, a section the page lacks, or a new page when nothing on the site answers the search.
Example
- "when to overseed a lawn" position 11, 4,900 impressions, 22 clicks: add a dates-by-region table to /overseeding-a-lawn
- "best grass seed for shade" position 14, 2,300 impressions, shown for /overseeding-a-lawn: no page is about it yet, plan one
Indexing
From the Page indexing report: indexed pages, and any new reasons pages aren't indexed. Not every URL should be indexed, so flag only pages that matter.
Example
62 pages indexed, the same as last month. The new aeration post shows "Discovered - currently not indexed"; we linked to it from the fall lawn care guide.
Results from search
What the visits did, from your analytics: sign-ups, leads, sales or newsletter subscribers that came from organic search. This is the line a client or boss cares about most.
Example
41 newsletter sign-ups from organic search (last month 33).
Work done
What was published, updated or fixed this month, with links, so a change in the numbers can be traced to a change on the site.
Example
- Published: /aerating-a-lawn (October 9)
- Updated: /overseeding-a-lawn (seed-rate table, October 2), /best-lawn-mowers (new prices, two models replaced)
- Linked /aerating-a-lawn from /fall-lawn-care-guide
- Fixed: 12 broken internal links
Next month
Three to five tasks, each tied to a number above, with who does it. Fewer tasks that get done beat a long list.
Example
- Sam: add a dates-by-region table to /overseeding-a-lawn for "when to overseed a lawn" (position 11, 4,900 impressions)
- Priya: write "best grass seed for shade" (position 14, 2,300 impressions, only /overseeding-a-lawn shows for it)
- Sam: check /aerating-a-lawn is indexed by mid-November (not indexed today)
Found queries close to page one? See what a top-three spot would be worth, then plan the page with the SEO content brief template. Two of your pages showing up for one query? See which searches they split with the keyword cannibalization checker. Pages stuck as Discovered or Crawled - currently not indexed? What each status means and what to do. Clicks rose or fell and you need the reason? Check whether a confirmed Google update lines up with it in the Google update checker. Need a one-off check of the whole site, with a ranked list of fixes? Use the SEO audit report template.
Serpwright reads your Search Console numbers every week, suggests titles for the searches your site shows up for but has no page for, and writes the ones you approve.
3 days free, no card.
Keep the search numbers current
Connect Search Console and Serpwright keeps the search numbers for this report current. The year-ago, indexing and results lines still come from Search Console and your analytics.
- Its Performance page shows clicks, impressions, click rate and average position for the last 7, 28 or 90 days, each with its change against the period before, plus your top queries and the clicks on each article Serpwright published.
- It syncs Search Console once a week, or when you press Sync now.
- It lists the searches your site shows up for without a page, as titles you approve, and writes the articles. Drafts wait for your review before publishing unless you turn on the drip or auto-publish. Auto-approve takes only titles above a confidence threshold you set.
3 days free, no card.
Questions
What should an SEO report include?
How often should you send an SEO report?
Why compare with the same month last year?
Why don't the query rows add up to the total clicks?
What is the difference between an SEO report and an SEO audit?
Can I get the SEO report template as a PDF?
Can I use the template in Google Docs or Notion?
Do you keep anything when I copy the template?
Sources, checked October 26, 2026
SEO report template
Site: ______________________________ Month: ____________________
1. Summary
Three sentences at the top: what changed, the main reason, and what happens next month. Many readers stop here, so it has to stand on its own.
2. Search Console numbers
Clicks, impressions, CTR and average position for the month, next to last month and the same month last year. The year-ago column shows whether a change is seasonal.
| Metric | This month | Last month | Change | Same month last year |
|---|---|---|---|---|
| Clicks | ||||
| Impressions | ||||
| CTR | ||||
| Average position |
3. Pages that gained and lost clicks
The three to five pages with the biggest change in clicks each way, with the likely reason. A list without reasons is just data.
4. Queries close to page one
Queries at positions 8 to 20 with real impressions. These are usually the cheapest wins: a better title, a section the page lacks, or a new page when nothing on the site answers the search.
5. Indexing
From the Page indexing report: indexed pages, and any new reasons pages aren't indexed. Not every URL should be indexed, so flag only pages that matter.
6. Results from search
What the visits did, from your analytics: sign-ups, leads, sales or newsletter subscribers that came from organic search. This is the line a client or boss cares about most.
7. Work done
What was published, updated or fixed this month, with links, so a change in the numbers can be traced to a change on the site.
8. Next month
Three to five tasks, each tied to a number above, with who does it. Fewer tasks that get done beat a long list.
Example report: a garden-care blog, October
Made-up numbers, to show how each section reads when filled in.
1. Summary
Clicks from Google rose 20% to 2,210, mostly from the fall lawn care guide published in September and the updated overseeding guide. Impressions rose 23%, a little faster than clicks, and CTR held at 1.9%. In November we work on the two searches at positions 11 and 14.
2. Search Console numbers
| Metric | This month | Last month | Change | Same month last year |
|---|---|---|---|---|
| Clicks | 2,210 | 1,840 | +20% | 1,120 |
| Impressions | 118,300 | 96,500 | +23% | 51,800 |
| CTR | 1.9% | 1.9% | 0.0 pts | 2.2% |
| Average position | 22.9 | 24.6 | 1.7 up | 31.4 |
Clicks 2,210, up 20% on September and almost double October last year (1,120). Impressions grew faster than clicks over the year, so CTR is 1.9%, down from 2.2% a year ago. Average position moved from 24.6 to 22.9.
3. Pages that gained and lost clicks
- Gained: /fall-lawn-care-guide +240 clicks (published September 12, now position 6 for "fall lawn care")
- Gained: /overseeding-a-lawn +150 (seed-rate table added October 2)
- Lost: /summer-watering-schedule −90 (seasonal; it fell the same way last October)
4. Queries close to page one
- "when to overseed a lawn" position 11, 4,900 impressions, 22 clicks: add a dates-by-region table to /overseeding-a-lawn
- "best grass seed for shade" position 14, 2,300 impressions, shown for /overseeding-a-lawn: no page is about it yet, plan one
5. Indexing
62 pages indexed, the same as last month. The new aeration post shows "Discovered - currently not indexed"; we linked to it from the fall lawn care guide.
6. Results from search
41 newsletter sign-ups from organic search (last month 33).
7. Work done
- Published: /aerating-a-lawn (October 9)
- Updated: /overseeding-a-lawn (seed-rate table, October 2), /best-lawn-mowers (new prices, two models replaced)
- Linked /aerating-a-lawn from /fall-lawn-care-guide
- Fixed: 12 broken internal links
8. Next month
- Sam: add a dates-by-region table to /overseeding-a-lawn for "when to overseed a lawn" (position 11, 4,900 impressions)
- Priya: write "best grass seed for shade" (position 14, 2,300 impressions, only /overseeding-a-lawn shows for it)
- Sam: check /aerating-a-lawn is indexed by mid-November (not indexed today)
From serpwright.com/seo-report-template