How to Write an AI-Optimized FAQ Page (With Schema Examples)
FAQPage schema is the single easiest AEO win. One snippet of JSON-LD can make your answers quotable by ChatGPT, Claude, and Perplexity. Here's exactly how to do it.
Why FAQs Are an AEO Goldmine
When someone asks ChatGPT "what is AEO?", the model scans its training data and the web for clear, concise answers. FAQ pages are perfectly structured for this — they're literally questions matched with answers. The format is exactly what AI agents are looking for.
But there's a catch: most FAQ pages are invisible to AI agents because they're just HTML text. The agent has to guess which text is a question and which is an answer, navigate accordion components that hide content behind JavaScript, and figure out context from visual layout cues that don't exist in its text-only view of your page.
FAQPage schema solves this by giving the agent a machine-readable map: "here are the questions, here are the answers, each one is a pair." No guessing. No JavaScript. Just structured data that any agent can parse instantly.
The Before & After
Here's what a typical FAQ page looks like to an AI agent — and what it looks like with schema:
Agent sees: a block of text with some bold lines that might be questions, maybe answers below them, mixed in with navigation, footer links, and sidebar content. It has to guess structure from formatting.
Agent sees: a structured array of Question objects, each with a named acceptedAnswer. Zero ambiguity. Machine-parseable in milliseconds. Directly quotable.
Step 1: Write Questions Like Humans Ask Them
This is where most FAQ pages fail. Companies write questions like internal documentation:
"Product Return Policy"
"Subscription Management"
"Data Processing Agreement"
"How do I return a product?"
"How do I cancel my subscription?"
"How does [product] handle my data?"
AI agents get questions in natural language. If someone asks Claude "how do I cancel my Acme subscription?", Claude looks for content that matches that phrasing. A FAQ entry titled "Subscription Management" is a weak match. "How do I cancel my subscription?" is a direct hit.
Practical tip: Use Google Autocomplete to find real questions. Type your product name or category into Google and note the suggested questions. Those are what real users type — and what AI agents are trained on.
// Free keyword research for FAQ questions:
curl -s "https://suggestqueries.google.com/complete/search?\
client=firefox&q=how+do+i+cancel" | python3 -c \
"import sys,json; [print(s) for s in json.loads(sys.stdin.read())[1]]"
Step 2: Write Self-Contained Answers
Every answer should make sense completely on its own. AI agents extract individual Q&A pairs — they don't read the whole page. If your answer says "as mentioned above" or "see our pricing page for details", the extracted answer is useless.
"Yes, as described in the section above, you can do this through the dashboard."
"Yes. Log into your dashboard at app.example.com, go to Settings → Billing, and click 'Cancel Subscription'. Your access continues until the end of the current billing period."
The right answer includes everything someone needs: what to do, where to do it, and what happens after. An AI agent can quote this verbatim and the user has a complete answer.
Step 3: Add FAQPage JSON-LD
Here's a complete, copy-paste template. Put this in a <script type="application/ld+json"> tag in your page's <head>:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "How do I cancel my subscription?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Log into your dashboard at app.example.com, go to Settings → Billing, and click 'Cancel Subscription'. Your access continues until the end of the current billing period. No cancellation fee."
}
},
{
"@type": "Question",
"name": "Is there a free trial?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes. All plans include a 14-day free trial with full access to every feature. No credit card required to start. You can upgrade, downgrade, or cancel at any time during the trial."
}
},
{
"@type": "Question",
"name": "What payment methods do you accept?",
"acceptedAnswer": {
"@type": "Answer",
"text": "We accept Visa, Mastercard, American Express, and PayPal. Annual plans can also be paid by bank transfer. All payments are processed securely through Stripe."
}
}
]
}
</script>
1. Every question in the schema must be visible on the page (Google penalizes hidden schema).
2. The text in the answer should match or closely paraphrase the visible answer.
3. Don't include HTML in the text field — plain text only.
4. No promotional content in answers (Google may revoke rich results).
Step 4: Common Mistakes to Avoid
Mistake 1: Schema without visible content
Adding FAQPage schema but hiding the actual Q&A content behind JavaScript accordions that don't render for crawlers. The schema says you have 10 questions, but the rendered page shows zero. Google calls this "structured data that doesn't match page content" and it can result in a manual action.
Mistake 2: Too many questions
Dumping 50 questions into a single FAQPage schema. This dilutes the signal — the agent doesn't know which answers are the most important. Aim for 5-10 focused questions per page. If you have more, create multiple topic-specific pages.
Mistake 3: Marketing answers
"Our industry-leading solution provides best-in-class..." — AI agents filter this noise. They want facts: what does it do, how much does it cost, how do I use it. Every answer that reads like ad copy is an answer that won't get quoted.
Mistake 4: Forgetting to test
JSON-LD syntax errors are silent — the page loads fine, but the schema is invisible to agents. Always validate your schema with Google's Schema Validator or run your page through an AEO checker that detects FAQPage schema.
Where to Add FAQPage Schema
You don't need a dedicated "/faq" page to use FAQPage schema. It works anywhere you have Q&A content:
- Product pages: "How does [feature] work?", "What's included in the [plan] tier?"
- Blog posts: Add a "Frequently Asked Questions" section at the bottom with schema
- Landing pages: Address objections as FAQs — "Is my data secure?", "Can I cancel anytime?"
- Documentation: Turn troubleshooting sections into FAQ schema
- Pricing pages: "What happens when I exceed my plan limit?", "Do you offer refunds?"
Adding 3-5 FAQs at the bottom of every blog post is one of the highest-ROI AEO moves. It turns each post into a potential source for AI-generated answers AND gives Google rich result eligibility. We do this on every post on this blog — check the source of any article to see the pattern.
Measuring the Impact
How do you know if your FAQ schema is working?
- Google Search Console: Check the "Enhancements" → "FAQs" report. It shows which pages have valid FAQ schema and any errors.
- Rich results: Search for your question in Google. If your FAQ schema is valid, Google may show your answer as an expandable result directly in search.
- AEO score: Run your page through AEO Check. Our "Content Structure" check specifically detects FAQPage schema and scores it.
- AI citation test: Ask ChatGPT or Claude your FAQ questions and see if they cite your content. This isn't deterministic — training data lags — but over time, well-structured FAQ content gets cited more.
In August 2023, Google restricted FAQ rich results to "well-known, authoritative government and health websites." Most sites no longer get FAQ rich results in Google Search. But FAQPage schema still matters for AEO: AI agents (ChatGPT, Claude, Perplexity) still parse it, and Google's own AI features (SGE/AI Overviews) still use it as a structured data signal. The schema isn't for Google rich results anymore — it's for AI agent consumption.
The Full Checklist
- ☐ Questions written in natural language (how people actually ask)
- ☐ Each answer is self-contained (no "see above")
- ☐ 5-10 questions per page (not 50)
- ☐ Answers are factual, not promotional
- ☐ FAQPage JSON-LD added to page
<head> - ☐ Schema matches visible page content
- ☐ No HTML in answer
textfields - ☐ Validated with schema.org validator
- ☐ Tested with AEO Checker
Total time: 20 minutes for a page with 5 questions. That's 20 minutes to make your content machine-parseable by every AI agent on the internet. Highest ROI you'll get this week.
Does Your Site Have FAQ Schema?
Our AEO scanner detects FAQPage, HowTo, and other structured data formats. See what AI agents can read on your site.
Run Free AEO Scan →