# HubSpot: 40 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-j4a2bk
- Scanner version: 10
HubSpot publishes real prices and a developer platform, but robots.txt seals the actual signup form away from every automated buyer, human or agent.
## 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 can be self-issued without human approval
## What a visitor meets
1. **Landing page** (friction). Headline "Where go-to-market teams go to scale". It's clearly a CRM/marketing suite for businesses but exact product and price aren't stated up front. Two competing CTAs: "Get a demo" and "Get started free". A chat widget pops up immediately offering help, adding a third path.
2. **Pricing page** (friction). Prices only render via JavaScript, nothing in raw HTML. Four tiers: Free $0, Starter $7/mo/seat, Professional $800/mo, Enterprise price further down. A chat bubble pushes "chat with a sales agent" over the self-serve figures. Big jump from $7 to $800 with no mid-tier.
3. **Signup attempt from pricing page** (blocked). Clicking "Get started free" opened a chatbot pushing "Book a meeting" or "Chat with sales" rather than a signup page. The actual form at app.hubspot.com/signup-hubspot/crm is disallowed by robots.txt for this scanner. An automated visitor cannot reach it.
4. **Developer platform page** (friction). A separate developers.hubspot.com site exists with docs, API references, and a "Create developer account" button. This is a reasonable path for an agent integrator, but it is not linked from the main homepage nav, a visitor has to know to look for it. The main signup funnel and this developer funnel are disconnected.
## Top issues
1. **Pricing figures exist only after JavaScript executes, with nothing in the raw HTML response.** (pricing_legibility)
2. **No machine readable API specification or MCP manifest is published at any standard path.** (agent_aware_instrumentation)
The evidence and the recommended fix for each are on the report page: https://www.seconddoor.io/r/hubspot-j4a2bk
## 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-j4a2bk
## The agent door
- **machine_discoverability** 89/100. Robots.txt allows all named AI crawlers, a real browser gets the page normally, and a sitemap lists 1062 URLs with 9 schema.org types on the homepage.
- **programmatic_onboarding** 15/100. The signup path at app.hubspot.com is disallowed by robots.txt for automated clients, and no API key can be issued without going through it. Developer docs show endpoint examples but no documented key issuance or self-serve flag.
- **pricing_legibility** 30/100. 16 prices from $0 to $3,600 render on the pricing page but only after JavaScript runs, with zero prices in raw HTML. A client that does not execute scripts, including many agents, sees no price at all.
- **agent_aware_instrumentation** 8/100. No MCP manifest at any of 3 standard paths, no ai-plugin.json, and no OpenAPI spec at any of 6 standard paths checked. An agent has to hand-write a client from prose documentation.
- **machine_fetchable_trust** 85/100. security.txt is published with a working contact route, and the homepage answers automated requests cleanly with structured Organization and Product data in JSON-LD.
- **commercial_rails** 10/100. Prices do exist and render for a browser, but the checkout path an agent needs to turn a price into a paid account sits at app.hubspot.com, which robots.txt disallows outright for automated visitors, and no machine readable pricing file or.
## The human door
- **steps_to_first_value** 80/100. The signup CTA is 2 clicks from the homepage, a short path by design, but robots.txt closes app.hubspot.com to automated visitors, so nothing past that click was actually read by the scan.
- **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
