Schema Markup Mistakes That Cost You Rich Results (And How to Fix Them)

The schema markup mistakes that cost you rich results - self-serving reviews, NAP mismatches, invisible content, stale JSON-LD - and how to fix each one.

# Schema Markup Mistakes That Cost You Rich Results (And How to Fix Them) Structured data is one of the few SEO levers where you can hand Google a perfectly formatted answer and still get nothing for it. Rich results — stars, FAQs, breadcrumbs, business details, product pricing — are earned, not guaranteed, and most sites that implement schema make at least one of a handful of common mistakes that either disqualify the markup or, worse, actively hurt credibility with search engines. This guide walks through the schema mistakes we see most often on small and mid-sized business sites, why each one costs you rich results, and exactly how to fix them. No code-heavy theory — just the failure modes and the repairs. ## Quick Primer: How Google Decides to Award a Rich Result When Googlebot crawls a page, it parses any JSON-LD (or microdata/RDFa) you've embedded and checks it against the requirements for each rich result type. Three gates must all pass: 1. **Validity.** The markup parses: required properties present, types correct, no syntax errors. This is what Google's [Rich Results Test](https://search.google.com/test/rich-results) checks. 2. **Eligibility.** The page type matches the markup. An `Article` on a service page or `Product` schema on a business that doesn't sell products online will be read — and ignored. 3. **Policy compliance.** Even valid, eligible markup gets no rich result if it misrepresents the page. This is where most manual actions and silent suppressions come from. Most site owners only check gate 1. The money is lost at gates 2 and 3. ## Mistake 1: Marking Up Content That Isn't Visible on the Page The single most common disqualifier. Google's structured data policy requires that markup describe content a visitor can actually see. The classic violations: - FAQ schema for questions that don't appear anywhere in the rendered page - Review stars for ratings collected by a third party and never shown to visitors - `HowTo` steps that summarize a process the page doesn't actually lay out step-by-step The fix is straightforward: whatever you mark up must be present in the page's visible content. If you want FAQ rich results, add a genuine FAQ section to the page (real questions your customers ask, with your real answers) and mark *that* up. The schema is a description of the page, not a wish list. ## Mistake 2: LocalBusiness Schema With Missing or Contradictory NAP For local businesses, `LocalBusiness` (or a more specific subtype like `Plumber`, `Dentist`, or `Restaurant`) is high-value markup — but it only helps when the data agrees with everything else Google knows about you. Common failures: - **Phone format inconsistency.** The schema says `(602) 555-0148`, the site footer says `602.555.0148`, the GBP says `+1-602-555-0148`. Pick one canonical format (E.164 is the safe choice) and use it everywhere. - **Name stuffing.** `name: "Bob's Plumbing | Best Emergency Plumber in Phoenix"` — keyword stuffing in the business name field is a policy violation, not an optimization. - **Mismatched address.** If your schema address differs from your Google Business Profile address by a suite number or an abbreviation, you're diluting the entity match that local rich results depend on. Audit this once and you're done: schema, footer, contact page, and GBP must be character-for-character identical. ## Mistake 3: Self-Serving Reviews and Rating Markup `AggregateRating` on your own homepage describing your own business is one of the oldest tricks in the book, and Google explicitly excludes "self-serving" reviews for several rich result types — LocalBusiness and Organization being the prime examples. Your 4.9-star rating on your own site earns you nothing but a policy risk. What actually works: reviews hosted and displayed on third-party platforms your customers trust, and `AggregateRating` markup reserved for pages where the reviews are genuinely collected and displayed (product pages with visible customer reviews, for instance). If your five-star history lives on your GBP, the map pack will surface it — you don't need to (and can't legitimately) mirror it into your own sitewide schema. ## Mistake 4: One Giant Blob of Wrongly Nested Types Schema supports nesting: an `FAQPage` contains `Question`s, each containing an `Answer`; a `LocalBusiness` can contain `OpeningHoursSpecification`, `GeoCoordinates`, and `AggregateRating` (where policy allows). The mistake pattern is flattening everything into unrelated top-level blocks, or nesting the wrong things: - A `Product` nested inside a `LocalBusiness` on a services page - `Article` markup applied to a homepage (an article needs an author, a headline, and something to read — a homepage has none) - `BreadcrumbList` that doesn't match the visible breadcrumb trail or the URL structure Each rich result type should live on the page type it was designed for, and parent-child relationships should mirror the actual content hierarchy. When in doubt, less markup that's precisely correct beats more markup that's loosely adjacent to the truth. ## Mistake 5: Stale Markup After Redesigns Schema isn't fire-and-forget. Every redesign, plugin update, or template change can silently strip or alter your JSON-LD. We regularly audit sites whose markup worked two years ago and now contains: - Duplicate blocks (the old theme's schema *and* the new plugin's, competing) - Empty required fields (a migration dropped the `image` or `author`) - Markup referencing URLs that redirect or 404 Make a schema check part of your post-deploy routine. It takes two minutes with the Rich Results Test, and it catches regressions while they're still cheap. ## Mistake 6: Invalid Dates, Prices, and Enumerated Values Google validates specific fields against strict formats, and near-misses fail silently: - Dates as "next Tuesday" or "10/12" instead of ISO 8601 (`2026-10-12`) - Prices as "$199" instead of `199` with a separate `priceCurrency: "USD"` - Availability values that aren't from the official enumeration (`InStock`, `OutOfStock`, `PreOrder`) These are the errors the Rich Results Test flags with warnings — and warnings are not cosmetic. A warning on a required-for-enhancement property usually means no rich result, even when the markup technically parses. ## How to Audit Your Own Schema in 20 Minutes 1. **Test your five most important pages** (homepage, top service pages, contact) in Google's Rich Results Test. Note every error and warning. 2. **Cross-check LocalBusiness fields** against your GBP: name, address, phone, URL, hours. Fix any character-level mismatch. 3. **Confirm visibility.** For every FAQ, review, or rating marked up, verify the content exists on the rendered page — not just in the source. 4. **Remove what you can't support.** Deleting invalid markup is an improvement. A page with zero schema outranks a page with policy-violating schema that's been suppressed. 5. **Re-test after fixes** and watch Search Console's Enhancements reports over the following weeks — that's where awarded rich results actually register. ## The Compounding Value of Getting It Right Rich results won't reposition a page from position 8 to position 1 on their own, but they change what a listing *does*: stars and FAQ dropdowns occupy more screen space, pre-answer objections, and lift click-through on the impressions you already earn. For a local service business, that's the cheapest CRO available — the visitor is better qualified before the click. Schema is also one of the audit checks [SEO Done](https://seodone.ai) runs automatically, alongside Core Web Vitals, metadata, and internal linking. If you'd rather have the mistakes surfaced (with fixes) than hunt them by hand, [see what the platform covers](https://seodone.ai/features) or [run your free audit](https://seodone.ai/free-audit). ## Frequently Asked Questions ### Does schema markup directly improve rankings? No — structured data is not a ranking factor in itself. What it does is make your listing eligible for rich results, which can lift click-through rate on the impressions you already earn. More clicks from the same position is a real gain; it's just a CTR gain, not a position gain. ### Is JSON-LD required, or can I use microdata? Google recommends JSON-LD, and it's the format least likely to break when your page's HTML changes, since it lives in a script block rather than woven through the markup. Microdata and RDFa still work, but every new project should default to JSON-LD. ### How long until rich results appear after fixing schema? After Google re-crawls and re-processes the page — which can take anywhere from a few days to a few weeks — eligible enhancements appear in Search Console's Enhancements reports first, then in live search results. If nothing appears after a month of valid, policy-compliant markup, the likely cause is eligibility (the page type doesn't match the markup) or simple competition for the feature. ### Can I add multiple schema types to one page? Yes, and it's normal — a local service page might carry `LocalBusiness`, `BreadcrumbList`, and `FAQPage` together. The rule is that every type must accurately describe content that's actually on the page, and nested types must nest correctly. Ten accurate types beat one giant, half-wrong one.