Skip to main content

FAQ JSON-LD Schema Markup for Ecommerce: Writing Product and Category FAQs and Checking the Output

admin10 min read
Online store shelf with question cards illustrating FAQ JSON-LD schema markup for ecommerce

You added questions to a product page, or you are about to, and someone told you that FAQ JSON-LD schema markup for ecommerce will give you expandable answers under your listing in Google. That is no longer the case. Google Search Central’s updates log records that FAQ rich results stopped showing in Search on May 7, 2026. FAQPage is still a valid Schema.org type, so the markup can still describe genuine questions on your pages in a tidy, machine-readable way, but it should not be sold to yourself or a client as a way to win a special result.

This guide covers which store pages deserve FAQs, how to write the visible answers, a small hypothetical JSON-LD example, how to add it without duplicates, and how to check the published output.

Ecommerce store owner sorting question and answer cards to plan FAQ JSON-LD schema markup

What FAQ JSON-LD schema markup for ecommerce can and cannot do now

A FAQPage describes a web page that presents one or more frequently asked questions. In JSON-LD (JavaScript Object Notation for Linked Data, a block of structured data placed in a script element), the page has a mainEntity list of Question items. Each question has a name and an acceptedAnswer whose text holds the answer your site wrote.

Here is the correction that matters. Google Search Central recorded the FAQ rich result deprecation on May 8, 2026, after FAQ results stopped appearing in Search on May 7, 2026, and it removed its FAQ rich-result documentation on June 15, 2026. Older articles, and some tool pages, still describe expandable FAQ snippets. Follow the dated Google announcement instead. I cannot promise any ranking or click-through change from this markup.

What remains is a clean description of content that is already visible on the page. Three checks are easy to confuse: valid JSON syntax, correct Schema.org vocabulary, and eligibility for a particular Google feature. A snippet can pass the first two and still earn nothing in Google Search. For the wider picture of what structured data can and cannot do on a store, read my guide to schema markup benefits for Shopify SEO.

Three folders representing product, category and shipping pages that may need FAQ content

Choosing product, category and shipping FAQs worth marking up

There is no Google rule that says a store must have FAQs on particular page types. This is editorial guidance: add a question block only where the page genuinely answers questions that buyers have.

  • Product pages: product-specific buying or use questions, such as compatibility, care instructions, sizing guidance or what is included in the box.
  • Category pages: real questions about choosing within that category, such as how to pick between two styles of the same item.
  • Shipping and returns pages: policy questions such as return windows, who pays for return postage, or how long processing takes.

Skip boilerplate repeated across every product, answers unrelated to the page, sales pitches disguised as answers, and unsupported claims about stock, price, delivery or returns. There is no sourced ideal number of questions. Use as many distinct, useful questions as the page truly answers, and stop there.

To find candidate questions, check your customer emails and support inbox first. The Question Analyzer turns a topic into People Also Ask style questions across 14 question types, which is useful for brainstorming, but those are suggestions, not proof that your customers ask them.

Keep product search features separate in your mind. Product markup has its own requirements, and Google Search Central recommends concentrating product markup on individual product pages rather than category listings. If you need that markup, the Product Schema Generator builds Product JSON-LD with price, availability, brand and SKU. FAQ markup does not replace it.

Writing visible answers and a small FAQPage JSON-LD example

Write the visible answer first, in plain sentences, then mirror it in the markup. Visitors should be able to read every question and answer in the page content, and the JSON-LD must say the same thing. Keep each answer to one topic. If an answer drifts into two topics, split it into two questions.

The example below is hypothetical: the store, the mug and the return policy are invented, so replace them with facts from your own site. It contains two questions.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Is the Trail Mug 12 oz dishwasher safe?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Yes. Place it on the top rack and avoid abrasive pads."
      }
    },
    {
      "@type": "Question",
      "name": "Can I return an unused mug?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Unused items can be returned within 30 days. See the returns page for the full steps."
      }
    }
  ]
}
</script>

The FAQ Schema Generator builds this structure from the question and answer pairs you type. It includes a pair only when both boxes contain text, so check that the item count in the output matches the number of complete pairs. Keep answers as plain text rather than pasting tables or long lists.

Check what the generator copies before you paste. The output already contains the script element, so wrapping it inside a second script element breaks the implementation. Paste the complete snippet once.

Adding the snippet without template duplication

Templates and apps cause most of the trouble. A theme may output FAQ markup while an app adds a second block, or a snippet may be pasted into a shared product template and repeat the same questions on every product. Use these steps to keep it under control.

  1. Decide the single source of the FAQPage markup for each page type: the theme, one app, or a manual snippet. Disable the others.
  2. Place one FAQPage JSON-LD block per page in the head or body. Other schema types can sit alongside it, and product pages normally carry separate blocks for Product and breadcrumbs, so do not remove valid Product markup while cleaning up FAQ duplicates. Google Search Central’s structured data introduction treats JSON-LD as a script that can sit in either location.
  3. For product templates, generate the markup from fields that hold each product’s own questions. If a product has no FAQs, output nothing rather than an empty or generic block.
  4. Keep the visible FAQ and the JSON-LD driven by the same data where your platform allows it, so they cannot drift apart.
  5. If a script injects the markup in the browser, plan to inspect the rendered page too. Google Search Central’s JavaScript structured data documentation says dynamically generated structured data can be processed, subject to rendering limitations, so do not assume either outcome.

