Skip to content
SEO & Growth

7 Technical SEO Steps for SaaS 2026 (Free Template)

Sep 7, 2026

Technical SEO for a B2B SaaS startup is the crawl, render, and index work that keeps docs, comparison pages, changelog URLs, and the marketing site eligible to rank after every product ship. It is not a PLG onboarding flow, it is not a paid-search experiment, and it is not a G2 review drive. Screaming Frog, Sitebulb, Oncrawl, Lumar, Botify, JetOctopus, and ContentKing are the seven crawlers in this shortlist. US Tech Automations sits above them as the ticket layer that blocks a docs deploy when rendered HTML, canonical, and coverage state have not all passed.

TL;DR: Buy Screaming Frog at £199/year if a founder or the first SEO can crawl after each release. Buy Sitebulb if you need hint-based reports for a CEO who will not open a CSV. Buy JetOctopus or Lumar when the docs site is JS-heavy and you need scheduled cloud crawls. Buy Oncrawl or Botify when logs prove Googlebot never reaches /docs/ after a Next.js migration. Buy ContentKing when preview deploys rewrite titles. Do not treat a Lighthouse score as an indexability proof.

Who this is for: founding marketers, the first SEO hire, and agencies who inherit a Next.js marketing site plus a Docusaurus or Mintlify docs host and a weekly ship cadence that currently has no crawl owner.

Red flags: Skip cloud crawlers if the marketing site is 30 static URLs you can click. Skip Botify if you cannot get CDN logs. Skip always-on monitoring if deploys are frozen and nobody will acknowledge an alert during a launch week.

Category decision

SaaS technical SEO fails at the framework, not at the blog. Next.js, Docusaurus, and client-rendered comparison tables often ship empty raw HTML. The crawler you buy is the one that can render, extract, and ticket that emptiness before sales starts sending the URL. A suite Site Audit (Semrush $139/mo monthly SEO plan, Ahrefs Lite $129/mo) is a backup path if you already pay for it; it is not automatically better at JS than a specialist spider.

BEST_OF earn rate: 15.2% according to US Tech Automations (2026), on 12,514 live pages counted 2026-08-24. '7 Best' earn rate: 25.5% according to the Phase 1 12,514-page count (2026), versus 14.0% for "5 Best." Google Search Central's ecommerce specialty docs still apply when you treat plans and add-ons as a catalog: share product data, add relevant structured data, and keep URLs crawlable so Google can parse the set.

Programmatic landing scale is a sibling job in programmatic SEO for B2B SaaS startups. Answer-engine work sits in generative engine optimization for B2B SaaS startups. Suite-vs-grader buying is in Semrush vs Surfer SEO for SaaS companies.

Key Takeaways

  • SaaS technical SEO is rendered docs + comparison URLs + changelog, not a keyword list for the homepage.

  • Screaming Frog's public paid licence is £199/year; free cap is 500 URLs (checked 2026-09-07).

  • Cloud crawlers here mostly require a quote; write "contact vendor" into the TCO table.

  • Empty raw HTML on a Next.js comparison page is a render ticket, not a content brief.

  • Zapier can move GSC exports; it cannot be the canonical source of robots.txt unless you design that.

Glossary

  • Raw vs rendered HTML: What the server sent versus what Chromium built. Docs sites often hide the article in the second.

  • Soft 404: A 200 that is actually an empty app shell. Crawlers that do not render will call it healthy.

  • Coverage state: Search Console's reason a URL is in or out. Read it on /docs/ after every release.

  • Changelog index bloat: Daily release notes that steal crawl from evergeen comparison URLs.

  • Preview URL leak: *.vercel.app or similar getting indexed. Block it in robots and Search Console.

  • Canonical across www/app: Marketing host versus app host. Signup URLs should not canonical to docs or the reverse.

  • Structured data for SoftwareApplication: Optional. Invalid JSON-LD is a parse error, not a ranking boost.

  • Crawl comparison: Diff two crawls after a release. That is the SaaS-native audit cadence.

Weighted criteria

CriterionWeightRationalePass bar
JS rendering fidelity25%Docs frameworks hide copyArticle text in rendered crawl
Release-cadence scheduling15%Ships happen weeklyCrawl after each production deploy
Soft-404 detection15%App shells look like 200sWord count + title sanity
Preview/staging isolation10%Indexing *.vercel.appDisallow + noindex proven
Public licence15%Seed-stage financeDated price or contact vendor
Log-file option10%Prove Googlebot hits /docs/Logs joinable to sitemap
Ticket export10%Engineering will not read PDFURL + issue CSV

