SaaS SEO Audit

How to actually run a SaaS SEO audit — cadence, scoping the crawl across marketing site/docs/app, checking indexation for bloat, Core Web Vitals on a JS-heavy stack, competitive gap analysis against comparison and integration pages, and prioritizing findings instead of printing a 200-page report.

First published: Jul 3, 2026 · Last updated: Jul 25, 2026 · Advanced
demand #5 in SaaS SEO#249 on the site

A SaaS SEO audit isn't a longer checklist — it's the recurring process of running the review: crawling the marketing site (while confirming the app and docs are handled deliberately, not by accident), checking indexation for bloat by reconciling submitted vs. crawled vs. indexed counts, testing Core Web Vitals with field data (not one lab run) on a JavaScript-heavy stack, running a content gap analysis against competitors' comparison and integration pages, and then prioritizing findings by impact and effort instead of reporting everything you found. Cadence is continuous light monitoring plus a full pass quarterly-to-semiannually. The failure mode is a 200-page audit nobody reads.

TL;DR — An audit is a process, not a longer checklist. Google’s Martin Splitt: a technical audit “can use checklists and guidelines to do so, but it needs experience and expertise to adapt these guidelines and checklists to the site you audit.” Run it on a cadence appropriate to release frequency and risk. Scope the crawl by property — marketing site, docs, and app surfaces — and confirm app/trial/dashboard URLs aren’t crawled and indexedStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed. by accident. Check indexation bloat by reconciling submitted vs. crawled vs. indexed. Prioritize Core Web VitalsGoogle's three real-user UX metrics — LCP (loading), INP (responsiveness), and CLS (visual stability) — used by Google's ranking systems, with no official weight attached, measured on field data. with field data, split by page template, because lab tools mislead on a hydrationTurning HTML, CSS, and JavaScript into the final visual page and DOM.-heavy stack. Verify JS renderingTurning HTML, CSS, and JavaScript into the final visual page and DOM. with URL Inspection / Rich ResultsRich results (formerly 'rich snippets') are enhanced search listings — stars, images, prices, breadcrumbs, video thumbnails, and more — that Google and Bing build from structured data. They're a display feature, not a ranking factor, and eligibility never guarantees they'll show. and account for the render-queue delay. Start the content gap analysis from competitors’ comparison and integration pages, not a keyword list. Then prioritize with an Impact/Effort Matrix and/or severity tiers, and cap the report at a short, prioritized set the team can implement.

Evidence for this claim Google renders JavaScript with a web rendering service, but server-side or pre-rendered content remains a useful reliability strategy. Scope: Google JavaScript SEO guidance; rendering behavior is not SaaS-specific. Confidence: high · Verified: Google Search Central: JavaScript SEO basics Evidence for this claim Core Web Vitals assessment is based on real-user field data rather than a single lab run. Scope: Core Web Vitals measurement; lab tools remain useful for diagnosis. Confidence: high · Verified: web.dev: Web Vitals

An audit is a process, not a longer checklist

I’ll open the way I open every audit conversation, because the misconception is that persistent: a good SaaS SEO audit is not “run Screaming Frog, export everything it flags, send it over.” That’s a crawlerA crawler — also called a spider or bot — is an automated program that fetches web pages, extracts their links, and queues new URLs to visit. Search engines use crawlers to discover and download content for their index. report. An audit is what a human does with it.

Google’s Martin Splitt put the distinction cleanly in his 2025 Search Central lightning talk on audit methodology. A technical audit, he said, “should make sure no technical issues prevent or interfere with crawlingCrawling is how search engines use automated bots (like Googlebot and Bingbot) to discover URLs and download pages. A page has to be crawlable to be indexed, but crawling on its own isn't a ranking factor. or indexingStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed.. It can use checklists and guidelines to do so, but it needs experience and expertise to adapt these guidelines and checklists to the site you audit” (as covered by Search Engine Journal). That last clause is the whole job. The checklist is the input; the adaptation to your specific site is the audit. And he’s blunt about the tooling trap, too: “Please, please don’t follow your tools blindly. Make sure your findings are meaningful for the website in question and take the time to prioritize them for maximum impact” (SEJ coverage).

My version of the same point, from What is an Enterprise SEO Audit & How To Do One: “SEO checklists are impractical at scale. It’s a waste of time to check every little thing on every page because there’s simply no ROI in doing so, and no one is going to read your 200-page SEO audit.” Everything below is written to avoid producing that 200-page report.

The standard disclaimer I attach to all of this: it’s my understanding of how these systems work and how I’d approach the problem, not a guarantee — search engines change constantly, so verify against the primary docs in the Official Docs and Quotes tabs. And as with the checklist article: there’s no SaaS algorithm. The crawl → render → index → rank pipeline is identical to a recipe blog’s. What’s SaaS-specific here is the scope (three properties instead of one) and a couple of failure modes, not a special ranking system.

