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. Google retired FAQ rich results on May 7, 2026, after three years of showing them only for well-known government and health sites, so no listing gets the dropdowns now. The markup is still worth adding where a page genuinely answers questions, because clean question-and-answer structure is exactly what answer engines extract, and leaving existing FAQ markup in place does not hurt you. 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.

json
{
  "@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

PropertyStatusWhat it is
mainEntityRequiredAn array of Question items, one per question shown on the page.
Question.nameRequiredThe full text of the question, exactly as it appears on the page.
Question.acceptedAnswerRequiredAn Answer object holding the answer to that question.
Answer.textRequiredThe 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 old FAQ guidelines excluded promotional content, and a sales pitch dressed as questions reads badly to any parser.
  • 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: Question and 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 the Schema Markup Validator (validator.schema.org), which reads it against schema.org. With the rich result gone, Google's Rich Results Test is no longer the check that matters for this type, though it is still useful for any other markup on the same page. What you are confirming is that every Question has its type, its acceptedAnswer and text that matches the visible page.

Common questions

Is FAQ schema still worth adding?

Yes, where the page genuinely answers questions. No site gets the FAQ rich result anymore, but the markup still states each question and answer clearly for search engines and AI systems.

Does any site still get FAQ rich results?

No. Google retired the feature on May 7, 2026. From August 2023 until then it was limited to well-known government and health websites, but that exception has ended too.

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.