Feature matrix

CapabilityScreaming FrogSitebulbOncrawlLumarBotifyJetOctopusContentKing
Public list (2026-09-07)£199/yearContact vendorContact vendorContact vendorContact vendorContact vendorContact vendor
Free cap500 URLsContact vendorContact vendorContact vendorContact vendorContact vendorContact vendor
JS renderPaidPaidYesYesYesYesMonitor
Crawl comparisonPaidYesYesYesYesYesChange log
LogsSeparate productLimitedYesYesYesYesNo
CI/staging mapURL mappingYesYesYesYesYesWatch both
CLI / schedulePaidYesYesYesYesYesAlways-on
Best SaaS jobPost-release auditExec reportLog proofQA gateCrawl budgetCloud JSTitle drift

Paid spider licence: £199/year according to Screaming Frog (2026). Free crawl cap: 500 URLs according to Screaming Frog SEO Spider (2026). SEO plan list: $139/mo according to Semrush (2026). Lite list: $129/mo according to Ahrefs (2026), with 100,000 crawl credits on Lite.

Pricing

VendorPublic list (2026-09-07)12-month TCOQuote?Notes
Screaming Frog paid£199/year£199NoRAM-bound
Screaming Frog free$0$0No500 URLs
SitebulbContact vendorContact vendorYesHints
OncrawlContact vendorContact vendorYesLogs
LumarContact vendorContact vendorYesQA
BotifyContact vendorContact vendorYesBudget
JetOctopusContact vendorContact vendorYesCloud JS
ContentKingContact vendorContact vendorYesAlways-on
Ahrefs Lite$129/mo$1,548NoSuite path
Semrush SEO$139/mo monthly$1,668No$117.33/mo annual

Vendor profiles

Screaming Frog

Best fit: A seed or Series A team that can run a crawl after each production ship. Limitations: Free cap 500 URLs; JS is paid. Implementation: CLI schedule on a jump box; crawl comparison against last week's .seospider. Store the file in the same repo as docs so the SHA in the free template matches the crawl. Primary evidence: Screaming Frog. Who should not buy: Orgs that need multi-seat cloud with SSO on day one. A 16 GB box is the real dependency, not the licence.

Sitebulb

Best fit: Founder-readable audits before a board deck. Limitations: Contact vendor. Implementation: Hint reports on thin comparison pages and redirect chains from the old Webflow host. Primary evidence: Sitebulb. Who should not buy: Teams that only want CLI CSV.

Oncrawl

Best fit: After a framework migration when you must prove Googlebot still hits docs. Limitations: Contact vendor; needs logs. Implementation: Join logs to /docs/ sitemap; fail if hits drop for 7 days post-ship. Primary evidence: Oncrawl. Who should not buy: Marketing sites with no log pipeline.

Lumar

Best fit: A QA gate in CI before docs merge. Limitations: Contact vendor. Implementation: Extract H1 from rendered HTML; block merge when extract empty. Wire the fail to the same check that blocks a broken TypeScript build so SEO is not a separate "nice to have" lane. Primary evidence: Lumar. Who should not buy: A 20-URL brochure with no CI.

Botify

Best fit: Large docs + blog + changelog URL spaces. Limitations: Contact vendor. Implementation: Budget alarm when changelog pagination outranks /compare/. Primary evidence: Botify. Who should not buy: Pre-product marketing sites.

JetOctopus

Best fit: Cloud JS crawls without Botify procurement time. Limitations: Contact vendor. Implementation: Crawl production after Vercel promote; ticket soft 404s. Primary evidence: JetOctopus. Who should not buy: Teams already on Lumar in CI.

ContentKing

Best fit: Always-on when preview deploys rewrite titles. Limitations: Contact vendor; confirm Conductor SKU. Implementation: Alert on canonical change on /docs/ and /compare/. Page a human, not a private channel that nobody watches during a launch. Primary evidence: ContentKing. Who should not buy: Teams that mute alerts or ship from laptops with no staging host.

Free template: the post-ship crawl sheet

Copy this as a Sheet with one row per ship. Columns: ship time, git SHA, sitemap URL count, crawl URL count, raw-HTML median word count on /docs/, rendered median word count on /docs/, comparison pages under 80 rendered words, preview host URLs found, Search Console coverage samples (5), tickets opened, tickets closed, human reviewer.

