Skip to main content
AI GuidesTechnical indexing

FAQ schema for Shopify: the 2026 setup guide

FAQPage JSON-LD is the single highest-leverage schema for AI citations on Shopify — a 3.2× citation lift when paired with top-10 organic. Here is the implementation, validation, and avoidance list.

Harry Parker with Hiren Bhuva

Head of AI Research, Surfient

9 min
schema-stack.svg
FAQ schema for Shopify: the 2026 setup guideProduct"@type": "Product"validOffer"@type": "Offer"validReview"aggregateRating": 4.8validFAQPage"@type": "FAQPage"validBreadcrumbList"itemListElement": […]valid

Why FAQPage schema is the best ROI schema for GEO

AI engines extract FAQ pairs directly as answer passages. A clean FAQPage pre-chunks your content exactly the way retrievers want to read it.

FAQPage schema is the schema that most directly mirrors how AI engines consume content. A retriever does not want to parse a 2000-word product description to find the shipping policy — it wants a pre-chunked question-answer pair it can lift as a quoted passage. FAQPage JSON-LD hands the engine exactly that structure, which is why the measured citation lift from adding it is consistently higher than from any other schema type short of complete Product + AggregateRating coverage.

3.2×

average citation lift across ChatGPT, Perplexity, and Gemini for Shopify PDPs with FAQPage schema paired with top-10 organic rank

Surfient citation panel study, 214 Shopify stores, Q1 2026 — comparing pre-and-post citation counts over 28-day windows.

The lift holds across engine families. ChatGPT Search prefers FAQPage pairs for shipping and returns queries; Perplexity quotes them for sizing and materials; Gemini fan-out uses them to answer sub-queries the classic PDP text misses. Adding FAQPage to your top 20 PDPs is the single schema move with the shortest distance between 'ship it' and 'see citations'.

layer-stack.svgInfographic
The indexing stack from retrievers down to Shopify source data — every layer needs to line up for a citation to land.INDEXING STACKAI RetrieversGPTBot · ClaudeBot · PerplexityBotLAYER 1Context Surfacellms.txt · llms-full.txtLAYER 2Feed Surfaceai-sitemap.xml · products.ndjsonLAYER 3Page SurfaceProduct JSON-LD · FAQPage · HowToLAYER 4Shopify SourceProducts · Metafields · CollectionsLAYER 5FLOW
Figure · layer stackThe indexing stack from retrievers down to Shopify source data — every layer needs to line up for a citation to land.

What the FAQPage JSON-LD block actually looks like

Strictly typed JSON-LD with @type FAQPage and an array of Question objects, each with an acceptedAnswer. The spec is tiny.

FAQPage JSON-LD is deliberately minimal. A top-level FAQPage object, a mainEntity array of Question objects, and each Question carries a name (the question) and an acceptedAnswer with a @type Answer and a text field (the answer). That is the whole spec. Google, OpenAI, Anthropic, and Microsoft all parse this shape; there is no engine-specific variation.

{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "How long does shipping take?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "We ship all orders within 48 hours of purchase. US orders arrive in 3-5 business days via UPS Ground; international orders arrive in 7-14 business days via DHL."
      }
    },
    {
      "@type": "Question",
      "name": "What is the case size of the Kairos Chronograph?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "The Kairos Chronograph has a 42mm stainless steel case, a 13mm thickness, and a 22mm lug width. It fits wrists from 6.5 to 8.5 inches."
      }
    }
  ]
}

The Liquid implementation on Shopify product templates

A metafield-driven snippet read from a product's FAQ metafield, rendered in the theme's product.liquid template. Ships on all Shopify tiers.

The cleanest implementation on Shopify is a product metafield storing your FAQ as a JSON array, a Liquid snippet that reads it, and a script tag in product.liquid that renders the JSON-LD. This gives you per-product FAQ content without editing theme code for every product and without depending on an app. Total implementation time is roughly 30 minutes on a standard Shopify theme.

Step 1: Create the metafield

In Shopify Admin → Settings → Custom data → Products, add a new metafield. Namespace: custom, key: faq, type: JSON. This becomes the storage for your FAQ array, editable per product from the product detail admin page.

Step 2: Add the snippet

{% comment %}
  snippets/faq-schema.liquid — renders FAQPage JSON-LD from product.metafields.custom.faq
{% endcomment %}
{%- assign faq_data = product.metafields.custom.faq.value -%}
{%- if faq_data and faq_data.size > 0 -%}
  <script type="application/ld+json">
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "mainEntity": [
      {%- for entry in faq_data -%}
        {
          "@type": "Question",
          "name": {{ entry.question | json }},
          "acceptedAnswer": {
            "@type": "Answer",
            "text": {{ entry.answer | json }}
          }
        }{%- unless forloop.last -%},{%- endunless -%}
      {%- endfor -%}
    ]
  }
  </script>
{%- endif -%}

