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.
| Crawler | What it feeds | Disallowed by |
|---|---|---|
| OAI-SearchBot | ChatGPT's index | 0 of 20 |
| Claude-SearchBot | Claude's index | 0 of 20 |
| PerplexityBot | Perplexity's index | 0 of 20 |
| Google-Extended | Gemini grounding | 1 of 20 |
| GPTBot | OpenAI training | 2 of 20 |
| ClaudeBot | Anthropic training | 1 of 20 |
| CCBot | Common 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 up | Why it bites here |
|---|---|---|
| 1 | Marketing copy absent from the served HTML | Your homepage and feature pages read as blank to everything that does not render |
| 2 | Navigation that only exists after hydration | No links in the HTML means no discovery path, so everything below the nav goes undiscovered |
| 3 | A 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 |
| 4 | Docs 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 |
| 5 | Orphaned feature pages | Shipped for a launch, linked from one blog post, now at depth five or reachable from nothing |
| 6 | Changelog and blog rot | Dead outbound links, 404s from renamed features, and no machine-readable date on anything |
| 7 | Near-duplicate comparison pages | Forty pages off one template read as one page. Thinness is survivable; sameness is the part that gets a set flagged |
| 8 | No 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
- No search volumes, no backlinks, no rank tracking. There is no index behind Docket and there will not be one.
- It does not measure Core Web Vitals. LCP, INP and CLS are field metrics from real users on real connections, and one machine on a fast desk cannot produce them. Docket flags the patterns that cause them — render-blocking resources, layout-shift risk, page weight, slow server response — and you confirm the numbers in Search Console. With your own Google API key it will read Chrome UX Report data, which is Google measuring, not us.
- It does not see behind your login. The product is not audited. The marketing site, docs, blog and pricing page are.
- It does not run prompts against models, so it cannot tell you whether ChatGPT named you this morning. Profound, Otterly and Peec do that.
- Rendering is a sample — ten of the shallowest pages by default, which answers "is this client-rendered and what is it costing me" without turning a five-minute audit into an hour. It is not a full rendered crawl of a large application.
- It is macOS on Apple Silicon. No Windows, no Linux desktop, no web version. The CLI inside the bundle runs on macOS CI runners.
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.
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.