Quick answer
An SEO audit action plan template turns audit findings into tasks. Each row has the issue, root cause, impact tier, pages affected, the exact fix, owner, effort, priority score, due date, status and a verification check. Sort by priority, put blockers first, and group rows into 30, 60 and 90 day batches.
An audit tells you what is wrong. An action plan says who fixes it, by when, and how you'll know it worked. Without the plan, findings sit in a PDF and nothing ships. Without the last column, things ship and nobody checks whether rankings moved.
This SEO audit action plan template is the sheet we use after the triage in what to fix first after an SEO audit. It is built on the scoring method in how to prioritize SEO issues, and every column below can be copied into Excel, Google Sheets, Notion or your issue tracker.
Why an audit needs an action plan
Audit reports describe the site. Action plans describe work. The difference matters because the people who fix SEO issues are rarely the people who found them: developers fix templates and rendering, writers fix titles and content, and someone has to chase both.
A plan also changes the conversation with a client or manager. "We found 214 issues" invites the question "so what?". "Five changes this month, two of them one-hour developer tasks, expected to return 40 product pages to Google's index" invites a yes.
Three properties make a plan usable:
- One row per root cause. One template bug is one row with a page count, not 300 rows.
- An owner per row. A role at minimum (developer, writer, SEO); a name if you can.
- A verification step per row. The check that proves the fix landed, done by someone other than the person who made the change if possible.
Insight: Write the verification check before the fix ships. If you can't say how you'll confirm it worked, the task isn't specific enough yet.
The 12 columns of the SEO audit action plan template
| Column | What goes in it | Example |
|---|---|---|
| ID | A short code so the client report and tickets can reference it | SEO-03 |
| Issue | The finding in plain language | Product pages canonicalise to the homepage |
| Root cause | Where the problem comes from | product.liquid hard-codes canonical = shop.url |
| Impact tier | Critical, High, Medium, CTR only, Low or Cosmetic | Critical |
| Pages affected | Count, or share of impressions | 40 (45% of impressions) |
| Fix | The exact change, literally | Set canonical to canonical_url in the template |
| Owner | Role or name | Developer (Sam) |
| Effort (hours) | Honest estimate | 1 |
| Priority | Formula result | 450 |
| Due | Date or sprint | Sprint 42 |
| Status | To do, In progress, Shipped, Verified, Won't fix | Shipped |
| Verification | How you confirm it worked | URL Inspection shows Google-selected canonical = page URL on 5 sample URLs |
Note the two statuses after "In progress": Shipped means the change is live; Verified means you confirmed the effect. Many plans stop at "done", which hides fixes that shipped but didn't work.
Won't fix deserves a reason in the Fix column. "Deliberate: cart pages stay noindexed" or "Cosmetic: no ranking effect" stops the same finding being raised again at the next audit, and shows the client you looked at it rather than missed it.
Copy-paste formulas for the plan
These work in Excel and Google Sheets. They assume Impact tier in column D, Pages affected in E, Effort in H, Status in K.
Tier points (helper column):
=IFS(D2="Critical",10, D2="High",5, D2="Medium",2.5, D2="CTR only",1.5, D2="Low",0.75, TRUE,0)
Priority score, with blockers forced to the top and finished rows dropped to zero:
=IF(OR(K2="Verified",K2="Won't fix"),0, IF(D2="Critical",1000000,0) + [tier points]*E2/MAX(H2,0.25))
Days overdue (Due date in J):
=IF(AND(K2<>"Verified",J2<TODAY()), TODAY()-J2, "")
Progress for the client summary:
=COUNTIF(K:K,"Verified")/(COUNTA(K:K)-1-COUNTIF(K:K,"Won't fix"))
Hours by owner for sprint planning (owners listed in M2:M5):
=SUMIFS(H:H, G:G, M2, K:K, "<>Verified")
Ten example rows
Copy these as a starting point and replace the details with your own site's. They cover the findings that come up most often.
| ID | Issue | Tier | Fix | Owner | Effort | Verification |
|---|---|---|---|---|---|---|
| SEO-01 | /pricing has noindex from staging | Critical | Remove the robots meta tag in the page settings | SEO | 0.25 | URL Inspection: "Indexing allowed? Yes" |
| SEO-02 | Product pages canonicalise to / | Critical | Self-referencing canonical in product template | Developer | 1 | Google-selected canonical correct on 5 URLs |
| SEO-03 | H1 and intro injected by JavaScript | High | Render hero text on the server | Developer | 8 | Raw HTML contains H1 on 3 templates |
| SEO-04 | Category titles lack the category keyword | High | New titles per Appendix B | Writer | 3 | Re-audit: keyword in title passes on 12 pages |
| SEO-05 | 15 service pages have no internal links | High | Link from /services and 2 related posts each | SEO | 2 | Crawl shows 3+ inlinks per page |
| SEO-06 | Internal links to 23 redirected URLs | Medium | Update links to final URLs | Writer | 1.5 | Crawl shows 0 links to redirects |
| SEO-07 | Field LCP 3.4 s on product pages | Medium | Preload hero image, serve WebP | Developer | 4 | CrUX LCP under 2.5 s after 28 days |
| SEO-08 | No Organization schema on homepage | Medium | Add JSON-LD with name, logo, sameAs | Developer | 0.5 | Rich Results Test shows Organization |
| SEO-09 | 14 high-impression pages share one description | CTR only | Unique descriptions for those 14 | Writer | 2 | CTR change in Search Console after 6 weeks |
| SEO-10 | Heading levels skip in blog template | Low | Change H4 to H3 in template | Developer | 0.5 | Re-audit passes heading order |
Look at the verification column. Each check names a tool and a pass condition. That is what lets you report "Verified" with a straight face.
Laying the plan out in 30, 60 and 90 days
Sorting by priority gives the order; batching gives the schedule. Group rows so each batch ships as a unit and has a clear outcome.
Days 1 to 30: blockers and template fixes. Every critical row, plus high-tier rows that are one template change. These have the largest reach for the least effort, and their effect is visible quickly in Search Console.
Days 31 to 60: page-level relevance. Title and H1 rewrites, internal linking, content additions on the pages with the most impressions. Writers and the SEO own most of this batch.
Days 61 to 90: content depth and experience. Gaps against the pages that rank, Core Web Vitals work that needs 28 days of field data to confirm, and the medium and low rows that are worth doing.
At day 90, re-run the full audit and compare with the baseline. The SEO audit report template shows how to present that comparison to a client.
Where to keep the plan
| Tool | Best for | Strength | Weakness | How Seotific fits |
|---|---|---|---|---|
| Google Sheets or Excel | Freelancers, small teams, client sharing | Formulas, sorting, easy to send | No notifications or assignment | Paste in the Excel export; add owner and due columns |
| Jira, Linear | Teams where developers work from tickets | Fits the sprint process | Hard for clients to read | Use the plan ID in each ticket title |
| Notion, Asana, Trello | Mixed teams and agencies | Owners, due dates, comments | Weak for bulk data and formulas | Link each card to the audit row |
| An audit tool's issue tracking | Ongoing monitoring | Re-audits mark issues fixed or reopened automatically | Less flexible for non-SEO tasks | Shows new, fixed and still-open issues per re-audit |
Most teams keep the master plan in a sheet and copy the top rows into their ticketing tool each sprint.
Tools for building the action plan
The audit export supplies the rows. Search Console supplies reach (impressions per page) and the verification for indexing fixes. PageSpeed Insights and the CrUX dashboard verify speed work after the 28-day window.
Seotific fills the first half of the template for you: the issue, the impact tier, the pages affected and the exact fix, already grouped by cause and sorted by weighted impact. Re-audits act as the verification column for most rows, showing each issue as new, fixed or still open. If you'd rather start from the full check list, the SEO audit checklist template has all 69 checks in a spreadsheet, and which SEO errors matter most explains how each tier is assigned.
Frequently asked questions
What is an SEO audit action plan?
An SEO audit action plan is the list of fixes from an audit turned into tasks: each with an owner, an effort estimate, a priority, a due date and a way to verify it worked. It is what the team works from after the audit report is delivered.
Is this SEO audit action plan template free?
Yes. The columns, formulas and example rows on this page are free to copy into any spreadsheet or project tool. For the underlying check list, the Excel SEO audit checklist template is also a free download.
How many tasks should an SEO action plan have?
Fewer than you think. After grouping by root cause, most site audits produce 10 to 40 meaningful rows. If your plan has hundreds of rows, you are probably listing URLs instead of causes, or including cosmetic findings that belong in an appendix.
What is the difference between an SEO audit report and an action plan?
The report explains what was found and why it matters, for decision-makers. The action plan is the working list of tasks for the people doing the fixes. The report's executive summary usually points to the top rows of the plan.
How do I verify an SEO fix worked?
Pick a check that shows the change took effect in search, not just in code: URL Inspection for indexing and canonicals, a re-audit for on-page fixes, field Core Web Vitals after 28 days for speed, and Search Console impressions or position over several weeks for relevance changes.
Who should own SEO fixes?
Assign by the kind of change. Developers own templates, rendering, redirects and speed. Writers own titles, descriptions and content. The SEO owns canonicals, internal linking decisions and verification. Shared ownership usually means no ownership, so name one person per row.
Check your own page
Seotific audits a URL against the keyword it should rank for and lists the fixes in order of impact. Free plan, no card.
Run a free audit