Ranking on page one of Google and being cited inside an AI-generated answer are now two separate problems. Most HubSpot sites are built to solve the first one only: templates tuned for keywords and internal linking, with nothing in place that helps an AI system extract a quotable fact. When ChatGPT, Perplexity or Google's AI Overviews answer a question in your category, the sites that get named are the ones a machine could parse confidently — not necessarily the ones ranking above you.
This isn't about tricks or "AI SEO hacks". There is no prompt to game and no keyword density that earns a citation. It comes down to whether your site's structure lets an AI system read the page, identify who published it, and trust the claim enough to repeat it.
On HubSpot specifically, four things account for almost every case we audit — and all four are fixable inside the portal you already have. We handle them as part of HubSpot technical SEO, the same way we handle the redirect and metadata work described in what actually breaks SEO during a HubSpot migration.
1. JavaScript-rendered content AI crawlers can't see
HubSpot's drag-and-drop modules are convenient, and some of them render their key content client-side — tabbed sections, accordions, filtered listings, sliders and anything hydrated by a module's own JavaScript after the page loads. In a browser it looks complete. In the raw HTML response it can be an empty container.
Googlebot renders JavaScript in a second pass, so this often costs you nothing in classic search. AI crawlers are not equivalent: GPTBot, PerplexityBot and ClaudeBot fetch pages far more cheaply and don't reliably execute scripts. Content that exists only after hydration is functionally invisible to them — your pricing, your service definitions, your proof points.
The test is blunt: fetch the page without JavaScript and read what comes back. If the sentence you want quoted isn't in that response, it isn't available for citation. We move the load-bearing content — headings, definitions, prices, FAQ answers — into server-rendered HubL output, and leave JavaScript for behaviour rather than substance. On rebuilds this usually happens during theme customization or a blog template rebuild.
2. Missing or incomplete schema markup
Schema is how a page states what it is in a form a machine doesn't have to interpret. Organization identifies the business and its social profiles, Service describes what you sell, FAQPage exposes question-and-answer pairs directly, and BlogPosting attaches an author, a publisher and a publication date to an article.
Most HubSpot sites we audit have none of this beyond whatever the theme auto-generates, which is usually basic Organization data and nothing else. Service pages carry no Service markup, FAQ sections are plain HTML, and blog posts have no BlogPosting node — so an AI system has to guess at authorship and topic, and guessing tends to end in choosing a competitor it is sure about.
We add typed, connected JSON-LD across templates: one canonical Organization entity referenced by @id everywhere, Service on each service page, FAQPage on every page with real questions, and BlogPosting on articles. Connected entities matter more than volume — five nodes that reference each other describe a business far better than fifteen that float free. You can see it working on this page and across our case studies.
3. No llms.txt or structured "answer-ready" content
llms.txt is an emerging convention: a plain-text file at the root of your domain that lays out your business context for AI systems to parse directly — what you do, which services you offer, how pricing works, the questions customers actually ask, and links to the canonical pages for each. It's the same instinct as robots.txt or a sitemap, aimed at language models instead of crawlers.
Most HubSpot sites have never heard of it, let alone published one. That's a cheap gap to close: HubSpot lets you serve a file at /llms.txt, and the content is largely a distillation of things already written across your site — services, pricing, FAQs, contact details.
It isn't magic on its own. It works because it removes ambiguity: instead of inferring your service list from navigation labels and marketing headlines, a model can read a flat, unhedged statement of it. We publish and maintain one for Hubstack, and we set one up for clients as part of technical SEO work.
4. Content written to rank, not to be quoted
Pages built around keyword targets tend to bury the answer. Three paragraphs of context, a stack of adjectives, then eventually the fact. That structure survives in classic search, where a crawler indexes the whole document — but it extracts badly, because an AI answer needs a self-contained sentence it can lift without distorting your meaning.
Direct, declarative sentences near the top of a page get pulled into AI Overviews far more often than marketing copy does. "HubSpot migrations from WordPress typically take three to five weeks" is quotable. "We pride ourselves on delivering seamless, best-in-class migration experiences" is not — there's no fact in it to repeat.
Practically: answer the question in the first sentence under each heading, keep numbers and timeframes specific, define terms plainly, and let FAQ sections carry the literal phrasing people search with. It reads better for humans too, which is usually the tell that a technique isn't a hack. We apply this when writing service pages and blog templates, then verify the rendered output rather than the editor preview.