# HubSpot: 40 point Door Gap
- Site: hubspot.com
- Scanned: 2026-09-04
- Scan type: Deep scan
- Business type: b2b_saas
- Report: https://www.seconddoor.io/r/hubspot-scxexa
- Scanner version: 10
HubSpot publishes real prices and a clean marketing site, but the actual signup form sits behind a robots.txt wall that blocks every automated buyer, human-only funnel dressed up as self-serve.
## Scores
| Measure | Score |
| --- | --- |
| Humans | 80/100 |
| Agents | 40/100 |
| Composite | 60/100 |
| Door Gap | 40 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 10 of 16 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
- missing walk the way a visitor would, to a signup form or a product
- ok      check if API key/app creation is self-serve
## What a visitor meets
1. **Pricing page load** (friction). Direct navigation to hubspot.com/pricing/marketing first returned a blank white page. Prices are injected by JavaScript only: 16 prices rendered client side, zero in raw HTML. A non-JS agent sees nothing.
2. **Attempting the self-serve signup flow** (blocked). Following "Get started free" leads to app.hubspot.com/signup-hubspot/crm. That subdomain is blocked by robots.txt with "Disallow: /". An automated visitor honouring robots.txt cannot reach the signup form, even though a human clicking the same link lands on it in two steps.
3. **Pricing page, second load** (friction). A later render showed four tiers for Marketing Hub: Free $0/mo, Starter $7/mo/seat (down from $20), Professional $800/mo (down from $890), Enterprise partly hidden behind a sales chat popup. Pricing is per seat, extra seats billed separately, real total needs a "Calculate price" tool.
## Top issues
1. **The pricing page shows zero prices in raw HTML, all 16 published prices are injected by JavaScript.** (pricing_legibility)
2. **No MCP manifest exists at any of the standard paths, so agent tooling has no declared entry point into the product.** (agent_aware_instrumentation)
The evidence and the recommended fix for each are on the report page: https://www.seconddoor.io/r/hubspot-scxexa
## 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-scxexa
## The agent door
- **machine_discoverability** 89/100. Robots.txt names every major AI crawler as allowed, a sitemap lists 1203 URLs, llms.txt is published, and structured data covers 9 schema types. Pricing content itself still only renders after JavaScript.
- **programmatic_onboarding** 15/100. The developer docs link to app.hubspot.com/signup-hubspot/crm for API keys, and that subdomain's robots.txt disallows all automated access. No OpenAPI spec exists at any standard path, and docs show endpoint examples only, no documented.
- **pricing_legibility** 30/100. 16 real prices exist on the pricing page, from $0 to $3,600, but all of them are injected by JavaScript. Raw HTML returns zero prices, so any client that does not render JS sees a blank page.
- **agent_aware_instrumentation** 8/100. No MCP manifest.
- **machine_fetchable_trust** 85/100. security.txt is published with a working contact route, robots.txt is present with 358 directives, and the homepage serves structured data and responds normally to automated requests.
- **commercial_rails** 10/100. Prices exist on the page but only after JavaScript runs, so a non-rendering client sees no catalog at all. The checkout path itself sits on app.hubspot.com, which disallows all automated visitors in robots.txt.
## The human door
- **steps_to_first_value** 80/100. A human reaches the signup CTA in 2 steps from the homepage. Robots.txt closes app.hubspot.com to automated visitors, so nothing past that click was read for an agent.
- **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
