Pageoptimized
Module 04

Technical SEO

Diagnose discovery, rendering, indexation, canonicalization, structured data, sitemap, and performance problems with page-level evidence.

  • SEO specialists
  • Developers
  • Site owners
  • Agencies
Module case file

Horizon Legal has a 70% health score, but the score is not the diagnosis

The August 21 crawl sampled eight pages, read seven, found one critical issue and ten warnings, and recorded an 801 ms average response. You must turn that evidence into a verified remediation queue.

Crawl scope
8 sampled pages; 7 readable
Health
70%; 1 critical, 10 warnings, 2 informational
Critical finding
One page requires JavaScript to expose content
Known issue
The settlement calculator is an unreadable JavaScript shell; two pages lack descriptions and three have image-alt gaps
Your finished deliverable

Group findings by root cause, identify affected important URLs, assign acceptance criteria, and recrawl the same scope after release.

How this module works

The order matters

A crawl finding is evidence, not automatically a priority. Technical SEO moves from scope and access to index controls, rendered evidence, business impact, implementation, and a matched recrawl.

  1. 01Define the crawl

    Know what was requested, reached, skipped, or blocked.

  2. 02Verify index signals

    Compare status, robots, canonicals, sitemaps, and Search Console.

  3. 03Inspect the page

    Check rendered content, links, schema, and performance evidence.

  4. 04Fix and verify

    Queue root causes and recrawl the same scope after release.

Lesson 4.1

Define crawl scope and identity

Know what was tested before interpreting a health score.

A health score is the most misread number in any audit tool, including this one. Horizon's crawl returns 70%, and the number is accurate. What it describes is eight pages, seven of which were readable, on one day, requested by one identity. It is not a statement about the website.

Every conclusion drawn from a crawl inherits the crawl's boundaries, and those boundaries are set by choices somebody made before the run started. Change the start URL, the page limit, the discovery mode, or the user agent, and the same site returns a different score.

None of this makes the number useless. It makes the number conditional, and the condition has to travel with it. An audit that reports 70% without reporting eight pages is not wrong so much as unfalsifiable, which is worse.

A crawl is a sample. The scope belongs in every sentence the sample is used to support.

What actually defines the sample

Five choices, each of which changes the result, and all of which should be recorded before anyone reads a finding:

  • The start URL. A crawl beginning at a subfolder never sees what the homepage links to.
  • The page limit. Where the crawl stopped, and whether it stopped before reaching the templates that matter.
  • The discovery mode. Following links finds what the site connects; reading a sitemap finds what the site claims; a supplied list finds only what you already knew about.
  • The crawler identity. Which user agent made the request.
  • Access conditions. Anything that blocked, throttled, or served different content during the run.

The third one catches people out. A link-following crawl and a sitemap crawl on the same site return different page sets, and the difference between those two sets is itself a finding worth writing down.

Discovery mode is also how orphans surface. A page present in the sitemap and absent from the link crawl has no internal path, and you learn that for free by comparing two runs you were going to do anyway.

Identity changes the answer

Servers do not treat all requesters the same. A firewall, a rate limiter, or a bot-management rule can serve one thing to a browser and something else to a crawler, and the crawler faithfully reports what it was given.

This produces a specific and expensive false positive. The crawl reports blocked pages or thin content across a template. The developer opens the same URLs in a browser, sees a working page, and concludes the audit tool is broken. Both observations are correct. They were made by different identities and the server answered them differently.

Record the identity used and whether anything about the run looked like throttling. Slow responses that get slower through a run, a burst of errors partway in, or a clean first hundred pages followed by uniform failures are all the shape of rate limiting rather than the shape of a broken site.

Say the sample size out loud

The sentence that turns a useful audit into a misleading one is almost always a generalization nobody checked. An eight-page sample can confirm that one calculator fails to render. It cannot support a claim about the technical state of a five thousand page site, and the moment somebody writes that claim down, every later decision inherits it.