Never include a question in the markup that is not visible to visitors on that same page.

Checking FAQ JSON-LD schema markup for ecommerce pages after publishing

Test the published URL, not the draft in your editor. Work through these checks in order.

  1. Open the live page, use your browser’s View Page Source, and search for application/ld+json and a distinctive phrase from one of your questions. The View Page Source tool does the same for any public URL, lets you search the raw HTML and lets you copy or download it.
  2. Run the exact public URL through the Spider Simulator. Check its Source tab for the script and its Text tab for the visible answer. This shows what was returned on that request. It does not prove exactly what Google indexed, and it does not prove Google cannot see JavaScript-injected content.
  3. If the snippet appears only after scripts run, inspect the rendered HTML with Google’s URL Inspection tool or the Rich Results Test.
  4. Paste the code, or fetch the URL, in the Schema Markup Validator to confirm the block parses and that FAQPage has a mainEntity. You can also use the schema.org validator at validator.schema.org to check the vocabulary and parsed properties.
  5. Use Google’s Rich Results Test to inspect the rendered page and any rich-result types Google currently supports. Do not read it as certifying FAQ rich-result eligibility, because Google no longer offers that search appearance.

A passing validator result does not tell you whether an answer is truthful, visible, current or useful. Those remain editorial checks you make yourself.

Keeping answers in sync when price or policy changes

Stale answers are the quiet risk with store FAQs. A returns window changes, a shipping partner changes, and the markup still says the old thing. These are implementation recommendations, not measured results.

  • Assign ownership: name who is responsible for shipping, returns, price and availability statements.
  • Avoid volatile facts in answers: point to the live policy or product page for current prices and delivery times rather than copying numbers into many FAQ answers.
  • Trigger a review: when a policy or product record changes, list the pages that quote it and review each one.
  • Update both layers: change the visible answer and the JSON-LD together, then retest the published URL.

If your markup comes from one content field, a single edit updates both. If it is hand-pasted, keep a simple spreadsheet of which pages carry which questions.

A short troubleshooting checklist for broken FAQ markup

When the output looks wrong, check these causes before changing anything else.

  • Two blocks on one page, usually a theme and an app, each emitting its own FAQPage.
  • The same snippet copied into every product while the visible answers differ.
  • A question without an answer, or an answer without a question.
  • Malformed JSON from curly quotes, unescaped double quotes inside text, or a trailing comma. Paste the code into the JSON Formatter & Validator to locate the syntax error.
  • A script wrapped inside another script element.
  • FAQ content or JSON-LD that loads only in a browser and is absent from the fetched or rendered page you tested.

Fix one cause at a time and retest the published URL each time, so you know which change worked.

Frequently asked questions

Does FAQ schema still produce rich results in Google?

No. Google Search Central records that FAQ rich results stopped showing in Search on May 7, 2026, and Google removed the FAQ rich-result documentation on June 15, 2026. FAQPage remains a Schema.org type, but I would not expect any special appearance or promise gains.

Which ecommerce pages deserve an FAQ block?

Pages that genuinely answer real questions: product pages with product-specific buying or use questions, category pages with real selection questions, and shipping or returns pages with policy questions. This is editorial guidance, not a Google requirement.

How many questions are reasonable?

There is no sourced ideal number. Include as many distinct, useful questions as the page genuinely answers, all visible to visitors, and avoid padding the list to reach a target.

Can I reuse the same FAQ on every product page?

Avoid it. Repeating boilerplate across products adds little for visitors and often leaves markup that does not match each page. Use questions specific to each product, and output nothing where a product has none.

What breaks the markup when templates or apps inject it?

Common causes are duplicate blocks from a theme and an app, a snippet copied into every product, incomplete question and answer pairs, malformed JSON from quotation marks, a script wrapped inside another script, and content that loads only in a browser.

Does passing the Rich Results Test mean my FAQ markup is eligible for a Google feature?

No. The test inspects the rendered page and currently supported rich-result types, and Google no longer offers an FAQ search appearance. A valid result also says nothing about whether answers are accurate, visible or current.

How do I keep answers in sync with price or policy changes?

Assign an owner for shipping, returns, price and availability statements, drive the visible answer and JSON-LD from the same content source where you can, avoid copying volatile numbers into many answers, and retest the published URL after each change.

Next steps

FAQ JSON-LD schema markup for ecommerce is now a way to describe honest questions on product, category and shipping pages, not a route to a special Google result. Write answers visitors can read on the page, mirror them in one JSON-LD block, and test the published URL in source, crawler view and validators. Then give someone ownership of the answers so they change when your policies do.

Related tools and resources on AllEasySEO:

Sources and further reading

Try these free SEO tools

Free, browser-based and no signup needed.

See all free SEO tools