Technical SEO for SaaS Companies: The Crawl, Render, and Indexation Problems That Kill Signups
Technical SEO for SaaS companies is harder than for almost any other type of site, because the product runs on JavaScript, large portions sit behind a login, and the marketing site and app share signals a generic checklist will never catch.

Technical SEO for SaaS is harder than for most other sites. The product runs on JavaScript. Big parts of it sit behind a login. Pricing pages pull from live data. The marketing site and the app may share a domain, or they may not. Each fact brings its own kind of problem. A generic tech SEO checklist will not catch them.
This guide covers the deep issues that keep SaaS sites from ranking. It shows how to find them, and what a good tech audit should cover.
Why SaaS Sites Have Unique Technical SEO Challenges
Most sites show the same content to every visitor. A SaaS product does not work that way. It has marketing pages, login gates, live dashboards, and tables that compare features. It also has content made by users. On top of that, a subdomain or subfolder runs a whole separate app.
Each of those layers brings its own SEO problem.
JavaScript rendering: SaaS marketing sites often run on React, Vue, or Angular. Google can render JavaScript, but it does so on a delay. Googlebot crawls a page, then puts it in a queue. Working through that queue may take days. In that window, no one sees your content. The delay matters when you launch new feature pages or change pricing.
Login walls: say Googlebot crawls a page and hits a login redirect. That page is then left out of the index. Many SaaS teams block good marketing content behind a login by mistake. It happens when middleware rules are too broad. It also happens when canonical tags point to logged-in versions of pages.
Thin dynamic pages: some pricing pages pull live plan data through an API. Before JavaScript runs, they often render as near-empty HTML. If that version shows only a spinner or a loading skeleton, Google indexes a thin page with no content.
App subdomain vs. marketing site structure: run the app on app.yourdomain.com and you split domain authority. Run it on yourdomain.com/app and you risk two things. You waste crawl budget, and you get indexation bleed. Neither one is right by default. Both need care to set up.
How to Structure a SaaS Site for Maximum Crawlability
For most SaaS firms, this debate has a clear answer. Put the marketing site at yourdomain.com or yourdomain.com/. Put the app at app.yourdomain.com.
Here is why that structure works.
The marketing site earns backlinks, brings in organic traffic, and builds domain authority. The app sits behind a login, so it should not be indexed at all. Split them across subdomains and you can block the app in robots.txt. The marketing site stays open to crawlers.
Run the app on a subfolder and you need exact robots.txt rules or noindex tags. Without them, the app eats your crawl budget. That gets harder to keep up as the app grows. Engineers add new routes, and SEO is not on their checklist.
The structure we suggest:
- yourdomain.com plus yourdomain.com/blog, /pricing, /features, /customers for marketing
- app.yourdomain.com for the product. Add Disallow: / in app.yourdomain.com/robots.txt
- Canonical tags on each marketing page. Point each one at the right canonical URL
- A clean XML sitemap. It should list only marketing pages you want indexed
What Is JavaScript SEO and Why Does It Break SaaS Rankings?
JavaScript SEO means one thing. You make sure crawlers can reach and index content that needs JavaScript to render.
Google uses Chromium to render JavaScript, but that work sits in a queue. Google's own docs say the delay between the first crawl and full rendering can run from days to weeks. Lean on client-side rendering and this is what you get:
- New pages take longer to show up in search results
- Content changes take longer to show up in rankings
- Pages with render errors may be indexed with missing content for good
Common JavaScript SEO problems on SaaS sites:
- Pricing tables drawn only by a JavaScript framework, with no backup from the server
- Pages that compare features but load their data late, after the page loads
- Meta titles and meta descriptions set by a JavaScript router. The server never sets them at all
- Structured data added to the DOM by JavaScript, not placed in the first HTML response
- Internal links built with JavaScript click handlers, not plain a-href elements. Googlebot will not follow them
The fix: use server-side rendering (SSR) or static site generation (SSG) on all marketing pages. Next.js and Nuxt.js make this simple. On sites you already run, a prerendering service can serve cached static HTML to bots. Users still get the full JavaScript version.
How Faceted Navigation and User-Generated Content Waste Crawl Budget
Large SaaS sites make huge numbers of URLs. That is common with feature comparison pages, integration lists, or forums. Most of those URLs hold the same content, or close to it.
Faceted navigation example: a page that compares features may let people filter by industry, team size, and use case. That can make thousands of URLs. If Google can crawl all of them, Googlebot burns its whole crawl budget on low-value filters. Your core product and pricing pages get skipped.
User-generated content example: some SaaS firms run public forums, template stores, or review pages. Those can make millions of pages. You need a plan for what gets indexed. Without one, thin or repeat pages water down the quality signals of your site.
How to manage crawl budget on large SaaS sites:
- Use the parameter handling tool in Google Search Console. It tells Google how to treat your filter parameters
- Add noindex to filter combos that do not hold content of their own
- Use canonical tags. They fold repeat or near-repeat pages into the one version you like best
- Block low-value URL patterns in robots.txt, with care. That stops crawling, but it does not stop indexing of pages Google already knows
- Watch crawl budget use in Google Search Console, under Crawl stats
Schema Markup for SaaS Companies
Schema markup helps search engines grasp what your content is. For SaaS firms, three schema types are worth the most.
SoftwareApplication schema goes on your product listing pages. It can show up in rich results. It supports applicationCategory, operatingSystem, offers (for pricing), and aggregateRating. Say your product has 4.7 stars on G2. This schema can show that rating right in search results.
FAQPage schema works on your pricing and feature pages. It can grow your search result. Questions and answers show up right in the SERP. That helps you win featured snippets on high-intent queries. Think of ones like does this SaaS product integrate with Salesforce or how much does this SaaS product cost.
Product schema fits when pricing is the heart of the page. It lets Google show price, stock, and offer details right in results.
Implementation note: all three schema types should sit in the first HTML response. Do not inject them with JavaScript. Use JSON-LD inside a script type application/ld+json tag in the head.
What a Technical SEO Audit for SaaS Should Cover
A technical SEO audit for a SaaS firm has to go past a standard crawl. It should cover:
- Rendering audit: crawl the site with a crawler that renders JavaScript. Screaming Frog with JavaScript rendering on works. So does Botify. Compare the rendered HTML to the raw HTML. Flag any content that shows up only in the rendered version.
- Login audit: find each page that sends logged-in users somewhere else. Make sure no marketing pages you want indexed sit behind a login redirect.
- Crawl budget audit: pull crawl stats from Google Search Console. Find the most crawled URLs. Then judge if they are high-value content or crawl budget waste.
- Indexation audit: count the pages in your XML sitemap. Compare that to the number indexed in Google Search Console. Then look into the gap.
- Internal linking audit: check that your core marketing pages get internal links from strong pages. That means pricing, features, and integrations. SaaS sites often have great blog posts that never link to the product pages they should support.
- Schema audit: check that SoftwareApplication, FAQPage, and Product schema sit on the right pages. Make sure each one is valid and shows up in the first HTML.
- Core Web Vitals audit: measure LCP, CLS, and INP on key landing pages. SaaS sites with heavy JavaScript bundles often fail LCP thresholds.
- Subdomain audit: check that app.yourdomain.com is blocked in robots.txt. Then check the links from your marketing site. None of them should pass authority to the app for no reason.
Frequently Asked Questions
Q: Should a SaaS company use server-side rendering or static site generation for its marketing site?
A: Static site generation (SSG) is the better pick for most SaaS marketing sites. Pages that rarely change can be pre-built as static HTML. That covers feature pages, pricing pages, and blog posts. Googlebot then gets the full content on the first crawl, with no render delay. SSR fits pages with personal or often-changed content. Next.js supports both, page by page, so SaaS teams stay flexible.
Q: Can Google index content that requires a login?
A: No. Say a page sends a visitor to a login screen when they have no account. Googlebot then cannot crawl or index it. Some SaaS teams block marketing pages by mistake when they apply login middleware too broadly. Check your middleware setup so only true product pages need a login. Marketing pages should stay public, even when they cover paid features.
Q: How do SaaS companies handle pricing pages with dynamic content for SEO?
A: The pricing page is one of the most valuable pages on a SaaS site. If pricing data loads later through an API, Googlebot may index a thin or empty version. The fix is to render the pricing page server-side. Put the pricing data in the first HTML response. If prices change often, use ISR (Incremental Static Regeneration) in Next.js. It rebuilds the page on a schedule, with no full deploy.
Ready to fix the tech issues that block your SaaS signups? Get a full technical SEO audit and growth plan at ttgcreatives.com/growth-assessment
Sources
- Google Search Central, Understand the JavaScript SEO basics - developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics
- Google Search Central, Crawl budget management for SaaS - developers.google.com/search/docs/crawling-indexing/large-site-managing-crawl-budget
- Google Search Central, SoftwareApplication structured data - developers.google.com/search/docs/appearance/structured-data/software-app
- Screaming Frog, JavaScript SEO crawling guide - screamingfrog.co.uk/javascript-seo-guide/
- Google Search Console Help, Crawl stats report - support.google.com/webmasters/answer/9679690








