FAQPage schema markup: example, required fields and WordPress setup
FAQPage schema marks up a page of questions and answers so each pair can be read as a discrete unit. The structure is simple: a mainEntity array of Question items, each with an acceptedAnswer of type Answer.
Be realistic about what it buys you. In August 2023 Google limited FAQ rich results to well-known, authoritative government and health sites, so most sites will not see dropdowns under their listing. It is still worth adding where a page genuinely answers questions, because clean question-and-answer structure is exactly what answer engines extract. Our schema markup guide explains that trade-off.
JSON-LD example
Copy this into a <script type="application/ld+json"> tag and replace the values with your own.
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "How long does standard shipping take?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Standard shipping takes 3 to 5 business days within the continental US. Orders placed before 1 p.m. Eastern ship the same day."
}
},
{
"@type": "Question",
"name": "Can I return an item after 30 days?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Returns are accepted within 30 days of delivery. After that we offer store credit for unused items in original packaging."
}
},
{
"@type": "Question",
"name": "Do you ship to Canada?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes. Canadian orders ship via tracked courier and arrive in 5 to 8 business days. Duties are calculated at checkout."
}
}
]
}
Properties
| Property | Status | What it is |
|---|---|---|
mainEntity | Required | An array of Question items, one per question shown on the page. |
Question.name | Required | The full text of the question, exactly as it appears on the page. |
Question.acceptedAnswer | Required | An Answer object holding the answer to that question. |
Answer.text | Required | The full answer text. Limited HTML such as links, lists and paragraphs is allowed. |
When to use it
Use FAQPage on a page where you wrote both the questions and the answers, and where visitors can read them: a support page, a shipping and returns page, the FAQ block at the end of a service page.
Do not use it when:
- Users submit the answers. A forum thread or a product Q&A where customers answer each other is QAPage, not FAQPage.
- The content is advertising. Google's guidelines exclude FAQ markup used for promotional content.
- The questions are hidden from visitors. Every marked-up question and answer must be visible on the page, though an accordion that expands on click is fine.
- The same FAQ repeats across the site. Mark it up on one page, not on every page that reuses the block.
Add it in WordPress
By hand. Add a Custom HTML block containing a <script type="application/ld+json"> with your questions, or print it from wp_head. Keep it in sync with the visible text every time you edit an answer.
With Hydrogen SEO. Open the page's SEO Settings sheet, add the FAQ Page schema type, and enter each question and answer pair. The JSON-LD is rendered server-side with the page. You can also ask the Hydrogen AI agent to "add FAQ schema to this page"; it reads the page's questions and answers and asks before it writes anything. Hydrogen SEO's docs list a known issue in the current plugin version where FAQ Page items print without their Question and Answer types, so check the output in the Rich Results Test before relying on it.
One-off markup. The free schema generator in the Hydrogen SEO app at /seo/schema-generator builds FAQPage JSON-LD from a list of questions and answers, with no credits used.
Common mistakes
- Marking up questions that are not on the page. This violates Google's guidelines and is the fastest way to lose trust in your markup.
- Answers that differ from the visible text. Paraphrasing in the schema is not allowed; mirror the page.
- Missing types. Each item needs
@type: Questionand each answer@type: Answer. Without them, parsers cannot read the pairs. - FAQ markup on every page. A sitewide footer FAQ repeated on hundreds of URLs adds nothing and can look manipulative.
- Thin, promotional answers. "Contact us to find out" is not an answer. Lead with the direct answer in the first sentence.
See invalid structured data for how to read validator errors.
Test it
Check FAQPage markup twice. Before publishing, run it through the JSON-LD checker; after, test the live page with Google's Rich Results Test and the Schema Markup Validator. Keep in mind that the Rich Results Test can report a page as eligible for FAQ even when Google will not show the dropdowns for your site; the test checks markup, not whether your site is one of the authoritative sources Google now limits the feature to. Search Console's structured data reports will still flag broken FAQ items site-wide.
Common questions
Is FAQ schema still worth adding?
Yes, where the page genuinely answers questions. Most sites no longer get the FAQ rich result, but the markup still states each question and answer clearly for search engines and AI systems.
Which sites still get FAQ rich results?
Google limits them to well-known, authoritative government and health websites. Other sites are generally not eligible for the visual treatment.
What is the difference between FAQPage and QAPage?
FAQPage is for questions and answers written by the site owner. QAPage is for a page where one question is answered by users, such as a forum thread.
Can FAQ answers sit inside an accordion?
Yes. Content in an expandable section is fine as long as users can reveal and read it on the page.