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.
- 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.
- 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.
- 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.
- 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.
Start URL -> https://horizonlegal.com/Crawler -> Googlebot DesktopMode -> Balanced discoveryScope -> 8-page demo sample; root domain
horizonlegal (not a hostname)/personal-injury/ (not a complete crawl start URL)the whole site (when only 8 pages were attempted)
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
Use the principle on your own project
Follow the sequence once. The goal is a defensible decision, not completing steps for their own sake.
Start URL, crawl mode, page limit, user agent, and subdomain rules · Robots, sitemap, WAF, authentication, and JavaScript constraints
- Choose the correct property and start URL.
- Set page scope and discovery mode.
- Record crawler identity and access limitations.
- 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.
ExampleStart 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.
ExamplePageOptimized, 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.
ExampleA 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.
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.
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.




