How to Add FAQ Schema Markup to Your Website
Want better SEO results question related keywords? Read our guide on how to add FAQ schema markup to gain more authority.
- Date published
- Date modified
- 08/02/2023
- 14/02/2023(updated)

What are FAQ Schema Markup?
FAQ Schema is structured data markup that can be added to a webpage's code which contains a list of questions and their corresponding answers. This information tells search engines about that frequently asked questions (FAQs) exist on the page (if they do), and might enable FAQ rich snippet.
How to Add FAQ Schema Markup?
Structured data for FAQ content can be deployed to your website in 3 steps:
- Your content meets Google guidelines for FAQPage
- Creating Json-Ld Markup Code With Questions and Answers
- Adding the schema markup to your webpage
Step 1: Your Content Meets Google Guidelines for FAQPage
Google has guidelines you need to follow in order to enable rich results for FAQ.
Their specifications can be boiled down to the following:
- Content is submitted by the website itself
- It includes whole question and answer
- The answer and question must be visible on page
- There's no way for users to submit alternative answers
- It's not used for advertising purposes
- Don't use obscene or offensive language
Note: Questions and answers need to visible on the page. It can be within a FAQ section of the page, but it's not required. It can generally be part of your text.
Step 2: Creating JSON-LD Markup Code With Questions and Answers
All FAQ schema markups needs to have the following structured data properties:
Type | Required properties | Description |
---|---|---|
FAQPage | mainEntity | Question: An array of Question elements which comprise the list of answered questions that this FAQPage is about. You must specify at least one valid Question item. A Question item includes both the question and answer. |
Question | acceptedAnswer | Answer: The answer to the question. There must be one answer per question. |
Question | name | Text: The full text of the question. For example, "How long does it take to process a refund?". |
Answer | text | Text: The full answer to the question. The answer may contain HTML content such as links and lists. |
FAQ Schema Markup example:
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [{
"@type": "Question",
"name": "What is FAQ Schema?",
"acceptedAnswer": {
"@type": "Answer",
"text": "FAQ Schema is structured data markup..."
}
}, {
"@type": "Question",
"name": "Is FAQ Schema good for SEO?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes, FAQ schema markup is good for SEO..."
}
}]
}
(truncated for visual purposes)
The most common structured data formats are: Microdata, RDFa, and JSON-LD. Google recommend JSON-LD markup, so our recommendation is to use it:
We currently prefer JSON-LD markup. I think most of the new structured data that are kind of come out for JSON-LD first. So that's what we prefer.
- John Mueller (Google Search Advocate)
Examples above are using JSON-LD.
Step 3: Adding the Schema Markup to Your Webpage
Schemas can be deployed in primarily 3 different ways:
- Directly in your site's HTML
- Through a plugin
- With a third party solution
Directly in Your Site's HTML
Add your schema markup code inside a script tag. This tag is then added to either the head or body section of your HTML.
<html>
<head>
<title>Your page title</title>
</head>
<body>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
{YOUR FAQ STRUCTURED DATA}
}
</script>
</body>
</html>
Warning: Adding custom schema markup manually to each page takes time, so automate whenever possible. Especially FAQs can be hard to generate automatically, as questions and answers differ from page to page.
Simplified example with Javascript for a FAQ section:
const rows = [
{
question: "Some question text",
answer: "Some answer text",
},
{other rows...}
]
<div>
{rows.map(row => {
<div>
<h2>{row.question}</h2>
<p>{row.answer}</p>
</div>
})}
</div>
And I would use the same data provided in "rows" for FAQPage schema markup:
{rows.map(row => {
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [{
"@type": "Question",
"name": row.question,
"acceptedAnswer": {
"@type": "Answer",
"text": row.answer
}
}]
}
})}
Through a Plugin
If you're using content management system (CMS) with a rich ecosystem of plugins, chances are that you can find a plugin for deploying multiple schema markup types.
Wordpress, Shopify and Magento all for instance have a Yoast plugin available. This SEO plugin allows you to generate structured data for certain page templates, while others such as FAQ needs to be added manually. You could also use FAQ specific plugins such as "Quick and Easy FAQs".
These plugins give you the option to add a FAQ section in the page editor, and the schema markup comes along.
Example from Wordpress:

With a Third Party Solution
Last option is to use a remote tool for publishing schema markup to a webpage. A common one is using Google Tag Manager.
When you've created the correct markup code, you can insert it to a custom HTML tag in Tag Manager, then add a trigger for the specific webpage.

You can do some automation with GTM if the relevant data is available in the DataLayer.
metamanager SEO Ads Manager
Another solution is to use tools such as metamanager to add it sitewide.
After you've connected the platform to your website, you'll get all URLs displayed in a table. Select which page you want to deploy schema markup on fill in the relevant data and then publish.

metamanager is able to use DataLayer variables or feed data to automate schema markups.
This tool only adds schema markup and not the FAQ section, but FAQPage can be applied to any page as long as it contains question and answer related content.
"Our experts can help you get schema markup implemented. Request a talk if you want to get started."