The fix is a phrasing habit rather than a process. Name what was tested, then say what it showed. Seven of eight sampled pages were readable, and the unreadable one is the settlement calculator. That sentence is defensible in a year, and it is barely longer than the one that is not.

Set the scope before you run

Four decisions, made deliberately, recorded with the run. The point is that somebody else could reproduce your numbers next quarter.

  1. Choose the property and the start URL.Confirm the protocol and host variant you actually mean. A crawl started on the wrong one measures a redirect chain and calls it a site.
  2. Set the page limit and the discovery mode.Decide whether you are testing what the site links to, what it claims in a sitemap, or a list you supplied. Each answers a different question and the answers rarely agree.
  3. Record the crawler identity and any access limits.The user agent and anything that blocked or throttled the run. Without this a firewall result and a site result are indistinguishable in the report.
  4. Check that representative templates were reached.A sample that missed the product template, or the location pages, cannot say anything about them. Confirm coverage before you read severity counts.

Configure the Horizon Site Health run

Use a complete HTTP or HTTPS start URL and record every setting visible at launch so the verification crawl can match it.

Use these run settings
  • Start URL -> https://horizonlegal.com/
  • Crawler -> Googlebot Desktop
  • Mode -> Balanced discovery
  • Scope -> 8-page demo sample; root domain
Do not substitute these
  • horizonlegal (not a hostname)
  • /personal-injury/ (not a complete crawl start URL)
  • the whole site (when only 8 pages were attempted)
Worked exampleSee the completed Horizon Legal work, then build your version.
Completed example: Horizon Legal

Reproducible crawl record

The scope explains exactly what the 70% score represents.

Before this lesson: the Site Health run before interpreting its score

Start URL
https://horizonlegal.com/
Configuration
Googlebot Desktop; balanced discovery
Attempted
8 sampled pages
Observed limit
One page returned an unreadable application shell

After this lesson: Finished output

Start URL
https://horizonlegal.com/
Crawler
Googlebot Desktop; balanced discovery
Sample
8 pages attempted; 7 read
Access limit
One JavaScript shell returned no readable page content
Run
Aug 28, 2026
Decision

Describe findings as an eight-page sample, then rerun the same settings after the rendering fix.

Save this in

Site Health audit record; link the run from the technical queue.

Your turn

Use the principle on your own project

Follow the sequence once. The goal is a defensible decision, not completing steps for their own sake.

Have these open

Start URL, crawl mode, page limit, user agent, and subdomain rules · Robots, sitemap, WAF, authentication, and JavaScript constraints

  1. Choose the correct property and start URL.
  2. Set page scope and discovery mode.
  3. Record crawler identity and access limitations.
  4. Verify robots, sitemap, and representative templates.
Reference notesDefinitions, site-specific paths, common mistakes, and completion paths

Terms in plain language

Use these definitions when a term is unfamiliar.

Crawl scope

The exact URLs, limits, discovery sources, identity, and access conditions included in a crawl.

Example

Start at horizonlegal.com, discover from links and sitemap, cap at 500 pages, and use Googlebot Desktop identity.

User agent

The identity string a crawler sends when requesting a page. Servers and security tools may respond differently to different identities.

Example

PageOptimized, Chrome, and Googlebot-style crawls can reveal different access behavior.

Discovery mode

The method used to find URLs, such as following links, reading sitemaps, or using a supplied list.

Example

A sitemap-only crawl will not prove that pages have useful internal links.

Choose the path that matches your site

New sites establish evidence; established sites use history.

Brand-new site or no usable history

Run a launch crawl against staging when accessible and again after launch. Verify templates, navigation, status codes, canonicals, robots rules, sitemap membership, and tracking before traffic history exists.

Site with usable history

Define a reproducible scope, compare it with prior runs, and include important templates and known problem sections instead of relying only on an arbitrary page cap.

Common mistakes

What people often do and what to do instead.

