# SaaS SEO Audit: What to Check on a Software Website

> A SaaS SEO audit checklist: app vs marketing site indexing, JavaScript rendering, docs and programmatic pages, pricing pages, schema and AI search visibility.

URL: https://seorecheck.com/blog/saas-seo-audit-guide · Published: 2026-10-15 · [Українська](https://seorecheck.com/ua/blog/saas-seo-audit-guide.md), [Español](https://seorecheck.com/es/blog/saas-seo-audit-guide.md)

A **SaaS [SEO audit](https://seorecheck.com/blog/what-is-an-seo-audit)** is a review of a software company's website that checks whether its marketing pages, documentation and feature pages can be crawled, rendered, indexed and ranked, and that app screens, login pages and staging copies stay out of search. It ends with a list of fixes in priority order, starting with the ones that block indexing.

SaaS sites break in their own ways. They are often built on JavaScript frameworks and spread across several subdomains. Many also produce thousands of near-identical pages from templates. This guide covers what to check, where SaaS sites usually fail and what to fix first.

## What is a SaaS SEO audit?

A SaaS SEO audit is a [technical SEO audit](https://seorecheck.com/blog/technical-seo-audit) adapted to how software companies build and grow their sites. The basics don't change: Google has to be able to crawl the pages, render them, pick a canonical URL and decide that each page deserves a place in the index. What changes is where things go wrong. A typical SaaS company runs a marketing site on one stack, documentation on another, a blog on a third and the product on `app.` or `dashboard.` subdomains. Each of these has its own robots.txt, its own templates and often its own owner. Marketing pages are frequently single-page apps that render text only in the browser. Integration, template and "alternative to" pages are generated at scale. Pricing changes often, and old plan pages are rarely redirected. A useful SaaS audit therefore maps every hostname first, then checks indexing, rendering, duplication and conversion pages host by host, rather than running one crawl and reading a generic score.

## How is a SaaS SEO audit different from a regular site audit?

The checks overlap with any site audit, but SaaS sites put weight on different areas. The table below shows the usual trouble spots and what to look at for each one.

| Area | Typical SaaS problem | What to check |
|---|---|---|
| Hostnames | App, docs, status and staging subdomains indexed or blocked by mistake | Every subdomain's robots.txt, `noindex` tags and what Google has indexed for each one |
| Rendering | Marketing pages built as a client-side SPA, with the text in the browser only | Raw HTML vs. rendered HTML, links as `<a href>` |
| Docs | Several versions of the same doc page, all indexable | Canonicals pointing to the current version |
| Programmatic pages | Thousands of integration or template pages with almost the same text | Unique content per page, indexing rate |
| Pricing and plans | Old plan URLs return 200, 404 or a redirect to the homepage | Redirects to the current pricing page |
| Comparison pages | Thin "vs" pages, or pages the internal links never reach | Content depth, internal links |
| Structured data | Markup for features Google no longer shows, or ratings that aren't visible on the page | Organization markup, valid SoftwareApplication |
| AI search | AI search crawlers blocked along with training bots | Robots.txt rules per user agent |

If you sell physical products as well, the [ecommerce SEO audit](https://seorecheck.com/blog/ecommerce-seo-audit-guide) covers facets and variants. For the full list of general checks, use the [SEO audit checklist](https://seorecheck.com/blog/seo-audit-checklist).

## Should the app and login pages be indexed?

In most cases, no. Logged-in screens, sign-in and password-reset pages, and invite links give searchers nothing useful. They should not compete with your marketing pages. The open question is how to keep them out, because robots.txt and `noindex` do different jobs.

Google's documentation is explicit: for `noindex` to work, [the page must not be blocked by robots.txt](https://developers.google.com/search/docs/crawling-indexing/block-indexing). If it is blocked, Google never sees the rule, and the URL can still appear in results when other pages link to it. Google also does not support `noindex` inside robots.txt.

A practical setup for SaaS:

- **Login, signup and reset pages:** allow crawling and add `<meta name="robots" content="noindex">`.
- **The app itself (`app.example.com`):** protect it with authentication. Logged-out visitors should get a redirect to login or a 401/403 response, not a 200 page with an empty shell.
- **Staging and preview environments:** password-protect them. Robots.txt alone is not protection, and staging copies leaking into the index is a common SaaS mistake.
- **Status pages and help desks** on third-party tools: decide on purpose whether they should rank, then check what the tool actually outputs.

For rule syntax and common mistakes, see the [robots.txt guide](https://seorecheck.com/blog/robots-txt-seo-guide).

## Is your JavaScript framework hiding content from Google?

Sometimes it is. Google can render JavaScript, but rendering happens in a queue, and Google's own [JavaScript SEO basics](https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics) still calls server-side rendering or pre-rendering "a great idea" because not all bots can run JavaScript. Many AI crawlers and social preview bots read only the raw HTML.

What to check on each key template (homepage, feature page, pricing, blog post, doc page):

1. **Raw HTML vs. rendered DOM.** Fetch the page with JavaScript off. Are the H1, the main copy and the links in the HTML, or only a `<div id="root">`?
2. **Links.** Navigation built with `onClick` handlers instead of `<a href>` is invisible to crawlers. Google asks for links that follow its crawlable-link practices.
3. **Status codes in single-page apps.** Client-side routing often returns 200 for URLs that don't exist (soft 404s). Google recommends redirecting to a server-rendered 404 or adding `noindex` to error views.
4. **JavaScript-controlled robots tags.** Google warns that when it sees `noindex`, it [may skip rendering](https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics), so removing `noindex` with JavaScript later may not work. Ship the right robots tag in the initial HTML.

Framework defaults matter here. Next.js, Nuxt, Astro and similar tools can render on the server or at build time. The audit question is whether *your* configuration actually does it for marketing routes.

## How do you handle docs, changelogs and programmatic pages?

Treat them as separate sections, each with its own indexing goal. Documentation, integration directories and template galleries can bring in a lot of long-tail traffic. They also create most of the duplicate and thin URLs on a SaaS site.

### Versioned documentation

When `/docs/v2/setup`, `/docs/v3/setup` and `/docs/latest/setup` show almost the same text, Google picks one canonical, and it may not be the one you want. Google lists [redirects and rel="canonical" as strong signals](https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls) and sitemap inclusion as a weak one. It also warns against using `noindex` or robots.txt for canonicalization. Point old versions to the current page, and list only current URLs in the sitemap. The [canonical tag guide](https://seorecheck.com/blog/canonical-tag-guide) covers the details.

### Integration, template and use-case pages

A page per integration ("Connect X to Slack") is a solid SaaS pattern when each page says something specific: what syncs, setup steps, limits and examples. When 300 pages differ only by the partner name, expect statuses like [crawled – currently not indexed](https://seorecheck.com/blog/crawled-currently-not-indexed-fix) in Search Console. In the audit, compare how many URLs each template produces with how many of them are indexed.

### Changelog and release notes

Decide whether individual entries deserve their own URLs. Paginated changelog archives with one line per entry are usually low-value pages that take crawl attention away from your important ones.

## What should you check on pricing, feature and comparison pages?

These are the pages that convert, so small problems cost real signups. Check that:

- **Old plan URLs redirect** with a 301 to the current pricing page or the closest plan, not to the homepage.
- **Prices and plan names are in the HTML.** Pricing tables loaded from an API after page load may be missing for crawlers that don't render.
- **Each feature has one strong page.** Avoid separate thin pages for "feature", "feature for teams" and "feature tool" that compete with each other.
- **Comparison and "alternative" pages are reachable.** These are often added outside the main navigation and end up orphaned. Link them from feature pages and the footer. The [internal linking guide](https://seorecheck.com/blog/internal-linking-seo-guide) explains how.
- **Comparisons stay accurate.** Competitor claims go out of date quickly. Review the page whenever pricing or features change.

## Which structured data does a SaaS site need?

Start with Organization markup on the homepage, including `logo`, `url` and `sameAs` links to your official profiles. It helps search engines and AI systems connect your site to your brand.

SoftwareApplication markup is often added incorrectly. Google's [software app documentation](https://developers.google.com/search/docs/appearance/structured-data/software-app) requires `name`, `offers.price` (0 for free apps) and either `aggregateRating` or `review` for the rich result. Ratings must follow the review snippet guidelines, so don't invent a rating or show one that isn't visible on the page.

Skip FAQ and HowTo markup if the goal is rich results. Google has retired both. If your pages still carry FAQ schema "for SEO", it no longer produces a rich result in Google.

## Does a SaaS site need an AI search check?

Yes. Buyers increasingly ask assistants things like "best tool for X" or "does X integrate with Y". Your site can only be cited if the right bots can read it. The most common SaaS mistake is blocking every AI bot in one robots.txt rule.

The bots do different jobs. OpenAI's [crawler documentation](https://developers.openai.com/api/docs/bots) explains that **OAI-SearchBot** surfaces sites in ChatGPT search, **GPTBot** collects training data and **ChatGPT-User** handles actions users trigger. Each can be allowed or blocked separately. If you want to opt out of training but stay visible in search, write the rules per bot:

```
User-agent: GPTBot
Disallow: /

User-agent: OAI-SearchBot
Allow: /
```

For Google, [there are no extra requirements or special optimizations](https://developers.google.com/search/docs/appearance/ai-features) to appear in [AI Overviews](https://seorecheck.com/blog/seo-for-ai-search) or AI Mode. Indexing and snippet eligibility come first, and `nosnippet`, `data-nosnippet` and `max-snippet` control what can be shown. Watch for those controls on pricing or feature pages, where they may have been added for other reasons. The site must also be included in Search generative AI features in Search Console, and the Generative AI performance report shows how it does there. The llms.txt file does not help Google Search.

Beyond crawler access, check that pages answer the questions buyers ask: what the product does, who it's for, what it integrates with and how pricing works. That text needs to be visible without JavaScript. A Wikidata entry and consistent `sameAs` links also help assistants identify your company. For more, see [AI search optimization](https://seorecheck.com/blog/ai-search-optimization-checklist).

## In what order should you fix SaaS SEO issues?

Fix by impact. Problems that block indexing come first, then problems that waste crawling or split signals, then improvements.

1. **Indexing blockers:** a `noindex` or robots.txt block on marketing pages, staging copies in the index, main copy that only appears after JavaScript runs.
2. **Wrong URLs in the index:** app and login pages, soft 404s, old plan pages.
3. **Duplication:** doc versions, near-identical programmatic pages, conflicting canonicals.
4. **Conversion pages:** pricing, features, comparisons, plus internal links that reach them.
5. **Performance:** [Core Web Vitals](https://seorecheck.com/blog/core-web-vitals-guide) on key templates (LCP ≤ 2.5 s, INP ≤ 200 ms, CLS ≤ 0.1 at the 75th percentile). SaaS marketing pages heavy with scripts often fail INP.
6. **Structured data and AI visibility:** Organization and sameAs, per-bot robots.txt rules, answer-ready copy.

To see where your own site stands, a free [SEORecheck audit](https://seorecheck.com/request) crawls every page, compares raw and rendered HTML, and checks robots.txt rules for search, user and training AI bots, plus snippet controls and Organization/sameAs markup. You can see what the full report looks like in the [sample report](https://seorecheck.com/sample).

After you ship fixes, recheck in 30–60 days. On SaaS sites, new templates and releases often bring old problems back, so comparing against the last audit (see the [comparison sample](https://seorecheck.com/sample/compare)) shows what was fixed and what returned. Prices for the full report and recheck are on the [pricing page](https://seorecheck.com/pricing).

## Key takeaways

- Map every hostname (marketing, docs, blog, app, staging) before you crawl. SaaS problems often live in the subdomains nobody owns.
- Use `noindex` on crawlable pages to keep them out of search, and authentication for the app and staging. Robots.txt does not stop indexing.
- Make sure the main copy, links and robots tags are in the initial HTML, not added by JavaScript.
- Consolidate doc versions with canonicals or redirects, and give every programmatic page unique content or keep it out of the index.
- Redirect retired plan pages, and keep comparison pages linked and accurate.
- Allow AI search bots even if you block training bots, and don't rely on FAQ markup for rich results.

---

## Want to know what to fix on your site?

Get a free SEO audit preview: your score and real issues, with evidence from your pages.

- [Get a free SEO audit preview](https://seorecheck.com/request)
- [See a sample report](https://seorecheck.com/sample)
