If your site puts the same Q&A markup on everything with a question mark, some of it is probably wrong. Google’s rules for Q&A structured data come down to one question: who wrote the answer?
Answers your business wrote, like service-page FAQs and “we answered this question” pages, get FAQPage markup. Answers your customers or community can post, like a Q&A board or a user forum, are where QAPage and DiscussionForumPosting belong. In March 2026, Google added new properties to both of those types to clarify how comment threads are structured. That makes accurate markup more useful on real community pages. It doesn’t make either type a fit for pages you write yourself.
This guide is for busy operators who want the implementation to be simple and safe. Use the schema type that matches the page’s real content, and don’t force a page into a type it doesn’t fit.
What changed in March 2026
On March 24, 2026, Google added two properties to both its Q&A Page and Discussion Forum structured data: commentCount and digitalSourceType. Google’s stated reason was clearer comment-thread structure, so its systems don’t misread forum and Q&A content. Then, on May 7, 2026, Google stopped showing FAQ rich results in Search for every site.
Here’s the part you should care about for local service businesses:
commentCountseparates comments from answers. On a Q&A page,answerCountpluscommentCountshould equal every reply, so Google can tell answers from side comments. On a forum thread, it counts replies even when they aren’t all in your markup.digitalSourceTypelabels AI-made content. It marks a question, answer, post, or comment that was created by a trained model such as an LLM, or by a simpler automated process. If your board ever shows AI-drafted replies, this is how you label them.- Who these types are for didn’t change. QAPage is still one question per page that users can answer. DiscussionForumPosting is still only for posts your users wrote. Neither covers Q&A your business writes.
- FAQ rich results are gone. Google stopped showing them on May 7, 2026 and removed its FAQ rich result documentation in June. FAQPage is still valid Schema.org markup; it just no longer produces a search feature.
And while those changes sound technical, the decision is simple:
- If your business wrote the answer, use FAQPage.
- If the page is one question that users can answer, use QAPage.
- If the page is a multi-person thread your users started, use DiscussionForumPosting.
For local service businesses, the first case covers almost everything: service-page FAQs and answers to the questions buyers actually ask you. Most HVAC, plumbing, roofing, and electrical sites have no pages that qualify for QAPage or forum markup, and that’s fine. Don’t build community pages just to use the markup.
If you want the schema fundamentals first, start with the machine understanding layer chapter.
Three schema types service businesses should know
FAQPage — what it still does, what it no longer does
FAQPage is still valid Schema.org markup, but it no longer produces anything visible in Google Search. Google limited FAQ rich results to authoritative government and health sites in August 2023, then stopped showing them for every site on May 7, 2026. What’s left is parser hygiene: the markup labels the questions and answers you wrote, so any system reading your structured data can tell exactly what was asked and what you said. Don’t expect a rich result or a ranking lift from it.
Plain-English fit for local service businesses:
- Use FAQPage for questions and answers your business wrote: the FAQ section on a service page, a dedicated FAQ page, or a page that answers one customer question.
- Mark up only questions and answers that appear on the page, word for word.
- Don’t use FAQPage as your default template for “everything with a question mark.” If the page isn’t really Q&A, leave the markup off.
If your “FAQ” is really a customer question answered by your company, FAQPage is still the match. Google’s QAPage documentation lists “an FAQ page written by the site itself” as an invalid use.
QAPage — when to use it
QAPage is for a page built around one question that your users can answer, like a question on a community board or a support forum. Google requires that users can submit answers. A page with only your answer and no way for anyone else to add one doesn’t qualify, and neither does a page with several questions. The markup describes one question, the answers people posted, and which answer, if any, was accepted.
Plain-English use-case for local service businesses:
- A homeowner Q&A board on your site where anyone can post an answer, with one question per page.
- A support community where customers answer each other’s questions about equipment you install, and your techs answer too.
Not QAPage (use FAQPage instead):
- A service page section titled like “Do you do emergency repairs?” with your company’s answer.
- A page that republishes a customer’s question from a call, message, or review with your reply as the only answer.
- A blog post or how-to guide that answers a question.
Most local service businesses don’t run pages like this. If you don’t host a community board, you don’t need QAPage.
DiscussionForumPosting — when to use it
DiscussionForumPosting is for user-generated forum threads, where people share first-hand experience and reply to each other over time. Google says to use it only for posts your users wrote, not for content mainly written by the site owner or its agents. If a forum is mostly questions with answers, Google recommends QAPage instead. The schema carries the post’s author, date, and text, plus a comment array for the replies.
Plain-English use-case for local service businesses:
- A service-area community thread a homeowner started, where neighbors and your team reply over time.
- A customer community where people compare experiences, such as a first year with a heat pump.
Not DiscussionForumPosting:
- A blog post or article your business wrote, even if it has comments.
- A page of customer reviews with your replies. Reviews aren’t forum posts, and Google lists user reviews about a product as an invalid use.
For most HVAC, plumbing, roofing, and electrical businesses, this is as rare as QAPage. Use it only when your users truly start threads and reply to each other.
FAQPage example for a service-page FAQ
Below is a realistic example for a plumbing business. The emergency-service page has an FAQ section written by the business, so the markup is FAQPage.
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Do you have emergency plumbing hours for burst pipes on weekends?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes. If you have a burst pipe or active leak, call us anytime. Our dispatch team will route your request, and we offer same-day service when a technician is available. If the leak is in an unsafe area, we can advise on immediate shutoff steps while you wait for the first available appointment."
}
}
]
}
Operator notes:
- The question and answer appear word for word in the page’s visible FAQ section.
mainEntityis a list. Add oneQuestionfor each question in the section, all in one FAQPage block per page.- Your business wrote the only answer and visitors can’t add their own. That’s exactly why this is FAQPage, not QAPage.
If you’re answering the questions buyers actually ask you, this is the markup you want. Put each answer in the FAQ on the page where that buyer is deciding.
QAPage example for a local service business
Here’s what a valid QAPage looks like for a plumbing business that runs a homeowner Q&A board where anyone can post an answer. The page is one homeowner’s question and the answers people posted. The asker marked the plumber’s answer as accepted.
{
"@context": "https://schema.org",
"@type": "QAPage",
"mainEntity": {
"@type": "Question",
"name": "Why does my water heater make a popping sound?",
"text": "Our 8-year-old gas water heater started popping and rumbling while it heats. What causes that?",
"answerCount": 2,
"datePublished": "2026-05-01T09:14:00-07:00",
"author": {
"@type": "Person",
"name": "Dana K.",
"url": "https://www.example.com/community/members/dana-k"
},
"acceptedAnswer": {
"@type": "Answer",
"text": "Popping and rumbling usually means sediment has built up on the bottom of the tank. Water trapped under it boils and pops as the burner heats. Flushing the tank often quiets it. If the noise continues after a flush, or you see water around the base, have it inspected.",
"datePublished": "2026-05-01T11:02:00-07:00",
"url": "https://www.example.com/community/questions/water-heater-popping#answer-2",
"upvoteCount": 14,
"author": {
"@type": "Person",
"name": "Martin Reyes",
"url": "https://www.example.com/community/members/martin-reyes"
}
},
"suggestedAnswer": [
{
"@type": "Answer",
"text": "Ours did the same thing last winter. Flushing the tank fixed it for us.",
"datePublished": "2026-05-01T10:20:00-07:00",
"url": "https://www.example.com/community/questions/water-heater-popping#answer-1",
"upvoteCount": 3,
"author": {
"@type": "Person",
"name": "Luis P.",
"url": "https://www.example.com/community/members/luis-p"
}
}
]
}
}
Operator notes:
- Anyone can post an answer on this page. That’s what makes it eligible. Without that, use FAQPage.
answerCountis required. It counts every answer, including any on later pages that aren’t in the markup.- Mark an answer as
acceptedAnsweronly if the page shows it as accepted by the asker, a moderator, or votes. Other answers go insuggestedAnswer. - One question per page. The page is about that question and its answers.
DiscussionForumPosting example
Here’s a service-area community thread using DiscussionForumPosting. A homeowner started it, another homeowner replied, and the plumber joined in.
{
"@context": "https://schema.org",
"@type": "DiscussionForumPosting",
"headline": "Slow drains every summer in older homes: what’s worked for you?",
"text": "We get slow drains every July in our 1970s house. What have other homeowners here tried before calling someone out?",
"url": "https://www.example.com/community/threads/summer-slow-drains",
"datePublished": "2026-05-03T08:30:00-07:00",
"author": {
"@type": "Person",
"name": "James W.",
"url": "https://www.example.com/community/members/james-w"
},
"comment": [
{
"@type": "Comment",
"text": "Same here. Cleaning out the P-trap under the bathroom sink fixed ours for a few months.",
"datePublished": "2026-05-03T12:10:00-07:00",
"author": {
"@type": "Person",
"name": "Priya S.",
"url": "https://www.example.com/community/members/priya-s"
}
},
{
"@type": "Comment",
"text": "A lot of the time it’s a mix of hair/soap buildup and minor sediment. Start with a plunger for toilets, check the P-trap under the sink, and avoid chemical cleaners if you suspect roots. If water backs up after basic cleaning, schedule an inspection so we don’t miss a bigger issue.",
"datePublished": "2026-05-04T09:45:00-07:00",
"author": {
"@type": "Person",
"name": "Ava Thompson",
"url": "https://www.example.com/community/members/ava-thompson"
}
}
]
}
Operator notes:
- A homeowner started this thread and other people replied. Your team can join in, but the thread is user-generated, which is what Google requires.
- The post and every comment carry
author,datePublished, andtext. Google requires all three. - The thread is people comparing experiences, not one question waiting for a best answer. If your board is mostly questions with answers, use QAPage for those pages instead.
If a page is mostly your own content, like a sales pitch or an article with a few comments, don’t force it into DiscussionForumPosting. Google limits it to posts your users wrote.
Where to put each type
Use a page-level mapping. Don’t decide the schema type first. Decide based on what the page actually contains and who wrote the answers.
Service pages
- Best fit: FAQPage for the questions and answers your team wrote. One FAQPage block can hold every question in the page’s FAQ section.
- Example sections:
- Emergency hours
- Warranty coverage
- What to do when a furnace won’t light
- How fast you can arrive for storm damage
- Avoid: QAPage on service pages. Yours is the only answer and customers can’t add their own, which Google lists as an invalid use. And don’t split a solid FAQ section into one-question pages to fit a schema type.
Customer-question pages
- Best fit: FAQPage. A question you collected from calls, messages, or reviews is still answered by you, so it’s Q&A your business wrote.
- Typical workflow: capture a real question customers ask (calls, messages, or reviews), answer it in the FAQ on the matching service page or your FAQ page, and mark it up with FAQPage.
- If you’re managing the process, pair it with the workflow in the AI Answer Readiness System.
Review-response and community pages
- A page that shows a customer review and your reply isn’t a Q&A page in Google’s sense. Don’t mark it up as QAPage or DiscussionForumPosting. If the review raised a question worth answering, answer it in the FAQ on the matching service page.
- If you host a community board where users answer one question per page, use QAPage.
- If the page is a multi-comment thread your users started, use DiscussionForumPosting.
- Don’t mix the two in the same URL. Pick one structure that matches the reader experience.
Implementation checklist
- Match the schema type to who wrote the answers. FAQPage = Q&A your business wrote. QAPage = one question users can answer. DiscussionForumPosting = a thread your users started, with replies.
- One Q&A type per page. Don’t stack FAQPage, QAPage, and DiscussionForumPosting on the same URL. Your LocalBusiness and breadcrumb markup can stay alongside it.
- Validate before you ship, and again after edits. Use the Rich Results Test for QAPage and DiscussionForumPosting. Google dropped FAQ support from that tool in June 2026, so check FAQPage with the Schema Markup Validator (validator.schema.org).
- Use real names, not placeholders. If you don’t want Martin Reyes on the page, don’t put “Martin Reyes” in the JSON-LD. The markup should reflect the on-page authorship.
- Include author and date fields where Google asks for them. On QAPage and DiscussionForumPosting, give each question, answer, post, and comment its
authoranddatePublished. Google requires both on forum posts and comments. - Link the markup to the source page content. In FAQPage and QAPage, every question and answer in the markup should match the visible text word for word. In DiscussionForumPosting, the headline, post text, and comments should match the thread.
- Keep answers truthful and operational. Emergency hours, availability, and service boundaries should be accurate. Structured data will make your claims easier to understand and cross-check.
Common mistakes
- Stuffing fake Q&As into the markup. If your site doesn’t actually show the same question and answer in plain text, the markup becomes a mismatch. Make the content real, then mark it up.
- Using QAPage for Q&A your business wrote. If yours is the only answer and customers can’t post their own, QAPage doesn’t fit. Google’s guidelines rule it out. Use FAQPage.
- Mixing Q&A types on the same page. Pick FAQPage, QAPage, or DiscussionForumPosting based on who wrote the answers. Don’t add a second type “just in case.”
- Missing author and datePublished on forum and Q&A markup. Google requires them on DiscussionForumPosting posts and comments and recommends them on QAPage questions and answers. Use dates that match what the page shows.
- Using Q&A schema for marketing copy. Google’s QAPage guidelines rule out advertising, and forum markup is for posts your users wrote. If the page is mostly promotional, none of these types fit.
- Expecting a rich result from FAQPage. Google stopped showing FAQ rich results on May 7, 2026. Judge FAQPage by whether it matches your page, not by click-through rate.
Bottom line
In March 2026, Google added commentCount and digitalSourceType to Discussion Forum and Q&A Page markup to clarify comment-thread structure. In May, it stopped showing FAQ rich results. For local service businesses, the practical play is simple: use FAQPage for the Q&A your team writes, including service-page FAQs and answers to customer questions, and expect clean structure, not a rich result. Use QAPage only for one-question pages your users can answer, and DiscussionForumPosting only when your users truly start multi-participant threads.