Reporting eight crawled pages as an eight-page site
InsteadSeparate discovered, requested, fetched, rendered, skipped, and blocked URLs.
Changing crawl settings before recording the failed scope
InsteadSave the original configuration so the cause and recrawl are comparable.

You should now have

  • A crawl scope record
  • Coverage limitations
  • A list of inaccessible or unknown areas

Before you move on, confirm

  • Scope is reproducible.
  • Blocked or unrendered pages are named.
  • A sample is not described as the entire site.
Lesson 4.2

Audit indexation and canonical controls

Separate discovery, crawlability, indexability, and canonical selection.

Indexing issue is not a diagnosis. It is a category containing at least six independent controls, each with a different failure, a different fix, and a different place to verify it. Collapsing them into one label is how a team spends a sprint on the wrong one.

The controls also interact, and some combinations cancel each other out in ways that look like the tool is lying. Most of the confusing cases in this lesson are two correct-looking settings that contradict.

Name the control that failed, not the symptom. Six controls, six different fixes.

Six controls, six different jobs

Each of these can independently prevent a page from being indexed, and each is verified somewhere different:

  • Status code. Whether the server returns the page at all, and whether it does so consistently under load.
  • robots.txt. Whether a crawler is permitted to request the URL in the first place.
  • Page-level robots directives. The meta tag and the X-Robots-Tag header, which is the one people forget to check.
  • Canonical. Which URL is declared preferred, and separately which one the engine actually selected.
  • Redirects. Where a request is sent, which is not a preference hint and not an indexing rule.
  • Internal links and sitemap membership. Whether anything points at the URL to begin with.

Declared canonical and selected canonical are two different facts, and only the second one matters. A page can declare itself canonical all day while the engine quietly picks a different URL, and nothing in your own markup will tell you that happened.

The header directive deserves its own mention because it is invisible in the place people look. A team checks the rendered head, finds no noindex, and concludes the page is indexable. The X-Robots-Tag is in the response header, set by a CDN rule somebody added two years ago, and it overrides everything they just examined.

The mental model

Where a URL stops being indexable

Gate 1Can anything reach the URL?
Check it here

Internal links in the crawl, plus sitemap membership.

Stops here when

No link and no sitemap entry. Nothing below this matters yet.

Gate 2Does it answer with 200?
Check it here

The status column in the crawl run, not the browser.

Stops here when

Redirect chain, 404, 410, or a 5xx that only appears under load.

Gate 3Does robots.txt allow the fetch?
Check it here

Test the exact path, including its query string.

Stops here when

Disallowed. The URL can still be listed, just without its content.

Gate 4Is the page free of noindex?
Check it here

The rendered head plus the X-Robots-Tag response header.

Stops here when

A noindex left over from staging overrides everything else here.

Gate 5Does the content exist after rendering?
Check it here

Rendered HTML in Site Health, not view-source.

Stops here when

Content that needs a click, or a script that failed. An empty page can be indexed as empty.

Gate 6Does the canonical point here?
Check it here

URL Inspection, engine-selected canonical.

Stops here when

A different URL was chosen. This page will not accumulate its own signals.

Indexable. Only now is ranking the right thing to argue about.
Work down the gates in order. The first failure is the only one worth fixing, because everything below it is unmeasurable until it clears.

The blocking mistake, in two forms

The most common self-inflicted indexing problem is blocking a crawler from seeing the very instruction you want it to obey. It happens in two versions and both look like decisive action.

Blocking a noindex page in robots.txt. The page carries noindex, so somebody also disallows it to be thorough. The crawler now cannot fetch the page, which means it cannot see the noindex, which means the URL can persist as a bare listing indefinitely. The robots rule defeated the removal it was meant to reinforce.

Blocking a redirecting URL in robots.txt. Horizon retires an obsolete city page and redirects it to a consolidated destination. Disallow that old URL and the crawler never requests it, never sees the redirect, and never passes anything along. The redirect is correct and unreachable.

