SaaS Technical SEO
SaaS technical SEO is not about making every page perfect. It is about making sure your commercial pages are the ones search engines find and render correctly.
Start here
- Identify your top 10 commercial pages and verify they are in the index using Google Search Console.
- Block login, admin, and staging areas in robots.txt to prevent wasted crawl budget.
- Set canonical tags on all parameterised, filtered, or paginated URLs to consolidate duplicate content.
- Ensure critical content is present in the initial HTML, not loaded via JavaScript after render.
- Update your XML sitemap whenever you add or remove a priority page.
Plain-English take
SaaS technical SEO is not about making every page perfect. It is about making sure your commercial pages — pricing, features, comparisons, integrations — are the ones search engines find and render correctly. Everything else is secondary. I have seen too many teams optimise every blog post while their pricing page loads critical content via JavaScript after the page has rendered. That is a strategic error. The technical SEO work I do on SaaS sites starts with a clear list of priority URLs. I then work backwards: can Googlebot find these URLs? Can it render the content? Are there duplicate versions? Is the page loading fast enough? I use [robots.txt](/robots-txt/) to block non-indexable areas such as login pages, admin areas, and staging environments. I keep [XML sitemaps](/sitemap/) lean — only the URLs that belong in the index. I set [canonical tags](/canonical-tag/) on every URL that could be duplicated by filters, pagination, or session IDs. And I check that the critical content is visible without JavaScript. That last point is where most SaaS sites lose me. I also prioritise structured data for product pages, but only if the schema is correct. Many SaaS sites use 'Product' schema on comparison pages that are not actual products. I avoid that.
When it actually matters
It matters from the moment you have more than one page that competes for the same keyword. For a SaaS with 200 features pages, 30 pricing plans, and 50 integration pages, the technical setup decides which ones get indexed. I once worked on a site with 4,000 landing pages generated by a template. The template added a query parameter for every A/B test variant. Without canonical tags, the search engine saw 12,000 URLs for the same page. The result was a thin index and no ranking for the top pages. That is when it matters. Also, any SaaS that relies on content marketing — documentation, blog posts, case studies — needs technical SEO to funnel authority from those pages to the commercial ones. Internal linking and site hierarchy are not optional. And if you are running a [programmatic SEO](/programmatic-seo/) campaign, you cannot afford to ignore indexability of each generated page. The [technical SEO](/technical-seo/) audit should catch these issues before you scale. I check [JavaScript SEO](/javascript-seo/) for any dynamic content that is critical for indexing. For example, a feature comparison table that is loaded via React might not be visible to the crawler. I use the URL Inspection Tool to verify. I also check that the site structure supports the commercial pages. If the pricing page is buried three clicks from the homepage, it will not get the authority it needs. I use internal linking to connect high-traffic blog posts to the pricing page.
What I got wrong
I used to think that as long as the page had a title tag and a meta description, it was fine. I was wrong about JavaScript rendering. I assumed that because Google could render JavaScript, I did not need to worry about the order of content loading. I had a client whose pricing page loaded the prices via an API call after the initial render. The core content — the prices — was not in the initial HTML. Googlebot waited for rendering, but not all crawlers do. That page lost rankings because the content was not discoverable in the first wave. I also got canonical tags wrong. I used to set them on every page, even when the page was the original. That is unnecessary. I now use them only when there is a genuine duplicate. For example, on a site with versioned documentation, I set the canonical on the latest version URL and let the older versions be deindexed. And I admit I ignored the importance of [Core Web Vitals](/core-web-vitals/) for a long time. I thought it was a ranking factor that only mattered for high-volume queries. But I saw a 10% drop in organic traffic after a Core Web Vitals update. Now I prioritise LCP and CLS for every commercial page. I also learned that sitemap submission is not a one-time thing. I update the sitemap every time a new page is added or removed.
Next step
Quick answers
Do I need to index every blog post on my SaaS site?
No. You should only index blog posts that target keywords with search volume. Use robots.txt to block low-value tags and category pages. Focus on indexing the posts that drive traffic and conversions.
Should I use a subdomain for my SaaS product?
Generally, no. Use a subdomain only if you have a strong technical reason, such as different server architecture. Otherwise, keep the product on the same domain as the marketing site to consolidate authority.
Is Core Web Vitals a ranking factor for SaaS sites?
Yes, but it is one of many. I prioritise Core Web Vitals for commercial pages because they often have the highest traffic. A slow LCP can hurt rankings more than a missing meta description.
Sources
Primary documentation is linked directly. Anything commercial is marked nofollow.
- Google Search Central: SEO Starter Guide — Foundational guidance on making pages discoverable and understandable.
- Google Search Central: JavaScript SEO — Important for SaaS sites with app-like or JS-heavy templates.
- Google Search Central: Sitemaps — Official guidance on creating and submitting XML sitemaps.
- Google Search Central: Robots.txt — Official reference for crawl control and blocking non-public areas.
Notes from Callum Bennett.