Cadence: continuous monitoring + a full periodic pass

There’s no Google- or Bing-mandated audit frequency, so this is practitioner consensus, not doctrine. The model that works for SaaS has two speeds:

  • Continuous, light, automated monitoring — crawl-error alerts, Core Web VitalsGoogle's three real-user UX metrics — LCP (loading), INP (responsiveness), and CLS (visual stability) — used by Google's ranking systems, with no official weight attached, measured on field data. regressions, and indexation deltas, ideally tied to deploys. SaaS ships fast, and a bad deploy can noindex a template or break rendering across a whole page type overnight. You want to catch that in days, not at the next quarterly review.
  • A full, comprehensive pass on a slower cycle. In my enterprise-audit work I note that comprehensive audits “may occur every few months or yearly” (source). For a growing SaaS site I’d land on quarterly-to-semiannual, and scale that with how fast you ship new integration and comparison pages and how large your docs have grown — a company minting hundreds of programmatic pages a quarter needs the full pass more often than a five-page marketing site does.

The industry-common shorthand you’ll see repeated across competitor guides is “full audit quarterly, lighter monthly checks.” That’s a reasonable default; just don’t treat it as a rule handed down from a search engine. It isn’t one.

Scoping the crawl: marketing site, docs, and confirming the app is excluded

Here’s the SaaS-specific step almost no generic audit guide names as a discrete step: decide what you’re crawlingCrawling is how search engines use automated bots (like Googlebot and Bingbot) to discover URLs and download pages. A page has to be crawlable to be indexed, but crawling on its own isn't a ranking factor. before you crawl it, and segment by property. A SaaS brand is usually three sites wearing one logo — www (marketing), docs. (docs), and app. (the product) — and auditing them as one undifferentiated blob is how you either miss problems or drown in noise.

