ai
Mark up FAQs with FAQPage schema
MetricSpot checks whether your FAQ section is wrapped in FAQPage JSON-LD. Marked-up Q&A pairs are eligible for rich results in Google and direct citations in answer engines.
What this check does
Looks for a <script type="application/ld+json"> block on the page that declares "@type": "FAQPage" with one or more Question entries. The check fails when MetricSpot detects an h2/h3 “Frequently asked questions” section in the visible HTML but no matching schema.
Why it matters
FAQ schema is one of the few structured-data types Google still uses to surface rich results for non-medical, non-government sites — but the bigger upside is now AI.
- Google’s AI Overviews and the “People also ask” box preferentially pull from FAQPage-marked content because the Q→A boundaries are unambiguous.
- ChatGPT browsing and Perplexity chunk pages along question boundaries. When the boundary is explicit in JSON-LD, the chunk extracted as a citation is exactly the answer you wrote — not a fragment the chunker guessed at.
- Voice assistants (Google Assistant, Alexa) pull short factual answers from FAQ schema with attribution back to your domain.
Marking up content you’ve already written takes ten minutes and lifts you from “ignored” to “cited.”
How to fix it
Wrap each Q&A in JSON-LD. Drop this in the page <head> (or anywhere in the body — Google accepts both):
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "How much does MetricSpot cost?",
"acceptedAnswer": {
"@type": "Answer",
"text": "MetricSpot starts at €9/month for the Pro plan and €19/month for Premium. The free anonymous audit runs once per IP with no signup."
}
},
{
"@type": "Question",
"name": "What does MetricSpot audit?",
"acceptedAnswer": {
"@type": "Answer",
"text": "91 checks across technical SEO, performance, on-page, accessibility, privacy, social, AI readability, and content quality."
}
}
]
}
</script>
Astro — generate from frontmatter:
---
const { faqs } = Astro.props;
const schema = {
"@context": "https://schema.org",
"@type": "FAQPage",
mainEntity: faqs.map(f => ({
"@type": "Question",
name: f.q,
acceptedAnswer: { "@type": "Answer", text: f.a },
})),
};
---
<script type="application/ld+json" set:html={JSON.stringify(schema)} />
WordPress — Rank Math, Yoast, and SEOPress all ship FAQ blocks that emit FAQPage JSON-LD automatically. In Gutenberg, use the “FAQ” block.
Rules Google enforces:
- Every
Question.nameandAnswer.textmust be visible on the page — schema-only Q&As violate the guidelines and risk a manual action. - Don’t mark up questions that aren’t really FAQs (product reviews, support tickets, forum threads).
- Each answer should be a self-contained reply, not a teaser linking elsewhere.
Test it — paste the URL into Google’s Rich Results Test. It validates the schema, shows what would render, and flags any guideline issues.
Frequently asked questions
Will FAQPage schema show as rich results in Google?
Since August 2023 Google limits the FAQ rich result to government and authoritative health sites for most queries. The schema still works — Google reads it for AI Overviews, “People also ask”, and AI search citations — but you may not see the expandable accordion in normal search results.
Do I need separate schema for HowTo and Q&A?
FAQPage is for pages where you anticipate reader questions. HowTo is for step-by-step instructions. QAPage is for a single user-asked question with multiple community answers (Stack Overflow-style). Pick one; don’t double-mark.
Where does this fit with other structured data?
FAQPage coexists with Article, BlogPosting, Product, etc. — emit both. See the JSON-LD structured data page for the broader strategy.
Sources
Last updated 2026-05-11