FAQPage Schema Missing
Issue No: 62
Category: Structured Data & Rich Results
Issue type: Suggestion
Priority: STANDARD
Description
Pages with visible FAQ or Q&A sections are missing FAQPage schema. While Google reduced FAQ rich result display in 2023, the schema still provides strong signals for AI Overviews and voice search.
How do we capture it
- Detect pages with FAQ URL patterns (
/faq,/help,/support) or accordion Q&A sections - Check JSON-LD for
"@type": "FAQPage"with nestedQuestionandacceptedAnswer
What to store
StructuredDataAudit with schemaType = FAQPage, issueNumber = 62, plus StructuredDataField rows:
| Field | Type | Comment |
|---|---|---|
question_count | integer | Number of Question entities |
has_accepted_answer | boolean | All questions have acceptedAnswer |
answers_match_page | boolean | Schema Q&A matches visible page content |
Core audit fields: isPresent, matchesContent, rawJson
Condition for trigger
The following rules trigger this issue:
- Trigger Rule 1: Schema absent
- Target Field:
isPresent - Evaluation Logic:
isPresent = false - Severity: STANDARD
- Diagnostic Message: "No FAQPage schema on FAQ page"
- Target Field:
- Trigger Rule 2: Missing answers
- Target Field:
has_accepted_answer - Evaluation Logic:
has_accepted_answer = false - Severity: STANDARD
- Diagnostic Message: "Questions missing accepted answers"
- Target Field:
- Trigger Rule 3: Content mismatch
- Target Field:
answers_match_page - Evaluation Logic:
answers_match_page = false - Severity: STANDARD
- Diagnostic Message: "Schema Q&A does not match visible page content"
- Target Field:
Sources
Long description
Google reduced FAQ rich result display in 2023, but FAQPage schema still provides strong signals for AI Overviews and voice search. The schema provides structured Q&A data that search engines can use to understand page content and provide more relevant answers.
Minimal example:
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "What is your return policy?",
"acceptedAnswer": {
"@type": "Answer",
"text": "We offer 30-day returns for all products in original condition."
}
},
{
"@type": "Question",
"name": "Do you ship internationally?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes, we ship to over 150 countries worldwide."
}
}
]
}
Critical requirement: The Q&A in schema must exactly match what is visible on the page. Do not include hidden or collapsed Q&A unless expanded by default.
How to Fix
- Add
FAQPageJSON-LD to FAQ, help, and support pages - Wrap each visible Q&A item in
Question/acceptedAnswerstructure - Sync schema dynamically from your CMS FAQ content
- Ensure all
acceptedAnswertext is visible by default (not hidden in collapsed state) - Match schema Q&A exactly to visible page content
- Validate at Google Rich Results Test