How do I add FAQ schema so AI assistants can quote me?

The rule that makes FAQ schema work: the markup and the visible page say the same words, and the words answer a question someone actually asks.

Three steps: write the questions your customers actually ask as headings on the page, answer each one plainly in the sentence underneath, and mirror those exact question-and-answer strings into one FAQPage JSON-LD block. The order matters — the visible copy comes first, the markup describes it. FAQ markup that says things the page does not is the kind of markup crawlers learn to distrust.

Why headings decide whether you can be quoted

Retrieval engines quote the passage under the heading that matches the question. A page that only says 'Pricing' in its <title> can be matched for a cost question, but there is no passage to extract; a page with the heading 'How much does it cost?' followed by a one-sentence answer hands the engine its quote. This is why our own pricing page carries its FAQ as question-shaped headings — and why yours should phrase headings in the words people type, not in label-speak.

The FAQPage block, and the one rule it obeys

The JSON-LD is a FAQPage node whose mainEntity is a list of Question items, each with an acceptedAnswer. Build it from the same strings the visitor reads — same questions, same answers, verbatim — so the two can never disagree. Then respect the two silent killers of all structured data: the block must be valid JSON (one trailing comma and crawlers discard it without telling you), and it must be in the served HTML, because markup injected by JavaScript is invisible to the crawlers that matter.

What FAQ schema will and will not do

It makes your answers quotable; it does not make an assistant choose you. Treat it as removing a structural handicap, not buying a placement. And keep it honest — questions no one asks, or answers that oversell, add markup without adding anything an engine wants to quote. Our free scan reads your structured data field by field and reports what is actually populated.

Straight answers

Do the markup and the visible text really have to match?

Yes, word for word. The FAQPage block describes the page; when the two diverge, the markup is claiming answers the page does not give. Build the JSON-LD from the same strings the visitor reads and the two cannot disagree.

Should the answers be long?

No — the first sentence should be the answer, complete on its own, with detail after it if needed. Engines extract passages, and a passage that answers in one sentence is the easiest thing on the web to quote.

Can I put FAQ schema on every page?

Put it on pages that genuinely answer questions, built from that page's own visible Q&A. A sitewide block repeated everywhere describes none of the pages it sits on.

How do I know my FAQ markup is valid?

It has to parse as JSON and be present in the served HTML. Our free scan reports malformed or empty structured data — a block that does not parse is silently discarded by crawlers, which is the failure mode you never see.

Related

Where does your site stand? The scan is free, takes about 60 seconds, and needs no account. It fetches your homepage exactly the way GPTBot, ClaudeBot and PerplexityBot do and tells you what they receive.