Skip to content
Published Authored byBilly Reiner

Schema · How-to

Shopify FAQPage schema in 2026

FAQPage is the Schema.org type for a page whose dominant content is one or more frequently asked questions1. Google retired the FAQ rich result for non-government, non-health sites on 2026-05-072 — the visible accordion is gone, but the FAQPage type is still part of the active Schema.org vocabulary (v30.0). On Shopify, ship FAQPage only on pages where Q&A is the primary content: the FAQ hub itself, a Knowledge Base index, a policy page authored as Q&A. Do not sprinkle FAQ blocks onto products, collections, or the homepage.

Why we still recommend FAQPage in 2026 despite the rich-result retirement: AI engines (ChatGPT, Perplexity, Gemini, Claude) continue to parse FAQPage blocks as a Q&A extraction shortcut. The cost to ship is one Liquid loop over an FAQ metaobject array. The Google SERP enhancement is gone; the AI-engine citation lift is not.

What FAQPage is

Per Schema.org v30.0, FAQPage is 'a WebPage presenting one or more frequently asked questions.' Inheritance: Thing > CreativeWork > WebPage > FAQPage. The standard pattern: a single FAQPage object whose mainEntity is an array of Question objects, each with a name (the question text) and an acceptedAnswer (an Answer with text). The type remains in the active Schema.org vocabulary as of 2026-03-19.

Mental model: FAQPage declares "this page is a question-and-answer reference." The Question objects inside mainEntity are the individual Q&A pairs. The Answer.text is the verbatim answer. This is the only schema type in the library where AI engines can extract one full answer to one full question without any prose inference at all — which is precisely what makes it useful even after the rich-result retirement.

The 2026-05-07 retirement, plainly

On 2026-05-07, Google narrowed FAQ rich-result eligibility to well-known authoritative government and health websites. Every other domain — every Shopify storefront, every brand site, every editorial publisher — lost the visible FAQ accordion that used to appear under organic search results. Rich Results Test FAQ support ends June 2026. Search Console API FAQ report ends August 2026. The FAQPage type itself remains valid in the Schema.org vocabulary.

When to still ship FAQPage on Shopify

Three Shopify pages still earn FAQPage JSON-LD in 2026: (1) the main FAQ hub page (Shopify Pages route, typically /pages/faq), (2) a Knowledge Base index page when the merchant uses Shopify's Knowledge Base app to centralise FAQs, (3) policy pages formatted as Q&A (Shipping FAQ, Returns FAQ). All three share the property that Q&A IS the dominant content. Do not emit FAQPage on product pages, collection pages, blog posts, the homepage, or pages where the FAQ block is one small section among other content.

The Shopify Knowledge Base app stores FAQs as metaobjects (Content > Metaobjects). The app's own auto-generated FAQs (from policies, customer settings, shipping rules) live in a metaobject collection that the merchant can output to a storefront page via Liquid3. The visible storefront FAQ page is the merchant's responsibility; the FAQPage JSON-LD on that page is, too.

FAQPage fields

The required fields per Schema.org and Google's documentation: mainEntity (array of Question), each Question with name (Text — the question itself) and acceptedAnswer (Answer with text). Optional but useful: inLanguage (when the FAQ is in a non-default language), Question.author (when answers come from named experts), Answer.upvoteCount (when answers carry community signals).

  • mainEntity — required. Array of Question objects.
  • Question.name — required. The question text. Pass through | escape.
  • Question.acceptedAnswer — required. One Answer object per question.
  • Answer.text — required. The full answer text. Pass through | escape and (carefully) | strip_html if the source is rich text.
  • inLanguage — recommended for non-English FAQs.

JSON-LD example — FAQPage from Shopify metaobjects

The block below is FAQPage JSON-LD for a Shopify FAQ page whose Q&A pairs are stored as a metaobject collection (Content > Metaobjects > faq_entries with fields question and answer). The Liquid loop iterates the metaobject and emits one Question per entry.

JSON-LD FAQPage from Shopify metaobjects — fires on the FAQ hub page only
 <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "FAQPage", "@id": "{{ shop.url }}{{ page.url }}#faqpage", "inLanguage": "{{ shop.locale }}", "mainEntity": [ {%- for entry in shop.metaobjects.faq_entries.values -%} { "@type": "Question", "name": "{{ entry.question | escape }}", "acceptedAnswer": { "@type": "Answer", "text": "{{ entry.answer | strip_html | escape }}" } }{%- unless forloop.last -%},{%- endunless -%} {%- endfor -%} ] } </script> 

Validation post-2026-05-07

Run validation against validator.schema.org rather than Google's Rich Results Test. Rich Results Test FAQ support ends June 2026; after that, the tool returns a 'this rich result type is no longer supported' message for FAQ. Schema.org Markup Validator continues to parse FAQPage as a valid type indefinitely. Expected output: FAQPage detected, Question array parsed, zero structural errors.

For the brief overlap window (May–June 2026), the Rich Results Test will still parse FAQPage but report ineligibility for the rich result. That ineligibility note is not an error — it's a confirmation that the markup is valid but the SERP feature is gone for your domain class.

Shopify gotchas on FAQPage

Four gotchas. First: emitting FAQPage on pages where FAQ is not the dominant content — Google's policy historically penalised this and AI engines now treat such blocks with suspicion. Second: forgetting | escape on entry.question and entry.answer (apostrophes and quotes break the JSON). Third: emitting Answer.text with raw HTML from a rich-text metaobject field, breaking the JSON unless you pipe through | strip_html. Fourth: emitting FAQPage on every page of the FAQ section instead of consolidating to one FAQ hub page — duplicate FAQPage entities across the site dilute extraction confidence.

A fifth gotcha specific to Shopify Knowledge Base usage: the app's auto-generated FAQs are stored as metaobjects, but the metaobject reference path may differ per store (e.g. shop.metaobjects.knowledge_base.values vs shop.metaobjects.faq.values vs a custom namespace). Verify the actual metaobject reference in the Shopify admin (Content > Metaobjects) before hard-coding the Liquid path.