Great schema markup shares a specific set of traits regardless of page type: every property is accurate to what’s visibly on the page, entities reference each other instead of duplicating data, and the markup captures enough detail to actually earn a rich result rather than the bare legal minimum. The examples below walk through five common page types and show what separates markup that merely validates from markup that performs.
These are illustrative patterns drawn from the kind of work we do at Salterra, not copy-paste templates — the specific property values will always depend on your real content. But the structure and the reasoning behind each choice transfers directly to your own implementation.
A weak version of this markup lists LocalBusiness with just a name, address, and phone number. It validates. It also leaves enormous value on the table, because it stops at the bare required fields instead of the properties that actually influence how the listing appears and how confidently AI systems can describe the business.
A strong version uses the more specific subtype — ProfessionalService, Plumber, Dentist, whatever accurately matches the business — rather than the generic LocalBusiness type. It adds geo coordinates, structured openingHoursSpecification (not a plain text string), a priceRange, an areaServed array naming the specific cities or regions covered, and a genuine aggregateRating pulled from real, verifiable reviews with the review count included. It also nests a sameAs array linking to verified profiles — Google Business Profile, Facebook, industry directories — which strengthens the entity’s credibility signal across the web, not just on this one page.
The difference in outcome: the weak version might validate cleanly and never earn a rich result because Google has nothing distinctive to display. The strong version is eligible for star ratings in the SERP and gives AI Overviews enough structured detail to accurately summarize the service area, hours, and reputation without guessing from unstructured page copy.
The most common mistake we see with Review and AggregateRating markup is not a technical error — it’s an accuracy problem. Sites add star ratings to product or service pages that have no visible reviews on the page itself, which violates Google’s structured data guidelines and risks the rich result being suppressed entirely, or worse, a manual action for misleading markup.
A great example does the opposite: the visible page shows genuine customer reviews — name, date, review text, and star rating — and the schema simply describes what a visitor can already see and verify. The AggregateRating block includes an accurate ratingValue, reviewCount, and bestRating/worstRating scale, and each individual Review nested underneath references the author as a real name, not “Anonymous” or a placeholder.
A passable FAQPage implementation has a mainEntity array of questions and answers that technically validates. A great one is built from questions that visitors would genuinely ask — often sourced directly from real customer emails, sales call transcripts, or “People Also Ask” data — with answers that are complete and self-contained, not a one-line teaser that pushes the reader to click through for the real answer.
The strongest FAQ examples we build keep the visible on-page Q&A content and the schema in lockstep — the schema’s acceptedAnswer text matches, word for word or very close to it, what’s actually rendered on the page. Google’s guidelines are explicit that FAQ schema must reflect visible content, and mismatches are one of the fastest ways to lose eligibility for the rich result even when the JSON itself is syntactically flawless.
Applying FAQPage markup to every blog post sitewide, regardless of whether the post actually contains a genuine Q&A section, is a pattern Google has cracked down on. It used to be a cheap way to gain SERP real estate; now overuse without genuine Q&A content is treated as a spam signal. Reserve FAQ schema for pages that earn it with real, substantive question-and-answer content.
A thin Course implementation includes just a name and description — technically valid, practically invisible in terms of differentiation. A strong example nests a hasCourseInstance array describing the actual delivery format (self-paced, instructor-led, in-person cohort), courseMode, and where applicable, real offers with accurate pricing and currency.
It also references the provider as the same Organization entity used sitewide, via @id, rather than duplicating a fresh Organization block on every course page — a pattern that keeps the entity graph coherent across dozens of course listings instead of creating dozens of slightly different, unlinked “organizations” in Google’s eyes. Where the course has a defined length, timeRequired uses proper ISO 8601 duration format rather than a plain-text guess, which is the single most common formatting error we catch in course schema audits.
This is the example category we care about most at SEO University, because it directly supports the credibility signals Google’s quality raters are trained to look for. A weak implementation lists author: “Admin” or omits the author property entirely on expertise-driven content. A strong implementation gives every substantive article a genuine Person entity: full name, a url pointing to a real bio page, a jobTitle or credential where relevant, and a sameAs array linking to verifiable profiles like LinkedIn.
That Person entity should also connect back to the site’s Organization block, ideally via worksFor or a similar relational property, so the entity graph shows a named, credentialed human tied to a named, verifiable business — exactly the kind of structured signal that helps both traditional quality evaluation and AI-mediated citation decide whether your content is trustworthy enough to surface.
Across all five categories, the pattern repeats. Weak schema hits the bare minimum required properties and stops. Strong schema adds the recommended properties that unlock richer display, keeps every value accurate to visible page content, and connects entities to each other instead of treating each page as an island.
Pull up your top five pages by organic traffic and run each through the Rich Results Test. For each one, ask three questions: does the schema use the most specific type available, does every property value match something a visitor can actually see and verify on the page, and does any entity in this block also appear elsewhere on the site — if so, is it referenced consistently rather than duplicated with drift?
Most sites pass the technical validation check and fail the specificity and consistency checks. That gap — valid but generic — is exactly where the difference between passable and great schema markup lives, and it’s the gap worth closing first before adding schema to new page types.
Great schema uses the most specific applicable type, includes recommended (not just required) properties, keeps every value accurate to visible page content, and references shared entities like Organization or Person consistently across the site rather than duplicating them with slight variations.
No — Google's guidelines require that Review and AggregateRating markup reflect content that is actually visible and verifiable on the page; adding ratings without visible supporting reviews risks the rich result being suppressed or, in more serious cases, a manual action for misleading structured data.
No — reserve FAQPage markup for pages with genuine, substantive question-and-answer content that's actually visible on the page; applying it sitewide regardless of content, purely to chase SERP real estate, is a pattern Google has specifically cracked down on.
Referencing a canonical Organization or Person entity by @id across pages keeps the entity consistent and builds a coherent knowledge graph that search engines and AI systems can resolve confidently; repeating slightly different versions of the same entity on different pages fragments that signal instead of reinforcing it.
Entering timeRequired as a plain-text guess like "4 hours" instead of the required ISO 8601 duration format (PT4H); it's a small syntax detail, but it's flagged as an invalid value by the Rich Results Test and is one of the most frequent errors caught in course schema audits.
Terry has 30+ years in software and SEO. He’s the founder of Salterra Digital Services and SEO Spring Training, host of the Roundtable SEO Mastermind, and lead instructor at SEO University — teaching the exact tactics his team uses on client work.
This guide is one lesson from the Advanced Schema course. Get every lesson, framework and checklist — plus the full 38-course catalog — inside SEO University.
Practitioner-focused training across the full digital marketing stack — from technical SEO to conversion optimization and the AI search era. By Salterra Digital Services, since 2011.