How to use this checklist
Work through it once per template rather than once per site. A Progressive Web App can pass every check on its homepage and fail most of them on the templates that actually need organic visibility.
Every check is answered by inspecting the rendered output and the server response, not by looking at the page in a browser.
Rendering
- Primary content is present in the rendered output for every indexable template
- Rendering strategy is deliberate per template, not inherited by default
- No indexable content requires user interaction to appear
- Rendering does not depend on a request that may fail silently
- Scripts and resources needed for rendering are reachable
URLs, routing and status codes
- Every indexable view has a unique, server-addressable URL
- Direct requests to those URLs return the correct content
- Missing pages return a genuine 404 rather than a 200 shell
- Redirects are server-side with correct status codes
- Trailing-slash, casing and parameter variants resolve consistently
- Navigation is expressed as real links to resolvable destinations
Metadata and signals
- Unique title and meta description exist in the rendered output
- Self-referencing canonical is present and correct per URL
- Open Graph and Twitter tags are present for shareable pages
- Structured data survives rendering and validates
- No unintended noindex or nofollow directives in production
- robots.txt permits crawling of what should be indexed
- The sitemap lists canonical, indexable URLs only
Service worker and caching
- Non-browser clients receive the same content as browsers
- Cached responses cannot serve stale or partial content to crawlers
- Offline fallbacks are never served in place of real pages
- Cache invalidation follows content updates
After launch
- Rendered output re-verified in production, not only in staging
- Key templates confirmed as recrawled and reindexed
- Coverage and impressions monitored per template group
- Redirect map spot-checked against real inbound URLs
- SEO-critical behavior added to the pre-release check for future deploys