{"slug":"hubspot-b3ms3q","companyName":"HubSpot","domain":"hubspot.com","url":"https://hubspot.com","headline":"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.","compositeScore":21,"humanScore":0,"agentScore":41,"doorGap":-41,"humanMeasured":0,"agentMeasured":6,"percentile":null,"humanPercentile":null,"agentPercentile":null,"isPartial":true,"depth":"deep","siteClass":"b2b_saas","scannerVersion":9,"scannedAt":"2026-09-03T19:35:21.374Z","unlocked":false,"mission":{"steps":[{"url":"https://www.hubspot.com","outcome":"ok","purpose":"reach the site at all"},{"url":"https://www.hubspot.com/robots.txt","outcome":"ok","purpose":"find out whether machines are welcome"},{"url":"https://www.hubspot.com","outcome":"ok","purpose":"ask whether the door opens for requests carrying the AI crawlers' names"},{"url":"https://www.hubspot.com/llms.txt","outcome":"ok","purpose":"read the site's own guide for language models"},{"url":"https://www.hubspot.com/sitemap.xml","outcome":"ok","purpose":"find out what pages exist"},{"url":"https://www.hubspot.com/.well-known/security.txt","outcome":"ok","purpose":"find a contact route for machines"},{"url":"https://www.hubspot.com","outcome":"missing","purpose":"find a published agent interface"},{"url":"https://www.hubspot.com/.well-known/ai-plugin.json","outcome":"missing","purpose":"find an agent plugin manifest"},{"url":"https://www.hubspot.com","outcome":"missing","purpose":"find out whether verified agents are recognised"},{"url":"https://www.hubspot.com","outcome":"ok","purpose":"read the homepage as data rather than as a page"},{"url":"https://www.hubspot.com","outcome":"missing","purpose":"find a machine readable API spec"},{"url":"https://www.hubspot.com","outcome":"ok","purpose":"read the developer documentation"},{"url":"https://www.hubspot.com/pricing/marketing?hubs_content=www.hubspot.com%2Fhomepg-d&hubs_content-cta=nav-pricing&wfoid=fb46561e1d.1788463890","outcome":"missing","purpose":"read the prices without running JavaScript"},{"url":"https://www.hubspot.com","outcome":"ok","purpose":"find a comparison page worth citing"},{"url":"https://www.hubspot.com","outcome":"ok","purpose":"walk the way a visitor would, to a signup form or a product"},{"url":"https://app.hubspot.com/signup/crm","outcome":"missing","purpose":"check if free account signup is self-serve"},{"url":"https://developers.hubspot.com/docs/api/private-apps","outcome":"ok","purpose":"check if API key/private app can be obtained self-serve without sales"}],"verdict":"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."},"observations":[{"url":"https://www.hubspot.com/","step":1,"detail":"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.","moment":"Landing page","verdict":"friction","screenshot":0},{"url":"https://www.hubspot.com/pricing/marketing","step":2,"detail":"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.","moment":"Pricing page","verdict":"friction","screenshot":1},{"url":"https://www.hubspot.com/pricing/marketing","step":3,"detail":"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.","moment":"Attempting to reach signup form","verdict":"blocked"},{"url":"https://developers.hubspot.com/docs/api-reference/latest/overview","step":4,"detail":"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.","moment":"Developer API documentation","verdict":"friction","screenshot":2}],"dimensions":[{"key":"machine_discoverability","audience":"agent","score":89,"summary":"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.","evidence":{"locked":true,"count":4}},{"key":"programmatic_onboarding","audience":"agent","score":26,"summary":"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.","evidence":{"locked":true,"count":4}},{"key":"pricing_legibility","audience":"agent","score":30,"summary":"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.","evidence":{"locked":true,"count":1}},{"key":"agent_aware_instrumentation","audience":"agent","score":8,"summary":"No MCP manifest.","evidence":{"locked":true,"count":4}},{"key":"machine_fetchable_trust","audience":"agent","score":85,"summary":"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.","evidence":{"locked":true,"count":2}},{"key":"commercial_rails","audience":"agent","score":10,"summary":"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.","evidence":{"locked":true,"count":3}},{"key":"steps_to_first_value","audience":"human","score":null,"summary":"Could not verify: this scan did not reach the pages that would show it.","evidence":{"locked":true,"count":1}},{"key":"required_fields","audience":"human","score":null,"summary":"Could not verify: this scan did not reach the pages that would show it.","evidence":{"locked":true,"count":1}},{"key":"verification_walls","audience":"human","score":null,"summary":"Could not verify: this scan did not reach the pages that would show it.","evidence":{"locked":true,"count":1}},{"key":"error_recovery","audience":"human","score":null,"summary":"Could not verify: this scan did not reach the pages that would show it.","evidence":{"locked":true,"count":1}}],"issues":[{"rank":1,"title":"Pricing figures exist only after JavaScript renders, so a client reading raw HTML sees zero prices.","dimensionKey":"pricing_legibility","evidence":{"locked":true,"count":2},"fix":null},{"rank":2,"title":"No MCP manifest or OpenAPI specification exists at any standard path, leaving agents to hand-code a client from prose.","dimensionKey":"agent_aware_instrumentation","evidence":{"locked":true,"count":2},"fix":null},{"rank":3,"title":"A developer documentation page contains an embedded instruction directing readers to fetch a specific file before continuing.","dimensionKey":"machine_fetchable_trust","evidence":{"locked":true,"count":1},"fix":null}],"fixArtifacts":{"locked":true,"count":5,"summaries":[{"id":"pricing_ssr_fallback:pricing-page","kind":"pricing_ssr_fallback","title":"Prices in the HTML, not only after JavaScript","path":"pricing page","effort":{"minutes":60,"role":"developer"},"outcome":{"dimension":"pricing_legibility","external":["A client that reads raw HTML sees the plans and prices."]}},{"id":"software_offer_jsonld:pricing-page","kind":"software_offer_jsonld","title":"Pricing as Offer structured data","path":"pricing page","effort":{"minutes":20,"role":"developer"},"outcome":{"dimension":"pricing_legibility","external":["Assistants comparing vendors read the plans and prices as Offer structured data."]}},{"id":"robots_search_bots:robots-txt","kind":"robots_search_bots","title":"robots.txt rules for AI crawlers","path":"/robots.txt","effort":{"minutes":10,"role":"owner"},"outcome":{"dimension":"machine_discoverability","external":["The assistants' search crawlers read and cite the site to buyers; training stays the owner's decision."]}},{"id":"interfaces_note:notes","kind":"interfaces_note","title":"Machine interfaces: where you stand","path":"notes","effort":{"minutes":10,"role":"owner"},"outcome":{"dimension":"agent_aware_instrumentation","external":["The developer surface is built in an order where every published pointer answers."]}},{"id":"pricing_md:pricing-md","kind":"pricing_md","title":"pricing.md","path":"/pricing.md","effort":{"minutes":20,"role":"owner"},"outcome":{"dimension":"agent_aware_instrumentation","external":["Agents read the price list directly instead of rendering the pricing page."]}}]},"feedback":{"endpoint":"/api/feedback","mcpTool":"rate_fix","targets":[{"type":"report","key":"report"},{"type":"dimension","dimensionKey":"machine_discoverability","key":"dimension:machine_discoverability"},{"type":"dimension","dimensionKey":"programmatic_onboarding","key":"dimension:programmatic_onboarding"},{"type":"dimension","dimensionKey":"pricing_legibility","key":"dimension:pricing_legibility"},{"type":"dimension","dimensionKey":"agent_aware_instrumentation","key":"dimension:agent_aware_instrumentation"},{"type":"dimension","dimensionKey":"machine_fetchable_trust","key":"dimension:machine_fetchable_trust"},{"type":"dimension","dimensionKey":"commercial_rails","key":"dimension:commercial_rails"},{"type":"dimension","dimensionKey":"steps_to_first_value","key":"dimension:steps_to_first_value"},{"type":"dimension","dimensionKey":"required_fields","key":"dimension:required_fields"},{"type":"dimension","dimensionKey":"verification_walls","key":"dimension:verification_walls"},{"type":"dimension","dimensionKey":"error_recovery","key":"dimension:error_recovery"},{"type":"issue","dimensionKey":"pricing_legibility","checkId":"pricing_nojs","key":"issue:pricing_legibility:pricing_nojs"},{"type":"issue","dimensionKey":"agent_aware_instrumentation","checkId":null,"key":"issue:agent_aware_instrumentation:-"},{"type":"issue","dimensionKey":"machine_fetchable_trust","checkId":null,"key":"issue:machine_fetchable_trust:-"}]}}