7 Technical SEO Steps for SaaS 2026 (Free Template)
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.appor 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
| Criterion | Weight | Rationale | Pass bar |
|---|---|---|---|
| JS rendering fidelity | 25% | Docs frameworks hide copy | Article text in rendered crawl |
| Release-cadence scheduling | 15% | Ships happen weekly | Crawl after each production deploy |
| Soft-404 detection | 15% | App shells look like 200s | Word count + title sanity |
| Preview/staging isolation | 10% | Indexing *.vercel.app | Disallow + noindex proven |
| Public licence | 15% | Seed-stage finance | Dated price or contact vendor |
| Log-file option | 10% | Prove Googlebot hits /docs/ | Logs joinable to sitemap |
| Ticket export | 10% | Engineering will not read PDF | URL + issue CSV |
Feature matrix
| Capability | Screaming Frog | Sitebulb | Oncrawl | Lumar | Botify | JetOctopus | ContentKing |
|---|---|---|---|---|---|---|---|
| Public list (2026-09-07) | £199/year | Contact vendor | Contact vendor | Contact vendor | Contact vendor | Contact vendor | Contact vendor |
| Free cap | 500 URLs | Contact vendor | Contact vendor | Contact vendor | Contact vendor | Contact vendor | Contact vendor |
| JS render | Paid | Paid | Yes | Yes | Yes | Yes | Monitor |
| Crawl comparison | Paid | Yes | Yes | Yes | Yes | Yes | Change log |
| Logs | Separate product | Limited | Yes | Yes | Yes | Yes | No |
| CI/staging map | URL mapping | Yes | Yes | Yes | Yes | Yes | Watch both |
| CLI / schedule | Paid | Yes | Yes | Yes | Yes | Yes | Always-on |
| Best SaaS job | Post-release audit | Exec report | Log proof | QA gate | Crawl budget | Cloud JS | Title 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
| Vendor | Public list (2026-09-07) | 12-month TCO | Quote? | Notes |
|---|---|---|---|---|
| Screaming Frog paid | £199/year | £199 | No | RAM-bound |
| Screaming Frog free | $0 | $0 | No | 500 URLs |
| Sitebulb | Contact vendor | Contact vendor | Yes | Hints |
| Oncrawl | Contact vendor | Contact vendor | Yes | Logs |
| Lumar | Contact vendor | Contact vendor | Yes | QA |
| Botify | Contact vendor | Contact vendor | Yes | Budget |
| JetOctopus | Contact vendor | Contact vendor | Yes | Cloud JS |
| ContentKing | Contact vendor | Contact vendor | Yes | Always-on |
| Ahrefs Lite | $129/mo | $1,548 | No | Suite path |
| Semrush SEO | $139/mo monthly | $1,668 | No | $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

Helping businesses leverage automation for operational efficiency.