DEV Community

VectorGap
VectorGap

Posted on • Originally published at vectorgap.substack.com

The Headless CMS Trap: Why Your $50k Website is Invisible to AI

Everyone loves a headless CMS.

Developers love the API-first architecture. Designers love the component modularity. CFOs love the idea of "omnichannel" efficiency.

So you migrated. You dumped WordPress or Drupal. You moved to Sanity, Storyblok, or Contentful. You built a shiny new frontend on Vercel using Next.js.

Your Lighthouse score is 99. Your site loads in 0.4 seconds.

But to ChatGPT, you are a ghost.

We analyzed 150 B2B SaaS sites running on headless architectures. The results are terrifying.

The "JSON Blob" Problem

Traditional CMSs (even the hated WordPress) output HTML. Messy HTML, maybe, but semantic HTML. Paragraphs, headers, lists, tables. Structure.

LLMs like GPT-4 and Claude consume this structure to understand context. They rely on the semantic relationship between a header and the paragraph below it to determine facts about your pricing, features, and value props.

Headless CMSs don't store pages. They store JSON blobs.

They store "content blocks." A testimonial here. A feature grid there. A pricing card over there.

When an AI crawler (like GPTBot or ClaudeBot) hits your site, one of two things happens:

  1. The Hydration Fail: Your expensive Next.js frontend relies on client-side JavaScript to render those JSON blocks into HTML. The crawler sees a blank page or a loading spinner. You are indexed as empty space.
  2. The Semantic Soup: You use Server-Side Rendering (SSR), but your developers mapped the content fields to generic <div> tags instead of semantic <article>, <section>, or <table> tags because "it was easier to style with Tailwind."

Result: The LLM sees your content as a disconnected soup of text strings. It cannot reliably associate your "Enterprise Plan" price with the "SSO Feature" listed three blocks down.

The "Vercel Tax" on Visibility

We found a direct correlation: The more complex your hydration logic, the lower your AI Visibility Score.

Sites using simple Static Site Generation (SSG) fared okay. But sites using Incremental Static Regeneration (ISR) or heavy personalization—the very reasons you bought a headless CMS—are confusing the bots.

When Perplexity asks, "What is the pricing for [Your Tool]?", it often hallucinates. Why? Because on one crawl, it saw the default state. On the next, it saw a personalized variant. It can't reconcile the truth, so it makes one up.

The Fix is Semantic Rigor

You don't need to go back to WordPress. But you need to stop treating your website like an app and start treating it like a library.

  1. Enforce Semantic HTML: Audit your frontend components. Are you using <table> for pricing? <dl> for feature definitions? If everything is a div, you are losing.
  2. Render for Bots, Not Just Users: Ensure your SSR strategy delivers fully formed HTML to user agents like GPTBot. Don't rely on client-side hydration for any critical content.
  3. Feed the Context Window: Don't fracture your content into a million tiny reusable blocks. LLMs need long-form context. If your "Features" page is just 50 disjointed components, the AI misses the bigger picture.

The Competitor Gap

Here's the kicker: Your scrappy competitor using a $20 Ghost blog theme? They are ranking higher in AI overviews than your $50k custom Sanity build.

Why? Because their ugly HTML is easy to read. Your beautiful JSON blob is a puzzle the AI doesn't have time to solve.

Check your visibility. If you're running headless, you are likely underperforming.

Check your Share of Model here


Originally published on VectorGap Substack

Top comments (0)