Quick answer: run these 20 checks in layer order — indexability first (one accidental noindex outweighs everything else), then crawl clarity, rendering, performance, structured data, and the AI-crawler layer. Each check below has a pass condition you can verify yourself, most with free tools. Quarterly full pass; targeted pass after every theme change, replatform, or bulk edit.
The ordering is the method: each layer gates the ones below it. A perfect schema on a noindexed page is decoration. Work top to bottom and stop polishing lower layers while an upper one fails.
Layer 1 — Indexability (checks 1–4)
- No accidental noindex. View source (or fetch as Googlebot) on your money pages: no robots meta or X-Robots-Tag containing noindex. The career-ending technical bug; ships constantly via theme updates and staging pushes. (What the directives mean.)
- Key pages return 200. Not 302 chains, not soft-404 templates. Redirects max one hop.
- robots.txt blocks nothing that should rank. A blocked page cannot show its noindex either — blocking and deindexing are different jobs (robots guide; generator).
- Search Console shows the pages indexed. Pages report → your money URLs in "Indexed", and every exclusion reason on that report explained, not ignored. (GSC setup.)
Layer 2 — Crawl clarity (checks 5–9)
- One self-referencing canonical per page; variants and parameters canonicalize to the clean URL (duplicate-content mechanics).
- Sitemap complete and clean — every indexable page in, every redirect/404/noindexed page out, submitted in GSC (sitemap guide).
- No orphan pages — everything important reachable by internal links, ideally within three clicks of home.
- Redirect hygiene — no chains past one hop, no loops, and every retired URL with inbound links 301s somewhere relevant (reclamation).
- hreflang correct if multilingual — bidirectional pairs, x-default, self-inclusion (hreflang guide).
Layer 3 — Rendering (checks 10–11)
- Content exists in raw HTML. Fetch any key page as Googlebot: title, H1, body text, and product info present without JavaScript. If the raw fetch is a shell, Google indexes you slowly and AI crawlers not at all (SPA fixes).
- One H1, sane heading tree, real HTML links (anchor tags, not JS click handlers) for anything crawlers should follow.
Layer 4 — Performance (checks 12–14)
- Core Web Vitals pass on field data — LCP < 2.5s, INP < 200ms, CLS < 0.1, in the real-user section of PageSpeed Insights, mobile first.
- Images sized and compressed — modern formats, dimensions declared (that is most CLS), lazy-loading below the fold only.
- HTTPS everywhere — one canonical scheme+host, http and www variants 301ing into it.
Layer 5 — Structured data (checks 15–16)
- Schema on every template that qualifies — Product+Offer on products, Article on posts, BreadcrumbList sitewide, Organization once — and validating in the Rich Results Test (schema guide).
- Schema matches the visible page. Prices, availability, ratings in JSON-LD identical to what humans see; drift earns manual actions.
Layer 6 — The AI-crawler layer (checks 17–20)
- AI crawlers explicitly allowed in robots.txt — GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot, Google-Extended — assuming you want to exist in AI answers (the decision, argued).
- llms.txt published at the root, listing your citable pages (generator + guide).
- Answers liftable from raw HTML — key pages open with a direct two-sentence answer; FAQ blocks carry FAQPage schema (the AEO discipline).
- Verify the AI engines can actually fetch you — a Googlebot-UA fetch returning a CDN challenge page instead of content means your bot protection is eating your AI visibility too.
Running it for real
Manual, the pass takes an afternoon with the free stack: GSC + the simulator + PSI + Rich Results Test. At catalog scale the checks are the easy half and the hundreds of per-page fixes are the wall — which is the half RankEngine automates for Shopify: it runs these checks across every product, collection, and page continuously, then applies and verifies the fixes through the API. Either way, the discipline is the same: audit on change, monitor always, and never polish layer 5 while layer 1 bleeds.
RankEngine