The rule underneath both: a control only works if the crawler is allowed to observe it. Robots.txt governs the request, and everything else governs what happens once the request succeeds. Use robots.txt to prevent crawling you do not want, never to enforce an instruction that lives inside the response.

Actual PageOptimized screenUse the numbered steps with the product image below.
Actual product

Inspect page-level evidence

The Pages view exposes status, indexability, titles, canonicals, content, and template patterns needed to verify a diagnosis.

PageOptimized Site Health pages tab with crawl status, metadata, canonical, and indexability details.Open full size
  1. Filter the affected template.
  2. Compare page controls.
  3. Check important outliers.
  4. Save the root cause, not every symptom.
Actual PageOptimized screenUse the numbered steps with the product image below.
Actual product · Sitemap Changelog

See what entered or left the sitemap

Two matched Horizon crawls show the sitemap health change, the added old-results URL, the removed archive URL, and the exact review items that need a decision.

PageOptimized Sitemap Changelog comparing two Horizon Legal audits with added, removed, canonical, and rendering review items.Open full size
  1. Compare the same sitemap across two completed crawls.
  2. Separate a changed URL list from an indexing conclusion.
  3. Open the canonical and rendering review items.
  4. Create one fix per root cause, not one task per URL count.

Work the controls in order

Same discipline as module 1: stop at the first control that fails, because everything below it is unobservable until that one clears.

  1. Check the status and the full redirect chain.Not just the final code. A chain of three hops, or a 200 that becomes a 503 under crawl load, are different problems from the 404 the report shows.
  2. Check robots.txt against the exact path.Including query strings, and including the rule order, because a later allow can override an earlier disallow in ways that are easy to misread.
  3. Check both robots directives.The meta tag in the rendered head and the X-Robots-Tag in the response header. Checking only the first is the single most common miss in this lesson.
  4. Compare declared canonical against selected canonical.URL Inspection reports what the engine chose. When it disagrees with your declaration, the disagreement is the finding and the page will not accumulate its own signals.
  5. Verify something points at the URL.Internal links and sitemap membership. A perfectly indexable page nothing links to is not an indexing problem, and fixing indexing controls will not help it.
Worked exampleSee the completed Horizon Legal work, then build your version.
Completed example: Horizon Legal

Index-control check for an old results page

Each control is checked separately before choosing a fix.

Before this lesson: one URL requiring an index-state decision

URL
/old-results/
Current response
200; no redirect
Overlap
Competes with /case-results/
Unknowns
Current canonical, sitemap state, and intended outcome

After this lesson: Finished output

Status
200; no redirect
Robots
Crawl allowed; no noindex recorded
Canonical
Self-declared
Internal links
None found
Search demand
No clicks in 90 days; overlaps the case-results page
Decision

Merge useful proof into the case-results page, redirect the old URL, and update internal references.

Save this in

Work Queue: Consolidate old results page, with source and destination URLs.

Your turn

Use the principle on your own project

Follow the sequence once. The goal is a defensible decision, not completing steps for their own sake.

Have these open

Affected URLs · HTTP status, robots directives, canonical, sitemap, internal links, and Search Console evidence

  1. Check status and redirect chain.
  2. Check robots.txt and page-level robots directives.
  3. Compare declared and selected canonical evidence.
  4. Verify internal links and sitemap inclusion.
  5. Inspect representative URLs in Search Console.
Reference notesDefinitions, site-specific paths, common mistakes, and completion paths

Terms in plain language

Use these definitions when a term is unfamiliar.

Indexable

Eligible for indexing based on access, response, noindex controls, and canonical signals. Eligibility is not a guarantee of inclusion.

Example

A 200 page with no noindex and a self-canonical may be indexable but still not indexed.

Canonical

A signal identifying the preferred representative among duplicate or very similar URLs. Search engines may select a different canonical.

Example

Tracking-parameter variants can point to the clean product URL when their content is equivalent.

Redirect

A server response that sends users and crawlers to another URL. It is not the same as a canonical hint or noindex rule.

