Docket / For you / SaaS

Docket for SaaS companies

The story sold to SaaS marketers is that AI crawlers are being shut out of the web and you are probably shut out too. Measured, that is not what is happening: the Docket Index holds 20 SaaS sites and 0 of them block a crawler that feeds an answer engine. The failure that actually costs you a citation is not in robots.txt at all. The crawler is let in, it arrives, and the page is empty when it gets there.

The blocking story, measured

On 2026-08-06 we read robots.txt for 20 SaaS hosts as part of the Index. All 20 answered with a file our parser could read. Named so you can judge the sample: stripe.com, notion.so, figma.com, slack.com, zoom.us, hubspot.com, mailchimp.com, shopify.com, squarespace.com, wix.com, webflow.com, canva.com, airtable.com, asana.com, monday.com, intercom.com, zendesk.com, calendly.com, linear.app, vercel.com.

CrawlerWhat it feedsDisallowed by
OAI-SearchBotChatGPT's index 0 of 20
Claude-SearchBotClaude's index 0 of 20
PerplexityBotPerplexity's index 0 of 20
Google-ExtendedGemini grounding 1 of 20
GPTBotOpenAI training 2 of 20
ClaudeBotAnthropic training 1 of 20
CCBotCommon Crawl 3 of 20

6 of the 20 name an AI crawler at all, 18 declare a sitemap, and four publish Content-Signal preferences: intercom.com, monday.com, vercel.com, webflow.com. These are large companies with people whose job this is, so it is the easy case rather than a random sample of SaaS — a seed-stage site that inherited its robots.txt from a boilerplate repo is a different risk, and that is the site worth checking. But the pitch that everyone is pulling up the drawbridge, or that you are shut out by accident, did not survive contact with these 20.

The related failure is a rule aimed at a crawler retired years ago: 51.9% of the sites writing AI rules at all across the Tranco top 10,000 carry one, anthropic-ai alone sitting on 563 of them. Docket reads both in the same pass as everything else — one check, not a strategy.

What actually costs you the citation

Vercel measured the other half on its own network: none of the major AI crawlers render JavaScript. ChatGPT's crawler fetched JavaScript files in 11.50% of requests and Claude's in 23.84%, and neither executed them. Applebot and Gemini are the exceptions, because both sit on infrastructure that already renders. That is their measurement, read on 10 August 2026; we cannot reproduce it, and if crawler behaviour has moved since, the argument below moves with it.

What Docket shows you is your own side of that. It fetched notion.so twice, once as a crawler and once through WebKit: the served HTML held 0 characters of text and 0 links, the rendered page held 2,068 characters and 106 links — the full measurement is here. Notion is not a badly built site. It is a normally built one, and to a crawler that does not execute code it is a blank sheet.

So if your marketing site is a React or Next.js app without server rendering on every route: your robots.txt says yes and your framework says nothing. Docket reports how much of each page's text and links exist before hydration, which is the number to take to whoever owns the front end.

What a first audit surfaces on a SaaS site

A caveat, because the alternative is inventing a statistic: we have not audited a representative sample of SaaS sites and cannot tell you how often each of these fires. What follows is what the SaaS shape produces — a marketing site, a docs subdomain, a changelog and a pricing page — roughly in the order the ranking puts them.

#What turns upWhy it bites here
1Marketing copy absent from the served HTML Your homepage and feature pages read as blank to everything that does not render
2Navigation that only exists after hydration No links in the HTML means no discovery path, so everything below the nav goes undiscovered
3A pricing page with no structured data Plan names and prices drawn client-side are invisible twice over — to the crawler, and to any rich result
4Docs and marketing aimed at one query Two hosts, two titles, one intent. Google picks, and it is usually not the page with the trial button
5Orphaned feature pages Shipped for a launch, linked from one blog post, now at depth five or reachable from nothing
6Changelog and blog rot Dead outbound links, 404s from renamed features, and no machine-readable date on anything
7Near-duplicate comparison pages Forty pages off one template read as one page. Thinness is survivable; sameness is the part that gets a set flagged
8No entity definition Nothing in the markup says which company you are. Organization plus sameAs is the cheapest item on this list to fix