Segment first. In my audit process I lean on a site-structure view to slice the site “by specific pages, sections of a site, different languages or regions, or a specific CMSA content management system (CMS) is software that lets users create, manage, and publish digital content — like blog posts and pages — without writing raw code. WordPress, Drupal, and Joomla are the most common open-source CMS platforms. or JavaScript framework” before crawling — the SaaS translation is: crawl the marketing site as its own scope, treat the docs subdomain as its own property, and explicitly check what the app is doing.

  • Marketing site — the primary target. This is where the audit’s weight goes: comparison pages, pricing, free tools, integration pages, the blog.
  • Docs — its own crawl-budget property. If docs live on a subdomain, it’s a separate Search ConsoleGoogle's free tool for monitoring crawling, indexing, and search performance. property with its own crawl budgetThe number of URLs an engine will crawl in a timeframe. (the checklist article covers the subdomain-vs-subfolder decision itself — I won’t re-litigate it here). The auditing point is: crawl it separately so a bloated, thousands-of-pages docs tree doesn’t distort the marketing site’s numbers. Note Google’s own scoping hint for the Crawl Stats reportA Google Search Console report (under Settings) that shows how Google has crawled your site over the last 90 days — total requests, download size, and average response time, broken down by response code, file type, Googlebot type, and purpose. It's only available for root-level properties (a Domain property or a URL-prefix property verified at the site's root). — it’s “aimed at advanced users” and “if you have a site with fewer than a thousand pages, you should not need to use this report” (Search Console Help). A standalone SaaS marketing site is often under a thousand URLs; it’s the docs and a growing integration library that push the total past the point where crawl budget starts to matter.
  • App / trial / dashboard — confirm exclusion, don’t assume it. This is the distinct audit action: don’t just trust that noindex and robots.txtA plain-text file at the root of a host that tells crawlers which URLs they may and may not request. It controls crawling, not indexing — a blocked URL can still be indexed if it's linked from elsewhere. are configured right (that’s the checklist’s job) — verify during the audit that /app/, /dashboard/, /signup/, and post-login URLs aren’t being crawled and indexed by accident. Scope a crawl at those paths and check Search Console’s indexed-URL list for anything under them that shouldn’t be there. “Ignoring the app” and “confirming the app is correctly excluded” are not the same thing — the audit does the latter.
TIP Scope the marketing, docs, and app surfaces before reading crawl findings

This raw-HTML baseline exposes coverage and repeatable template issues. It does not evaluate rendered JavaScript or prove that the authenticated app is excluded from search.

Run a bounded SaaS crawl with my free Scout Site Audit Free Free

  1. Run separate representative scopes for the marketing site and docs, and confirm the app boundary deliberately.
  2. Group metadata and indexability findings by template instead of copying every URL into the audit.
  3. Verify app exclusion, rendered output, and GSC state separately before prioritizing the queue.
The sample is useful because it states the page cap and blind spots that a JavaScript-heavy SaaS audit must cover elsewhere.

The report scores 82 out of 100, crawls 24 of 31 discovered URLs, calls the crawl partial, reports two missing-title warnings, and says rendered JavaScript and AI checks were not evaluated.

Checking indexation for bloat

Indexation bloat is when Google has more pages of yours indexed than should be — thin, duplicate, or unintentionally-crawlable URLs diluting the index. The audit check is a three-number reconciliation:

  1. URLs submitted in your sitemapA sitemap is a file that lists the pages, images, videos, and other files on your site so search engines can discover them. It helps discovery, but submitting a sitemap doesn't guarantee crawling or indexing.(s).
  2. URLs Google actually crawled.
  3. URLs actually indexed — from Search Console’s Page Indexing report, which splits your URLs into “indexed” and “not indexed” with a reason for each exclusion.

Big, unexplained gaps between those three numbers are the signal to chase. In my audit method I flag that a typical site has some pages indexed that shouldn’t be, and plenty of pages noindexed that should be indexed — so you check both directions: a pricing or comparison page wrongly excluded, and /app/ or filtered doc-search URLs wrongly included.

The word doing the work above is unexplained. Splitt’s framing is exactly right for SaaS, which sunsets old comparison and integration pages constantly: “A high number of 404s, for instance, is expected if you removed a lot of content recently. That’s not a problem… But if you have an unexplained rise in 404 responses, though, that’s something you want to point out and investigate” (SEJ coverage). A dip in indexed pages right after you pruned a hundred dead integration pages is a success, not a crisis. The audit’s job is spotting the deviation you can’t explain.

Google’s own crawl-budget doc names the root cause on the crawl side: “Without guidance from you, Google tries to crawl all or most of the URLs that it knows about on your site” (Optimize your crawl budget). On a SaaS site the “perceived inventory” it’s talking about is filtered doc-search URLs, tag and paginationPagination splits a large set of content — product listings, blog archives, search results — across multiple sequentially numbered URLs. For SEO, each paginated page should be crawlable, indexable, and self-canonical; Google no longer uses rel=prev/next, but Bing still does. variants on the blog, and templated integration pages that went thin — exactly the stuff an indexation-bloat pass exists to find.

Core Web Vitals on a JavaScript-rendered stack

Core Web VitalsWeb Vitals is Google's initiative (launched May 2020) for unified page-experience quality signals. Core Web Vitals — LCP, INP, and CLS — are the subset used in ranking; the rest (TTFB, FCP, TBT, Speed Index) are diagnostic, not ranking factors. is, per Google, “a set of metrics that measure real-world user experience for loading performance, interactivity, and visual stability of the page” (Google Search Central), with the familiar thresholds — “strive to have LCPLargest Contentful Paint — render time of the largest visible image or text block, relative to when the page started loading. ≤2.5 s (at the 75th percentile) is good. occur within the first 2.5 seconds,” “strive to have an INPInteraction to Next Paint — the input-to-paint latency at the 75th percentile of a page's interactions. ≤200 ms is good. of less than 200 milliseconds,” and “strive to have a CLSCumulative Layout Shift — a unitless score for unexpected visual movement, taken from the largest burst (session window) of layout shifts, not the lifetime sum. ≤0.1 is good. score of less than 0.1” (same doc). Those numbers aren’t the SaaS-specific part. How you measure them is.

The trap on a JavaScript-heavy SaaS marketing site — React, Next.js, Vue — is trusting a single lab run (one PageSpeed InsightsPageSpeed Insights (PSI) is a free Google tool at pagespeed.web.dev that reports two kinds of data for a URL: real-user field data from the Chrome UX Report and a single Lighthouse lab run with the 0–100 Performance score. Only the field Core Web Vitals are what Google uses for ranking. or LighthouseLighthouse is Google's free, open-source tool that audits a page under simulated lab conditions and scores it 0–100 across Performance, Accessibility, Best Practices, and SEO. It's lab data — useful for debugging, not a ranking signal. test). A lab test often reflects a warm cache, a fast machine, and a fully-hydrated app shell — the experience a developer sees locally — not the cold, render-blocking-JavaScript experience a first-time trial visitor on a slower connection actually gets. Google’s own lab-vs-field guidance is explicit about which to trust: “As a general rule, if you have both field data and lab data for a given page, field dataPerformance metrics captured from real users, not lab tests. is what you should use to prioritize your efforts” (web.dev). Lab data still earns its keep — it’s how you reproduce and debug a problem — which is why the same doc concludes “both lab data and field data are important parts of effective performance measurement” (web.dev). For prioritizing the audit, though, you lead with field data (Search Console’s Core Web Vitals report, CrUXChrome User Experience Report — Google's public dataset of real-world (field) performance data from eligible Chrome users. It's the official field-data source behind the Core Web Vitals program.).

The second SaaS-specific move: split field data by page template, not site-wide average. A comparison page with an embedded interactive calculator or a giant feature table carries a very different CWV profile than a plain blog post on the same domain. A site-wide average hides the exact template that’s failing. Group by page type, and the audit tells you which template to fix.

JavaScript rendering checks as an audit step

The checklist article covers the fixes for JS rendering (real <a href> links, server-side rendering, History API routing). The audit’s job is the method — actually opening the tools and looking. Google names the two: “To make sure that Google can still see your content after it’s rendered, use the Rich ResultsRich results (formerly 'rich snippets') are enhanced search listings — stars, images, prices, breadcrumbs, video thumbnails, and more — that Google and Bing build from structured data. They're a display feature, not a ranking factor, and eligibility never guarantees they'll show. Test or the URL Inspection Tool and look at the rendered HTML” (JavaScript SEO basics). Compare the rendered DOM against view-source, per template, and confirm the content that should rank — headlines, prices, body copy, comparison tables — is actually present after render.

One thing that saves you from a false alarm: the render queue. Google warns “the page may stay on this queue for a few seconds, but it can take longer than that” (JavaScript SEO basics). When you’re auditing a freshly-published batch of integration pages, distinguish “this page is a genuine rendering failure” from “this page is just still waiting in the render queue.” Flagging the second as a bug wastes everyone’s time.

Content and competitive gap analysis: start from comparison and integration pages

Competitor benchmarking in most audits means a generic keyword gap or referring-domain diff. For SaaS, the higher-leverage version is structural and bottom-funnel. Rather than starting from a keyword list, I start from my competitors’ top-performing pages and work backward — a habit I describe in my enterprise SEO audit process. Applied to SaaS, that means pulling up your top two or three competitors’ comparison (“alternatives to X”) pages and their integration / marketplace directories, then diffing them against yours:

  • Which integrations do they have landing pages for that you don’t (even though you support the integration)?
  • Which “X vs. Y” and “alternatives to” pages exist for them and not for you?
  • Where do you both have a page but theirs is winning — and is it a content-depth gap or a technical one (rendering, thin template, missing internal linksAn internal link is a hyperlink from one page on a website to another page on the same website. Internal links help search engines discover your pages and pass ranking signals (PageRank and anchor-text context) between them.)?

This is deliberately narrower than “run the Content Gap tool.” Those bottom-funnel page types are where SaaS deals actually get won, and they’re the exact page types the checklist article named as SaaS’s differentiators — so the gap analysis targets them specifically rather than chasing top-funnel keyword volume.

Prioritizing findings

This is where audits succeed or fail, and it’s the step tools can’t do for you. Two complementary frameworks:

1. Impact/Effort Matrix. Sort every finding into the quadrant grid. As I put it in my enterprise SEO strategies piece: “Anything high-impact and low-effort is a quick win, so tackle those tasks first.” On a SaaS audit the quick wins are often a stray noindex on a comparison page, a broken internal link to a pricing page, or a missing render on one template — high impact, low effort.

2. Severity tiers. Bing bakes this into its own audit tool, which is a clean model to borrow. In Bing’s Site Scan, “issues detected during the scan are grouped into three categories and listed in order of severity”: Errors are “the most critical and should be addressed first,” Warnings “may impact SEO health, but are considered medium in terms of severity,” and Notices are “low priority and should be addressed only after resolving errors and warnings” (via Search Engine Journal).

Then cap the deliverable. From my audit reporting advice: “I highly recommend focusing on a few key issues and not a massive report of everything you looked at… I’ve found reporting on 5-10 main issues or opportunities will be better received and the changes are more likely to be implemented” (enterprise SEO audit). That reframes “we found 40 issues” from a boast into a prioritization problem: the audit isn’t done when you’ve found 40 things, it’s done when you’ve decided which 5–10 to ship. An audit that recommends fixing everything has failed at prioritization, not succeeded at thoroughness.

Putting it together: a repeatable audit cadence

The whole loop for a growing SaaS site: continuous automated monitoring catches regressions between passes; a quarterly-to-semiannual full audit scopes the crawl by property (marketing / docs / confirm-app-excluded), reconciles submitted-vs-crawled-vs- indexed to catch bloat, prioritizes CWV from field data split by template, verifies JS rendering with the render queue in mind, diffs your comparison and integration coverage against competitors, and ships a prioritized 5–10-item report rather than a 200-page one. No SaaS algorithm — just the normal pipeline, audited across three properties, with the discipline to fix what matters instead of everything you found.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.