Step 3: Include it in product.liquid

In your theme's templates/product.liquid (or sections/main-product.liquid on Online Store 2.0 themes), add the include just before the closing tag of the template: {% render 'faq-schema' %}. The snippet handles the empty-FAQ case automatically, so pages without FAQ data do not emit an empty schema block.

Which questions to include on a Shopify PDP

5-8 shopper questions per product — the ones support actually answers, not the ones that sound good on paper.

The curation decision drives the citation lift. A fabricated FAQ full of generic questions performs worse than no FAQ at all — retrievers cross-check answers against review text and support responses, and a FAQ that contradicts a real customer review signals low quality. The high-signal questions are the ones your support team genuinely answers every week.

Shipping
How long does delivery take? What carriers do you use? Do you ship to [major regions]?
Returns
What is the return window? Who pays return shipping? How long do refunds take?
Sizing and fit
What size should I buy? How does this fit? What are the exact dimensions?
Materials and care
What is this made of? How do I care for it? Is it hypoallergenic / water-resistant / machine-washable?
Warranty and authenticity
What warranty is included? How do I verify authenticity? What if it arrives damaged?
Use cases
Is this suitable for [common use]? Can I use this with [adjacent product]? Is this good for [occasion]?

Four mistakes that silently break FAQPage schema on Shopify

Hidden answer text, mismatched content, nested FAQPage on policy pages, and rich-text bleed from the admin. Each one is easy to catch with the Rich Results Test.

The FAQPage spec is simple, but the Shopify admin makes it easy to break without noticing. These four failure modes account for most of the 'I added schema and nothing happened' cases we see on audits.

  1. 1Answer content hidden on the page. Google requires the FAQ content to be visible somewhere on the rendered page — if your metafield FAQ never renders for users, Google flags it as hidden content and drops the rich result. Render the FAQ visibly in an accordion.
  2. 2Schema content mismatched with visible content. If the metafield answer says 'ships in 2-3 days' and the visible page says 'ships within 1 week', the mismatch demotes both.
  3. 3Multiple FAQPage nodes on the same URL. Some Shopify themes have collection-level FAQ apps that emit a FAQPage in addition to your product-level one. Google respects only the first; the second can trigger a 'multiple main entities' warning in Search Console.
  4. 4Rich-text bleeding into the JSON. Shopify's rich-text metafield type stores HTML, not plain text — piping rich-text through to JSON without the `json` Liquid filter produces invalid JSON-LD. Always use the json filter, even on string values.

Where else FAQPage schema belongs on a Shopify store

Product pages are the highest-leverage surface, but shipping, returns, warranty, and FAQ pages themselves also benefit.

Product pages are the headline use case, but FAQPage schema lifts citations on any page where the content is naturally question-answer structured. The obvious candidates on a Shopify store are the dedicated FAQ page (if you have one), the shipping policy, the returns policy, and the warranty page. Each of these is a place where AI engines ask specific questions and want chunked answers.

  • Shipping policy page — wrap the page sections in FAQPage schema with questions like 'Do you ship internationally?' and 'How fast is expedited shipping?'.
  • Returns policy page — 'What is your return window?', 'Do you pay for return shipping?', 'How do I start a return?'.
  • Warranty page — 'What does the warranty cover?', 'How long does it last?', 'How do I submit a warranty claim?'.
  • About / FAQ page — the catch-all brand questions: 'Where are your products made?', 'Are your materials ethically sourced?', 'Do you offer gift wrapping?'.
  • Buyer-guide blog posts — each H3 question in the body can anchor a FAQPage Q&A pair.
FAQPage schema is the one place on a Shopify store where the implementation effort and the citation lift are almost exactly in the right ratio. It is the first schema I tell a merchant to ship — and often the last one they need to worry about.
Harry Parker, Head of AI Research at Surfient

Frequently asked questions

6

Pulled from the questions merchants ask us most often in advisory calls. Crawlers see these as FAQPage schema — the answers here match what appears in AI citations.

  • No. FAQPage schema is a theme-level Liquid implementation — a metafield for storage and a snippet for the JSON-LD render. An app compresses the setup and adds FAQ-generation from support patterns, but a manual implementation on a standard Online Store 2.0 theme takes roughly 30 minutes and works on every Shopify tier.

Free · 5 minutes · no signup

Ready to see your store's GEO score?

Run a free Surfient audit and see exactly what ChatGPT, Perplexity, Claude, Gemini, and Google AI Overviews are missing about your store — signal family by signal family.

0

GEO score

Engine readiness

0

Technical indexing

0

Content fit

0

Live example — your number is ready in about 90 seconds.

Keep reading

Browse all AI Guides