Example

A retired guide with a clear replacement can 301 redirect to that replacement.

Choose the path that matches your site

New sites establish evidence; established sites use history.

Brand-new site or no usable history

Define which launch URLs should be indexable, which utility or filtered URLs should not, and which canonical each template emits. Test before and after launch.

Site with usable history

Compare intended controls with crawl evidence, sitemap membership, internal links, and index reports. Fix conflicting signals by root cause and template.

Common mistakes

What people often do and what to do instead.

Calling a page indexed because it appeared in Search Console history
InsteadVerify the current index state and current canonical and robots signals.
Fixing one signal while others still conflict
InsteadReconcile status, robots, canonical, sitemap, links, and intended index state together.

You should now have

  • Intended index state per URL
  • Conflicting signals named
  • One verification method after the fix

Before you move on, confirm

  • Each issue names the failed control.
  • Canonical conflicts have URL evidence.
  • Fixes avoid blocking pages that must be crawled to see noindex.
Lesson 4.3

Review rendering, performance, and structured data

Find user-facing and machine-readable failures without assuming JavaScript is invisible.

Search engines render JavaScript. That has been true for years, and the myth that they do not causes damage in both directions: teams rebuild working sites to escape a problem they never had, and teams dismiss genuine rendering failures because rendering is supposedly solved.

The real question is narrower. Does the useful content survive when something goes wrong, and can it be read without an interaction nobody is going to perform? Horizon's settlement calculator answers no to both, and it is the one critical finding in the entire crawl.

Rendering is a resilience question, not a JavaScript question. Schema describes what is visible; it does not create it.

Rendering is about resilience

Compare the initial HTML against the rendered result on the templates that matter. Where they differ, ask what happens if the difference never arrives: a blocked resource, a script error, a slow third party, a timeout under load.

Horizon's calculator is the worked case. The instructions and the explanatory content only exist after scripts run. When they fail, the page is an empty shell. A person sees a blank box and leaves, and a crawler stores a page with nothing on it. Both outcomes are bad and neither is fixed by markup.

The fix is to make the useful content present without requiring the interactive layer to succeed. Server-render the explanation, keep the tool as the enhancement, and the page degrades into something still worth reading instead of into nothing.

Performance is a user claim before it is a search claim

Keep four kinds of evidence separate, because they answer different questions and get conflated constantly:

  • Field data. What real visitors experienced, which is the only evidence about real visitors.
  • Lab data. A synthetic run under controlled conditions, useful for comparing before and after.
  • Diagnostics. The specific causes a lab run suggests, which are hypotheses rather than findings.
  • The affected experience. Which page and which task got slower, in words a non-specialist would recognize.

A single lab score is the weakest of the four and the one most often quoted. Horizon's 801 millisecond average response is a fact about a crawl, and it becomes useful only when attached to which pages and which task.

Name the experience whenever you raise a performance issue. The calculator takes four seconds before anyone can type a number is a sentence somebody can prioritize. The score is 61 is a sentence that starts an argument about the score.

Actual PageOptimized screenUse the numbered steps with the product image below.
Actual product · Performance

Read performance by metric and affected tests

The Performance tab separates LCP, INP, CLS, and TTFB instead of turning one average Lighthouse score into a diagnosis.

PageOptimized Site Health Performance tab with Lighthouse coverage and Core Web Vitals distributions for Horizon Legal.Open full size
  1. Confirm how many tests completed.
  2. Separate lab coverage from field performance claims.
  3. Prioritize LCP because 13 of 16 tests need work.
  4. Open affected pages before assigning a template fix.

Structured data has two requirements

The first is that it matches what a person can actually see on the page. Markup describing reviews that do not appear, prices that are not shown, or an author nobody is credited as, is a misrepresentation, and it is the version of schema work that gets sites into trouble.

The second is that it maps to a documented feature the page is eligible for. Valid markup for something no engine displays is syntactically correct and operationally pointless, and it still costs maintenance every time the template changes.