Fill the sheet in 20 minutes. If sitemap count and crawl count diverge by more than a handful of URLs, you have robots, auth, or JS discovery problems. If raw word count on docs is near zero while rendered is high, you are betting the entire index on rendering — say that out loud to engineering. If preview host URLs appear, treat it as a leak.

This template is the "free" object in the title. It does not replace Frog. It makes Frog's export a ritual instead of a hero crawl the intern ran once in March.

Engineering will ask why this is not a unit test. Some of it can be: a smoke test that /docs/getting-started returns 200 and contains a known string in raw HTML. That test does not replace a full crawl of 80 docs and 12 compare URLs, and it will not see a canonical that flipped on /compare/ahrefs/. Keep both.

Worked SaaS crawl

A 22-person B2B SaaS with 80 docs URLs, 12 competitor comparison pages, and a $99/month starter plan ships a Next.js docs refactor on Thursday. Stripe still records 36 checkout.session.completed events that week, but Search Console shows 14 docs URLs with inspectionResult.indexStatusResult.coverageState = Crawled - currently not indexed and a rendered Frog crawl (paid licence, 55 minutes, 210 URLs) finds 9 comparison pages with under 40 words of raw HTML. The ticket stays open until the 9 pages carry article text in raw or reliably rendered HTML, the 14 coverage states move, and a human SEO signs that no *.vercel.app URL entered the index. US Tech Automations would take the crawl CSV and the Inspection payload as inputs, open one ticket per docs path, retry failed inspections, and stop for human review before anyone treats URL Inspection as a deploy step.

Zapier versus a ticketed workflow

The real alternative is stitching GSC exports, Vercel deploy hooks, and Slack in Zapier, Make, or n8n. Those tools can store run histories, retries, error branches, and audit evidence when you configure them. You still own observability, idempotency, escalation, access controls, retention, and maintenance. A proposed ticketed design would key on the docs path, collapse duplicates from two deploys in one hour, and require a human SEO to close the ticket. Prerequisites: a production host that is not the preview host, a named reviewer, and a rule that changelog URLs do not page anyone at 2 a.m.

When NOT to use US Tech Automations: If the founder already runs a 500-URL free crawl and the docs site is 40 URLs of static Markdown, stay there. If Lumar is already a required CI check and engineering honors the fail, do not add a parallel queue. If n8n already posts GSC coverage diffs to Slack and a human triages them every ship, staff that triage.

The 7-step template: inventory docs + compare + changelog sitemaps; crawl with JS; export raw vs rendered word counts; inspect 5 URLs; block preview hosts; crawl-compare to last release; open tickets only on money URLs. Print it. Do not add an eighth tool until those seven steps have owners.

Sales will paste comparison URLs into threads regardless of index state. Make the ticket visible in the same channel as "we just shipped the Ahrefs page." If the page is a soft 404, sales should stop sending it for 48 hours. That is an operational rule, not an SEO opinion. A crawler that cannot export a URL list into that channel is the wrong crawler for a 22-person company.

Do not confuse Core Web Vitals with indexability. A fast empty app shell still fails the rendered-word-count column. A slow but complete Markdown page can rank. Fix empty first, then speed. If the performance budget and the SEO ticket fight, ship the text in HTML and optimize the JS after the coverage state moves. A comparison page that sales cannot send is more expensive than a 200ms regression.

See the ticket layer on pricing. Other workflow pages sit on the company homepage. Do not start a trial you will not crawl.

Questions

Which technical SEO platforms should a SaaS startup buy first?

Screaming Frog paid if someone can run it after each ship. Add a cloud crawler when JS or logs exceed a laptop. Keep Search Console regardless.

Is Ahrefs Site Audit enough instead of Screaming Frog?

Ahrefs Lite at $129/mo includes 100,000 crawl credits and is enough if you already pay for it and JS rendering on docs is proven. It is not automatically a better renderer than Frog.

How do we stop preview URLs from indexing?

Noindex and robots disallow the preview host, verify in a crawl, and use Search Console removals if any leaked. Treat a leak as an incident, not a blog task.

Should changelogs be indexed?

Index a canonical changelog hub. Paginated daily notes should not outrank /compare/ in crawl budget. Prove it with logs or a crawl-directory report.

Can we put Lumar in CI?

Yes if the quote includes the environment you actually deploy. The fail must block merge, not just email a Slack channel nobody owns.

When is Botify worth it at startup stage?

When URL count and log proof exceed what Frog plus Search Console can show. Most seed teams should not start there.

About the Author

Garrett Mullins
Garrett Mullins
Workflow Specialist

Helping businesses leverage automation for operational efficiency.