# HubSpot: -41 point Door Gap
- Site: hubspot.com
- Scanned: 2026-09-03
- Scan type: Deep scan
- Business type: b2b_saas
- Report: https://www.seconddoor.io/r/hubspot-b3ms3q
- Scanner version: 9
HubSpot's pricing renders only after JavaScript runs and its signup CTA points to a robots-blocked subdomain, so an agent can read about the product but cannot price or buy it.
## Scores
| Measure | Score |
| --- | --- |
| Humans | 0/100 |
| Agents | 41/100 |
| Composite | 21/100 |
| Door Gap | -41 points |
The human score is the mean of the four human dimensions, the agent score the mean of the six agent dimensions, and the Door Gap the difference between them.
## What the machine actually did
The agent got through 11 of 17 requests, but could not find a published agent interface. It came up empty on 5 other checks too. That is enough missing for a machine to give up before it reaches a purchase.
- ok      reach the site at all
- ok      find out whether machines are welcome
- ok      ask whether the door opens for requests carrying the AI crawlers' names
- ok      read the site's own guide for language models
- ok      find out what pages exist
- ok      find a contact route for machines
- missing find a published agent interface
- missing find an agent plugin manifest
- missing find out whether verified agents are recognised
- ok      read the homepage as data rather than as a page
- missing find a machine readable API spec
- ok      read the developer documentation
- missing read the prices without running JavaScript
- ok      find a comparison page worth citing
- ok      walk the way a visitor would, to a signup form or a product
- missing check if free account signup is self-serve
- ok      check if API key/private app can be obtained self-serve without sales
## What a visitor meets
1. **Landing page** (friction). Headline is vague marketing language: "Where go-to-market teams go to close." Takes a moment to figure out this is CRM/marketing/sales software. Two clear CTAs though: "Get a demo" and "Get started free". A chat widget pops up immediately offering to help, adding visual noise.
2. **Pricing page** (friction). Prices only render after JavaScript executes. Once rendered: Free $0, Starter $7/mo/seat, Professional $800/mo, Enterprise $3,600/mo. Professional and Enterprise hide a mandatory one-time onboarding fee ($3,000 and $7,000) in small print, and both require "Talk to Sales" instead of self-serve checkout.
3. **Attempting to reach signup form** (blocked). Every "Get started free" and "Get started" link points to app.hubspot.com/signup-hubspot/crm. That subdomain's robots.txt disallows automated access entirely, so an agent-based evaluator cannot even view the signup form, let alone get an API key or account without a human passing through a browser session manually.
4. **Developer API documentation** (friction). API reference is organized, with clear endpoint patterns like GET /crm/objects/2026-03/contacts. Sign up link points to the same robots-blocked signup path. Page text contains an embedded instruction to fetch /docs/llms.txt "before exploring further," an odd directive inside content.
## Top issues
1. **Pricing figures exist only after JavaScript renders, so a client reading raw HTML sees zero prices.** (pricing_legibility)
2. **No MCP manifest or OpenAPI specification exists at any standard path, leaving agents to hand-code a client from prose.** (agent_aware_instrumentation)
3. **A developer documentation page contains an embedded instruction directing readers to fetch a specific file before continuing.** (machine_fetchable_trust)
The evidence and the recommended fix for each are on the report page: https://www.seconddoor.io/r/hubspot-b3ms3q
## Files generated from this scan
- **Prices in the HTML, not only after JavaScript** at `pricing page`, 1 hour, developer. Verify: The next scan reads the prices in the raw HTML of the pricing page, with none needing JavaScript to appear.
- **Pricing as Offer structured data** at `pricing page`, 20 minutes, developer. Verify: The next scan reads Offer structured data with a price and currency on the pricing page, and the pricing check credits it.
- **robots.txt rules for AI crawlers** at `/robots.txt`, 10 minutes, no developer needed. Verify: The next scan reads robots.txt and finds every search and agent crawler allowed, none of them kept off product or pricing paths.
- **Machine interfaces: where you stand** at `notes`, 10 minutes, no developer needed. Verify: The next scan finds the interface you published answering at its well-known path, and that check passes.
- **pricing.md** at `/pricing.md`, 20 minutes, no developer needed. Verify: The next scan fetches /pricing.md as text and records pricing as machine readable.
Each file is written from what this scan found on the site. The content is in the JSON once the evidence is opened: https://www.seconddoor.io/api/reports/hubspot-b3ms3q
## The agent door
- **machine_discoverability** 89/100. Robots.txt carries 358 directives and allows every named AI crawler including GPTBot, ClaudeBot and PerplexityBot. Sitemap lists 1098 URLs, llms.txt has 293 lines, homepage carries 9 schema.org types, but pricing only appears after.
- **programmatic_onboarding** 26/100. A free account can be created, but developer docs describe minting an API key by clicking through the dashboard by hand, with no self-serve key endpoint or OpenAPI spec, and the signup CTA itself points to a robots-blocked subdomain.
- **pricing_legibility** 30/100. The pricing page returns 0 prices in raw HTML; all 16 prices from $0 to $3,600 only appear once JavaScript renders. Any client that does not run JS, human or agent, sees no price at all.
- **agent_aware_instrumentation** 8/100. No MCP manifest.
- **machine_fetchable_trust** 85/100. security.txt is published with a machine contact route and the homepage answers automated requests directly. A developer docs page also embeds an unusual instruction telling readers to fetch a specific file before continuing, which is.
- **commercial_rails** 10/100. Rendered prices exist from $0 to $3,600 across tiers, but none sit in raw HTML, and Professional and Enterprise route to 'Talk to Sales' with onboarding fees of $3,000 and $7,000 disclosed only in small print.
## The human door
- **steps_to_first_value** null/100. Could not verify: this scan did not reach the pages that would show it.
- **required_fields** null/100. Could not verify: this scan did not reach the pages that would show it.
- **verification_walls** null/100. Could not verify: this scan did not reach the pages that would show it.
- **error_recovery** null/100. Could not verify: this scan did not reach the pages that would show it.
---
Scored by SecondDoor. Method: https://www.seconddoor.io/methodology
Scan another site: https://www.seconddoor.io
Rate an issue or this report: POST https://www.seconddoor.io/api/feedback, or the rate_fix tool on https://www.seconddoor.io/api/mcp
