Platform guide

How to rank in AEO and GEO on a Framer site

By Arnav Mukherjee, founder of TofuBofu · July 6, 2026

Framer is built on React, and if you have read anything about AI crawlers you might brace for the worst, since raw React apps are exactly the kind of client-rendered content that AI engines cannot read. Here is the reassuring part: Framer does not ship a raw React app. It publishes server-rendered HTML, so AI crawlers like GPTBot and ClaudeBot receive your content in the page source, not an empty shell. Framer gets the hard requirement right.

That means the AEO work on Framer is a short, concrete list: add the schema Framer does not add for you, get your structure right, and write for buyer questions. Here it is, step by step.

0
JavaScript executions were found across an analysis of 500 million-plus GPTBot fetches, which is why Framer being React yet server-rendered is what saves you. Lantern, 2026

Step 1: Confirm crawler access and rendering

Framer generates a robots.txt and lets you customize it in the site settings. Open it and make sure you are not disallowing AI crawlers like GPTBot, ClaudeBot, PerplexityBot, or Google-Extended.

Then run the view-source test on a live page to confirm your content is in the raw HTML, which on Framer it should be thanks to server-side rendering. It is a 30-second check that turns an assumption into a fact.

Step 2: Add JSON-LD through Custom Code

This is the main manual step. Framer supports JSON-LD through its Custom Code feature. You add a script tag with your schema to the end of the head:

Publish, then validate the live URL with Google's Rich Results Test. FAQ schema is the one to prioritize: even after Google removed the visual FAQ result, AI engines still parse FAQPage into clean question-and-answer pairs.

Reference: Framer Help: structured data through JSON-LD. The fields AI models parse most often are name, description, and, for step-by-step content, the ordered list of steps.

Step 3: Assign real heading tags

In Framer, give your text real heading tags, H1 for the page title, H2 and H3 for sections, rather than only styling the font size. AI engines read the tag, not the look. Use one H1 per page, and write your headings as the questions buyers ask. That structure is what lets an engine lift a clean, self-contained answer from your page.

Step 4: Build answer-first pages with the CMS

Framer's CMS makes it easy to publish many specific, structured pages fast, which is an AEO advantage. Build pages that each answer one real buyer question, with the answer stated first, targeting qualified queries like your service for a particular industry or situation. Bind schema to those templates so every new page ships citation-ready.

Step 5: Add proof off-platform

A polished, structured Framer site still needs outside validation. AI engines corroborate your claims against third-party sources, so gather a few genuine reviews on the platforms your category uses. That off-site proof is frequently what moves a clean Framer site from readable to recommended.

The exact FAQ schema to paste

If the abstract talk of schema has you unsure what it actually looks like, here is a minimal, valid FAQPage block. Swap in a real question and answer your buyers ask, then on Framer add it through Custom Code at the end of the head.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [{
    "@type": "Question",
    "name": "Do you support HIPAA compliance?",
    "acceptedAnswer": {
      "@type": "Answer",
      "text": "Yes. We provide HIPAA-compliant backups, access controls, and audit logging."
    }
  }]
}
</script>

Add three to six real question-and-answer pairs to the mainEntity array, keep every answer specific and self-contained so it reads well on its own, and after publishing, validate the live page with Google’s Rich Results Test. That one block is the highest-return piece of markup you can ship.

What good looks like: a before and after

Framer attracts design-forward founders, so the pattern here has a twist. Picture an AI-services agency with a slick Framer site. Someone told the founder that "React is invisible to AI crawlers," so they panicked and assumed the worst, or worse, they assumed Framer would handle everything and did nothing. Both are wrong. Framer server-renders, so the content is readable, but Framer adds no schema, and the agency's pages are gorgeous visual statements with almost no extractable, specific text. Ask AI "best NLP consulting firm for healthcare," and the agency is nowhere, despite genuinely doing that work.

The after keeps the aesthetic and adds substance a machine can use. The agency builds a CMS collection of specific capability pages, each opening with a plain-language answer and its own FAQPage schema bound to CMS variables through Custom Code. They assign real heading tags instead of styled display text. And they drop an Organization schema block into the site-wide head. The site still looks like a Framer site, which is to say excellent. But now each capability is a clean, structured, cited answer, and the agency starts showing up for the exact queries its buyers ask.