What schema cannot do

Structured data does not improve a page. It describes one. When the calculator's content is missing because rendering failed, adding markup produces a machine-readable description of a page that still does not work for the person who arrived.

It also buys eligibility rather than an appearance, and eligibility is not a ranking. This distinction matters when reporting: shipping schema is completed work, and it belongs in the work layer of the measurement tree rather than in the visibility layer, until something actually changes in a report.

Test what a machine and a person both get

Six checks per important template. Template rather than page, because these problems are almost never limited to one URL.

  1. Compare initial HTML with rendered content.On the templates that carry the business, not on the homepage alone. The gap between the two is where every rendering finding lives.
  2. Check resource access and script errors.A blocked stylesheet or a failing third-party script produces exactly the symptoms people attribute to crawlers not running JavaScript.
  3. Ask what remains when the script fails.This is the resilience question and the one that decides whether the finding is critical. A page that degrades to nothing is a different severity from one that degrades to a readable article.
  4. Read field and lab data separately.Field describes your visitors, lab lets you compare a change against itself. Mixing them produces claims neither one supports.
  5. Validate schema against the visible page.Every claim in the markup should be findable by a person reading the page. Anything else is a description of a page you did not build.
  6. Confirm the feature is documented and eligible.Valid markup for an appearance that does not exist is maintenance with no upside, and it will break silently the next time the template changes.
Worked exampleSee the completed Horizon Legal work, then build your version.
Completed example: Horizon Legal

Rendering and structured-data finding

The finding names the failure and the affected experience.

Before this lesson: the verified rendering failure

URL
/settlement-calculator/
Raw response
Application shell without essential page content
Crawler result
Readable content not obtained
Supporting evidence
Performance, schema, and template checks

After this lesson: Finished output

Affected page
One audited URL
Initial HTML
Empty application shell
Rendered result
Crawler could not obtain readable page content
Performance context
73 average Lighthouse performance; 801 ms response
Schema rule
Validate only markup matching visible content
Decision

Serve essential content in initial HTML, then recrawl and validate rendered content and schema.

Save this in

Technical queue root cause: Client-only content on important template.

Your turn

Use the principle on your own project

Follow the sequence once. The goal is a defensible decision, not completing steps for their own sake.

Have these open

Representative URL templates · Raw response, rendered HTML, screenshots, structured data, and Lighthouse evidence

  1. Compare initial HTML and rendered content on important templates.
  2. Check resource access and JavaScript errors.
  3. Review Core Web Vitals and lab diagnostics as separate evidence.
  4. Validate structured data syntax, eligibility, and visible-content agreement.
Reference notesDefinitions, site-specific paths, common mistakes, and completion paths

Terms in plain language

Use these definitions when a term is unfamiliar.

Rendered content

The page content and interface available after required scripts and resources run, not only the initial HTML response.

Example

The settlement calculator shell loads in initial HTML but its instructions and result controls appear only after JavaScript executes.

Structured data

Machine-readable markup describing visible page content using a documented vocabulary. It must match what users can see.

Example

Product markup should describe the visible product, price, and availability rather than hidden or unrelated claims.

Performance metric

A measured aspect of loading or interaction. One lab score is evidence, not a complete diagnosis or business outcome.

Example

A slow largest contentful paint on product pages matters more when it affects an important template and real users.

Choose the path that matches your site

New sites establish evidence; established sites use history.

Brand-new site or no usable history

Test representative templates and critical interactions before launch, including script failure, keyboard use, images, structured data, and slow-network behavior.

Site with usable history

Segment failures by template and importance, compare field and lab evidence where available, and connect rendering or markup failures to affected pages.

Common mistakes

What people often do and what to do instead.

Assuming a successful HTTP response means the content rendered
InsteadCompare raw and rendered output and check the primary information directly.
Treating every Lighthouse score as a ranking diagnosis
InsteadUse field and lab evidence for user-impact and template-specific remediation.