Each finding arrives with the change rather than the category — the JSON-LD block, the tag, the header — because a ranked plan you still have to translate into a ticket is not a plan. The CSV export drops into Linear or Jira without anyone retyping it.

Two hosts, one query

The most common structural problem on a SaaS site is not technical. It is that two teams wrote a page about the same thing. Marketing owns /pricing, docs owns docs.example.com/billing, and both answer "what does this cost". You do not get to choose which one a search engine shows.

Docket audits one host per crawl, so this is two runs and a comparison you make yourself. The duplicate check works inside a single crawl and not across two, and saying otherwise would describe a feature that does not exist. What you get is every title and description in one place per host, which is enough to see the collisions in a few minutes — and the docs run usually turns up auto-generated API pages nobody meant to index.

What this will not do

When Docket is the wrong tool for you

Four cases, and it is cheaper for both of us if you find yours here.

You need keyword research, backlink data or rank tracking. Those need an index of the whole web and Docket has none. Buy the subscription; this does not replace it.

You need a multi-seat dashboard. There is no server, no account and no shared workspace — audit history sits in ~/.docket/ as plain JSON on one Mac. That is the point when a founder is auditing their own site, and a genuine problem for a growth team of six who want one live view. Exports travel; state does not.

Your site is one static landing page. Running 96 checks across 13 areas against six pages is overkill, and a free single-page checker will tell you the same three things in thirty seconds.

You need rendered crawling at volume. A six-figure URL count with JavaScript execution on every page is Screaming Frog's territory and has been for years.

Why the price is a number rather than a plan

$199, once, from v1.0 — and activation is a licence key you paste in once. No seats, no crawl credits, no renewal date. You price a SaaS product yourself, so you know what a recurring line item does to a buying decision at a company that already has eleven of them.

The rest follows from running on your own machine: no upload, no telemetry, no account, and results that stay in ~/.docket/ as JSON you can read with cat. Save the site and scheduled re-audits report what changed, regressions first — which is how you learn a noindex reached production on Tuesday rather than from a traffic graph three weeks later. The schedule lives inside the app rather than in launchd, so it runs while Docket is open and picks up anything overdue the next time you launch it; if you need the crawl to happen whether or not anyone is at the machine, that is what a hosted crawler is for.

Download Docket

Common questions

Will Docket tell me if ChatGPT mentions my product?

No. Docket does not run prompts against any model, so it cannot see what an assistant told someone yesterday. It measures what decides whether you are eligible to be cited at all: whether AI crawlers are allowed in, whether your pages carry their content in the served HTML, and whether your entity markup makes it clear which company you are. Profound, Otterly and Peec track citations themselves.

Do AI crawlers read JavaScript-rendered pages?

Mostly not. Vercel measured this across its own network and found that none of the major AI crawlers render JavaScript: ChatGPT's crawler fetched JavaScript files in 11.50% of requests and Claude's in 23.84%, and neither executed them. Applebot and Gemini are the exceptions, because both run on infrastructure that already renders. If your marketing pages are client-rendered, the rest of them see whatever your server sent.

Can Docket audit my docs subdomain and my marketing site together?

Not in one crawl. Point it at each host separately and read the two title lists side by side, because the duplicate check works inside a single crawl rather than across two. That comparison takes a few minutes by hand, and describing it as automatic would mean describing a feature that does not exist.

Does Docket measure Core Web Vitals?

No. LCP, INP and CLS are field metrics that come from real users on real connections, and nothing running on one machine can produce them. Docket flags the markup and server patterns that cause bad vitals - render-blocking resources, layout-shift risk, page weight, slow server response - and you confirm the actual numbers in Search Console. It will read Chrome UX Report field data if you add your own Google API key, which is Google measuring rather than Docket measuring.

Is Docket really a one-time purchase?

Yes. $199 once from v1.0, and the current build is free while v1.1.71 is in beta. There are no seats, no crawl credits, no account and no telemetry, and audit history is stored on your Mac in ~/.docket/ as plain JSON.