Skip to content
Browse all guides

Issue #62 · important

Pages with visible FAQ or Q&A sections are missing FAQPage schema.

What is this issue?

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.

Without FAQPage schema:

  • AI search engines can't properly understand your Q&A content
  • Voice search results won't be able to provide your FAQ answers
  • Structured Q&A data is not available for search engines
  • Users may not find quick answers to common questions

A proper FAQPage schema should include: @type (FAQPage), mainEntity with Question entities, each having name (question text) and acceptedAnswer with Answer type containing text (answer text).

Why does it matter?

FAQPage schema is important for AI search and voice assistants:

  • AI Overviews: Provides structured Q&A data that AI engines can use to answer user queries
  • Voice search: Voice assistants can read FAQ answers directly from structured data
  • Featured snippets: Q&A content may appear in featured snippets
  • User experience: Helps search engines understand and surface your FAQ content
  • Voice assistants: Enables voice assistants to provide accurate answers from your FAQ

Resolving this issue improves your SEO health score by ensuring Q&A content is properly structured for AI search and voice assistants.

How to fix it

  1. Identify FAQ pages: Look for pages with FAQ URL patterns (/faq, /help, /support) or accordion Q&A sections

  2. Add FAQPage JSON-LD structured data to the page's <head> or before </body>:

    {
      "@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."
          }
        }
      ]
    }
    
  3. Ensure schema matches visible content:

    • 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
    • All acceptedAnswer text should be visible by default
  4. Sync dynamically: Update schema dynamically from your CMS FAQ content

  5. Validate with Google's Rich Results Test


Notes

  • Google reduced FAQ rich result display in 2023, but the schema still provides strong signals for AI Overviews and voice search
  • Only use FAQPage schema for pages that actually have FAQ content
  • Ensure each Question has both name (question text) and acceptedAnswer with text (answer text)

Examples

Example 1: Missing FAQPage Schema on FAQ Page

Problematic state:

<!-- FAQ page without FAQPage schema -->
<html>
  <head>
    <title>Frequently Asked Questions - Example Store</title>
  </head>
  <body>
    <h1>Frequently Asked Questions</h1>

    <h2>What is your return policy?</h2>
    <p>We offer 30-day returns for all products in original condition.</p>

    <h2>Do you ship internationally?</h2>
    <p>Yes, we ship to over 150 countries worldwide.</p>
  </body>
</html>

Corrected state:

<!-- FAQ page with FAQPage schema -->
<html>
  <head>
    <title>Frequently Asked Questions - Example Store</title>
    <script type="application/ld+json">
      {
        "@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."
            }
          }
        ]
      }
    </script>
  </head>
  <body>
    <h1>Frequently Asked Questions</h1>

    <h2>What is your return policy?</h2>
    <p>We offer 30-day returns for all products in original condition.</p>

    <h2>Do you ship internationally?</h2>
    <p>Yes, we ship to over 150 countries worldwide.</p>
  </body>
</html>

Example 2: FAQPage Schema with Multiple Questions

Corrected state:

{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "How long does shipping take?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Standard shipping takes 3-5 business days. Express shipping takes 1-2 business days."
      }
    },
    {
      "@type": "Question",
      "name": "What payment methods do you accept?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "We accept Visa, Mastercard, American Express, PayPal, and Apple Pay."
      }
    },
    {
      "@type": "Question",
      "name": "Can I track my order?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Yes, you will receive a tracking number via email once your order ships."
      }
    }
  ]
}

Example 3: Incomplete FAQPage Schema

Problematic state:

{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "What is your return policy?"
    }
  ]
}

Missing acceptedAnswer property

Corrected state:

{
  "@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."
      }
    }
  ]
}

How PixyScan detects this

PixyScan follows these logical steps to detect missing FAQPage schema:

  1. Detect FAQ pages: The crawler identifies pages with:

    • FAQ URL patterns (/faq, /help, /support)
    • Visible accordion Q&A sections
    • Heading text containing "FAQ", "Frequently Asked Questions", etc.
  2. Extract structured data: The crawler looks for JSON-LD, Microdata, or RDFa blocks on the page

  3. Check for FAQPage schema: The crawler verifies if any schema block has:

    • @type set to FAQPage
    • mainEntity property containing Question entities
  4. Validate schema completeness: If FAQPage schema is found, the crawler checks for:

    • Each Question has name property (question text)
    • Each Question has acceptedAnswer property
    • Each acceptedAnswer has text property (answer text)
    • Schema Q&A matches visible page content
  5. Trigger conditions: The issue is flagged when:

    • Page has FAQ content but no FAQPage schema
    • FAQPage schema exists but questions are missing acceptedAnswer
    • Schema Q&A does not match visible page content

References