DomainLens

Templates

Technical SEO Audit Template

The technical half of an audit, separated out — the checks a tool can settle, with the evidence each one needs to be actionable.

Check your site before you start fixing

Run a fresh DomainLens audit and use the report as your priority list.

Run a free SEO audit

Scope

This covers what stops a page being eligible: whether it can be crawled, rendered, indexed and delivered. It deliberately excludes content quality and intent, which no tool settles and which belong in a separate pass.

Run it per template. Technical faults are systemic almost by definition — a canonical bug affects every page a template produces, not one.

Crawling

CheckEvidence to record
robots.txt reachableStatus code and content type
Path not disallowedThe matching rule, if any
Sitemap declared and validURL, parse result, URL count
Crawlable links presentCount of anchors with href
Redirect chainsHop count and final destination
Server response timeTTFB, from more than one location
Crawl errorsCounts by response code

Indexing

The declared-versus-selected canonical comparison is the highest-value row here. A mismatch names a duplication problem you would otherwise spend hours inferring.

CheckEvidence to record
Status codeThe code, from outside your network
Meta robotsThe exact directive string
X-Robots-TagThe header value, if present
Declared canonicalThe URL, and its status code
Google-selected canonicalFrom URL Inspection
Coverage stateThe Search Console state string
Soft 404sStatus returned for a nonexistent path

Rendering

CheckEvidence to record
Content in served HTMLWhether main content appears before JS
Title and canonical in served HTMLPresent or absent
Rendered HTMLFrom URL Inspection
Blocked resourcesThe list from the inspection panel
Console errors during renderMessages Google reported
Hydration warningsFrom the browser console

Recording values, not verdicts

Write down what you observed rather than whether it passed. "TTFB 1.4s from Frankfurt, 0.3s from London" is a finding somebody can act on months later; "slow server" is a note that has to be re-investigated the moment anyone questions it.

This matters more for technical findings than for anything else, because they are the ones that get disputed. A developer who does not believe a canonical is wrong will believe a recorded value with the URL and timestamp it came from, and the argument ends there.

It also makes the next audit cheaper. A previous report with values lets you compare rather than re-measure, and a metric that moved is the first place to look when something changes.

Delivery

Record values rather than pass or fail. A finding saying "TTFB 1.4s" survives re-reading; one saying "slow" does not. See the full audit checklist for the content half.

CheckEvidence to record
HTTPSCertificate issuer and expiry
Mixed contentAny http:// resources
CompressionContent-Encoding header
Cache-ControlThe directive per resource type
HTTP versionNegotiated protocol
Security headersWhich are present
Core Web VitalsField values, and lab if no field data
Why separate technical from content?
Because the technical checks can be settled mechanically and the content ones cannot. Mixing them produces a report where objective findings and opinions look alike.
How many URLs should I check?
One per template, plus any page with unusual behaviour. Technical faults are systemic, so more URLs of the same type add little.
What if field data is unavailable?
Record the lab values and label them as lab. Do not present a simulated score as though it were user data.

Related resources