The mistakes I see most on Framer

Framer's failure modes cluster around two false beliefs: that React dooms you, and that a beautiful site is a finished site.

1. Panicking about React, or trusting it blindly

Both extremes cost you. Framer is not a raw React app; it server-renders, so your content is readable. But it also does not add schema for you. The move is neither fear nor faith. It is running the view-source test to confirm rendering, then doing the schema work yourself.

2. Shipping design with no structured data

The most common gap. A visually stunning Framer site with zero JSON-LD is skipping the highest-ROI step. Add FAQ and Organization schema through Custom Code before anything else.

3. Static schema instead of CMS-bound schema

On collection pages, hard-coding one FAQ block makes every item claim the same answers. Use CMS variables inside the JSON-LD so each page outputs its own accurate schema, which is the whole advantage of Framer's CMS.

4. Display text posing as headings

Framer's typography controls make it easy to style a paragraph to look like a heading. Assign the real heading tag. The engine reads structure, not font size.

How to know it worked

Framer gives you a real published URL, so verification is direct. After publishing, view the source and confirm your content and JSON-LD are in the raw HTML, which they should be given Framer's server-side rendering. Run the URL through Google's Rich Results Test to confirm the schema is valid. Then re-scan your brand across the AI engines to see whether the specific capability queries you targeted have started to name you.

Then run it as a loop. Framer's CMS is built for producing polished pages quickly, so the cadence is: publish a specific capability page, let engines re-crawl over the following weeks, check which queries moved, and target the next page at the next gap. On Framer, the design will always be handled. The work that actually moves your AI visibility is the structured substance underneath it.

Framer AEO checklist

Allow AI crawlers in the Framer robots.txt View-source check: content is in the raw HTML Add JSON-LD via Custom Code, end of head Bind schema to CMS variables on templates Real headings + answer-first pages + real reviews

See how your Framer site scores in AI search

A free scan shows exactly what to add and fix, ranked by impact.

Get your free audit

Frequently asked questions

Is Framer good for AI search visibility?

Yes. Although Framer is built on React, it publishes server-rendered HTML, so AI crawlers like GPTBot and ClaudeBot receive your content in the HTML rather than an empty shell. That handles the rendering requirement that trips up many React apps. The main manual work is adding schema, which Framer supports through its custom code feature.

How do I add JSON-LD schema in Framer?

Framer supports JSON-LD through its Custom Code feature. Add a script tag with your schema to the end of the head, either site-wide in Site Settings under Custom Code, or on a specific page through the page's custom code. For CMS collection pages, use CMS variables inside the JSON-LD so each item generates its own structured data. Validate the published URL with Google's Rich Results Test.

Does Framer support FAQ schema?

Framer has no built-in FAQ schema toggle, but you can add FAQPage JSON-LD through the custom code feature, either hard-coded or bound to CMS variables on a template. AI engines parse this schema to extract question-and-answer pairs, so it is worth adding even though Google removed the visual FAQ rich result.

Can AI crawlers read Framer content?

Yes. Framer serves server-rendered HTML, so your text and CMS content are present in the page source that crawlers read, unlike a client-rendered React app that only fills in after JavaScript runs. Confirm on your own pages with the view-source test: your content should appear in the raw source.

How do I set headings correctly in Framer for AEO?

In Framer, assign real heading tags to your text, H1 for the page title and H2 and H3 for sections, rather than only styling the size. AI engines read the tag, not the appearance, and correct heading levels give them the structure they use to extract a clean answer. Use one H1 per page and phrase headings as buyer questions.

How do I control crawler access on Framer?

Framer generates a robots.txt for your site and lets you customize it in the site settings. Confirm you are not disallowing AI crawler user-agents like GPTBot, ClaudeBot, PerplexityBot, or Google-Extended if you want AI engines to read and cite your pages.

Sources and further reading

Keep reading: AEO and GEO on Wix · AEO and GEO on Webflow · What is a headless browser?