Technical SEO Audit Template
Every finding classified by what it can actually do to a page, joined to what Google indexes, and grouped into tickets by template.
Free download · No account needed
Developer Ticket Set · Thornbury Supply · ticket 1 of 6
T1. Category template emits noindex on eighty-four live categories
| File | templates/category.html |
|---|---|
| Introduced | Release of 18 February 2026 |
| Effort | XS. One line. |
| Band | R, realised loss |
Current behaviour
The conditional that adds <meta name="seo-ticket-t1-peek__robots" content="noindex"> for discontinued ranges also matches eighty-four live categories. It tests the category's legacy_range flag, set on anything created before the 2024 catalogue migration, rather than is_discontinued.
Expected behaviour
The noindex is emitted only where is_discontinued is true. Live categories emit no robots meta tag at all.
Examples
/c/hex-bolts-a2-stainless
/c/threaded-rod-metric
/c/washers-din-125
/c/socket-cap-screws
/c/nyloc-nuts
Why this one is first
These eighty-four pages earned 4,180 clicks in the twenty-eight days before the release and zero since. It is the only ticket in the set whose return is known rather than estimated.
Verification
| Deployment | No robots meta tag on the five examples, and the live inspection test reports each as indexable |
|---|---|
| Search | Clicks against the eighty-four URLs at 14 and 28 days |
Ranked by URL count, this finding sits thirteenth of the fifteen counted findings in the register. Ranked on what it cost, it is first.
Every technical SEO audit template on offer is a checklist. Fifty checks, eighty-seven checks, a severity dropdown and a notes column, and every one of them starts from a blank sheet you fill in by hand. The crawl you actually have already contains forty or fifty findings, pre-sorted by a priority column. Screaming Frog's own issues reference says that column is not a rule for what should be prioritised, because it lacks context.
The missing context is two facts no crawl holds: whether Google has the URL indexed, and what the URL earns. This pack adds both, then classifies every finding by what it can mechanically do. Suppressing findings can keep a URL out of results and are ranked on clicks. Presentational findings change how a result looks and cannot remove it, so they are ranked on impressions and their traffic at risk is zero. Structural findings get no click figure at all.
The worked example runs a fastener distributor's crawl of 31,912 URLs and 47 issue names down to six tickets. The two largest rows in that export are worth nothing, and the finding worth 4,180 clicks a month is eighty-four pages sitting thirteenth of fifteen by URL count. Pair it with the full Search Console export past the thousand-row cap, and with the read on pages competing with each other. The marketing workspace holds the register and the template map between crawls, so the next audit starts from the map.
What you get
Issue Register
One row per crawler finding, with its issue name and priority kept verbatim as evidence, then the three columns the crawl cannot hold: the class, the indexed count, and the traffic figure the class allows. Keeping the crawler's own label in its own column is what lets somebody check the reclassification against what the tool actually said.
Template Map
The URL pattern behind every template, its URL and indexed counts, its clicks and impressions, and the file your engineers would name. That last column is the half a crawl cannot give you, and it is what turns a finding into a ticket rather than a report.
Priority Matrix
The ordered queue with a band on every row, sized on the figure its class allows rather than on a severity label. Presentational work sits above suppressing findings worth under a hundred clicks, deliberately, and the band key on the sheet says why.
Discarded Findings
Every dropped finding with the reason, the source that settled it, and the condition under which it comes back. Usually longer than the queue. It exists so the person who ran the crawl can see their finding was read and rejected rather than missed.
Developer Ticket Set
Six tickets naming a file each, stating the current behaviour as a fact about the code, carrying at most five example URLs, and never using the words severity or priority. A ticket carrying four thousand rows gets closed as unactionable, and correctly so.
Ranking Method
The classification, the bands and the traffic definitions written out, including why a missing description scores zero: Google's snippet documentation says snippets are automatically created from page content, so no click was ever at risk. Written so a developer argues with the method rather than with you.
Retest Plan and Export Checklist
The two-stage check on every ticket, one for the markup and one for the search outcome, with a control group where one exists. Plus the crawl settings to switch on before the next crawl, because link score and the orphan filters arrive empty without them.
How it works
- 1
Send the crawl
The URL inventory, plus the bulk issues folder if you have it. Then Search Console performance by page and the page indexing report. An export an agency ran and handed over is the normal case.
- 2
River classifies before it ranks
Every finding gets a class from what it can mechanically do to a page, and the class fixes which number may rank it. Findings with no indexed URLs behind them go straight to Discarded.
- 3
Findings collapse into templates
URLs cluster by path shape, you name the file behind each pattern, and findings group onto the file that generates them. This is the step where three issue names on 6,912 URLs become one edit.
- 4
Take the tickets to engineering
Six tickets in order, each with the file, the current behaviour, five example URLs and its verification. Then the retest reads what the release actually did, at fourteen and twenty-eight days.
Frequently asked questions
Is it free, and what format are the downloaded files?
Free, and no account needed for the download. Documents arrive as .docx and every sheet as .csv, so they open directly in Word, Pages, Google Docs, Excel, Numbers and Sheets with no conversion step. The register and the ticket set are the two files most people open first.
What does Edit with AI actually do?
It installs this pack as a private Space and River fills it from your own exports. It classifies your findings, joins them to your indexed counts and clicks, groups them onto your templates, ranks them, and writes your tickets. The worked example gets replaced by your audit.
Why does a missing meta description have zero traffic at risk?
Because it cannot remove a URL from the index. Google's documentation says snippets are created automatically from page content, and that the description element is used only when it describes the page better. So the finding is ranked on impressions instead, which is real and much smaller.
My crawl came from an agency and half the columns are empty. Is it usable?
Yes. Link score and the orphan filters only populate when crawl analysis runs after the crawl, and orphan discovery also needs the integration connected first. Findings needing those columns are marked Blocked with the setting for a recrawl. Every suppressing finding works without them.
Does it work with a crawl from something other than Screaming Frog?
Yes. Sitebulb, Semrush, Ahrefs and a custom crawler all produce the same three things: a URL inventory, a set of named findings, and a severity label. The classification reads the finding rather than the label, so the tool that produced it does not change the method.
Does this decide which of two competing pages survives?
No, deliberately. This space prioritises and writes up technical findings. Choosing a survivor between two of your own URLs ranking for one query is a separate job, and the cannibalization review does that one, including the redirect map that comes out of it.
Why does the page indexing report show fewer affected URLs than my crawl?
Because it samples. Google's documentation says the per-issue example list is limited to 1,000 rows and does not necessarily show all URLs with that issue. So the crawl is the URL inventory, Search Console is the diagnosis, and the join runs at template level.
Find out which of your High priority findings are worth nothing
Send the crawl and your Search Console data. River classifies every finding, joins it to what Google indexes, and comes back with the tickets in order.
Edit with AI