You should now have

  • Template-level render findings
  • Affected elements and URLs
  • A reproducible test for each failure

Before you move on, confirm

  • The claim is based on rendered evidence.
  • Performance work names the affected experience.
  • Schema is not presented as a general ranking boost.
Lesson 4.4

Prioritize, assign, and recrawl

Turn technical findings into verified outcomes.

An audit returning 340 issues has not given you 340 pieces of work. It has given you a symptom list, and symptom lists sorted by severity label produce queues where a site-wide template fault sits below a batch of missing alt attributes because there are more of the latter.

The work of this lesson is turning that list into a small number of causes, ordered by what they cost the business, each with a way to tell whether the fix worked.

Issue count is not priority. Group by root cause, order by affected importance, and close only on re-measured evidence.

Group by root cause first

Most large issue counts collapse dramatically once grouped. Two hundred pages missing a meta description is usually one template that stopped generating them, which is one fix and one deploy. Counting it as two hundred items makes it look like the biggest problem on the site, and prioritizing by count guarantees it gets worked first.

Group before you estimate anything. Effort estimates on ungrouped symptoms are meaningless, because the same fix is being estimated repeatedly. The grouped version usually reveals that the enormous list is a dozen causes, and that three of them are one line of template code.

Attach the affected important URLs to each group rather than the full list. Important means pages that serve the outcome from module 1. A root cause touching four hundred pages nobody visits ranks below one touching the six pages that produce consultations.

What actually sets the order

Five inputs, none of which is the number of rows the tool returned:

  • Affected important pages. How many pages that matter are exposed to this cause.
  • Severity. What it actually costs: access, usefulness, visibility, or conversion.
  • Recurrence. Whether it will come back on the next deploy without a systemic fix.
  • Effort. Real implementation cost, estimated once per cause rather than per symptom.
  • Confidence. How sure you are that this is the cause rather than a correlated symptom.

Horizon's queue puts the unreadable calculator above three image-alt gaps, and the reasoning is legible from those five: it blocks a critical experience and removes readable content, while alt text is a real accessibility fix with a smaller blast radius. The alt work stays in the queue with its own acceptance criteria rather than being dismissed.

Confidence is the input people leave out, and it is what stops a queue filling with confident guesses. A cause you are seventy percent sure about, with a cheap test available, should usually be tested before it is scheduled.

Actual PageOptimized screenUse the numbered steps with the product image below.
Actual product · five audit views

Start with issues, then inspect the affected pages

Site Health keeps severity, affected URLs, crawl context, and the fix path together instead of ending with an export.

PageOptimized Site Health issues tab showing technical SEO findings grouped by severity and affected pages.Open full size
  1. Confirm crawl scope.
  2. Open a grouped issue.
  3. Inspect affected important pages.
  4. Assign and recrawl after the fix.

Closing requires the same scope

A fix is not done when it ships. It is done when a repeat test, using a comparable scope, shows the original evidence changed. That means recrawling with the same start URL, the same limit, the same discovery mode, and the same identity as the run that found it.

Change the scope and the comparison is void. A hundred-page crawl after an eight-page one will produce a different health score whether or not anything was fixed. Somebody will report that number as an improvement, and it will be arithmetic rather than progress.

Write acceptance criteria that a different person could evaluate. The calculator renders its instructions and explanation with JavaScript disabled is testable by anyone. The calculator is fixed is not, and it is how items get closed while the problem survives.

Actual PageOptimized screenUse the numbered steps with the product image below.
Actual product · Crawl Comparison

Verify what changed between matched runs

The comparison keeps scope, health movement, new issues, and the removed page together so a team can tell whether a release actually improved the crawl.

PageOptimized Crawl Comparison showing Horizon Legal health movement, changed page count, new issues, and a removed URL across two audits.Open full size
  1. Confirm both run dates and scopes.
  2. Read health movement beside page-count movement.
  3. Inspect the two newly observed issues.
  4. Keep the comparison linked to the release work item.

Build the remediation queue

The output is a short ordered list where each row names a cause, its affected important pages, and the observation that will close it.

  1. Group identical root causes.Do this before reading counts or estimating effort. It is normal for a three-figure issue list to become a dozen causes, and the shape of the queue changes completely once it does.
  2. Attach affected important URLs and the evidence.Important against the module 1 outcome, not against the total. The evidence is what stops the fix being re-diagnosed by whoever picks it up.
  3. Order by the five inputs, with confidence visible.Write the reason for the position. A priority nobody can explain gets re-argued in the next planning meeting and usually loses to whatever is loudest.
  4. Assign an owner and testable acceptance criteria.Testable means somebody other than the author could run the check and get a definite answer. Anything softer closes on opinion.
  5. Recrawl the same scope and close on the evidence.Same start URL, limit, discovery mode, and identity. If the evidence did not change the way you predicted, the item is not closed, whatever shipped.
Worked exampleSee the completed Horizon Legal work, then build your version.
Completed example: Horizon Legal

Prioritized remediation queue

Counts are grouped into fixes with acceptance criteria.

Before this lesson: verified findings from Lessons 4.1-4.3

Access
1 important unreadable page
Index architecture
1 overlapping old-results page
Content QA
2 missing descriptions; 3 image-alt gaps
Verification need
Repeat the same eight-page crawl scope

After this lesson: Finished output

P1
Render readable content on the failed page; owner Engineering
P2
Consolidate /old-results/ only after preserving useful proof and confirming the redirect target
P2
Add 2 missing descriptions and 3 image alt values; owner Content
Acceptance
Same eight-page scope reads 8 of 8; affected issue counts reach zero
Review
Matched recrawl after the release
Decision

Ship root-cause fixes first; close tasks only after the matched recrawl changes the evidence.

Save this in

Work Queue items linked to the Aug 28 Site Health run and the next matched verification run.

Your turn

Use the principle on your own project

Follow the sequence once. The goal is a defensible decision, not completing steps for their own sake.

Have these open

Verified findings with affected URLs · Business importance, confidence, effort, risk, owner, and release timing

  1. Group identical root causes.
  2. Attach affected important URLs and evidence.
  3. Assign fix owner and acceptance criteria.
  4. Recrawl the same scope after release.
  5. Close only when the evidence changes as expected.
Reference notesDefinitions, site-specific paths, common mistakes, and completion paths

Terms in plain language

Use these definitions when a term is unfamiliar.

Severity

The consequence of a confirmed issue on access, usefulness, visibility, or conversion.

Example

An unreadable primary conversion tool is more severe than one missing alt attribute on a decorative image.

Affected scope

The important URLs, templates, or user journeys exposed to the same root cause.

Example

One template bug affecting 800 product pages has broader scope than one isolated typo.

Recrawl

A repeat test using a comparable scope to verify that the released fix changed the original evidence.

Example

Recrawl the same calculator URL with the same identity after the rendering release.

Choose the path that matches your site

New sites establish evidence; established sites use history.

Brand-new site or no usable history

Treat launch blockers first: inaccessible navigation, non-indexable intended pages, broken templates, missing conversion paths, and tracking failures. Recrawl before launch approval.

Site with usable history

Prioritize by important affected scope, severity, recurrence, effort, and confidence. Use historical comparisons to identify regressions and repeated root causes.

Common mistakes

What people often do and what to do instead.

Sorting only by issue count or severity label
InsteadPrioritize verified impact on important pages and audience tasks.
Marking work done when code ships
InsteadRecrawl the same URL set and acceptance criteria after release.

You should now have

  • A root-cause remediation queue
  • Owners and acceptance criteria
  • Matched recrawl evidence

Before you move on, confirm

  • Root causes are grouped.
  • Acceptance criteria are testable.
  • The before-and-after scope matches.
Primary references

Verify the practice at the source.

Practices and source links reviewed August 2026.