The arrival of a manual action notification in Google Search Console is a moment of high anxiety for any website owner or SEO professional.Unlike algorithmic penalties, a manual action is a deliberate sanction applied by a human reviewer at Google for practices that violate their Webmaster Guidelines.
Diagnosing Rich Results and Structured Data Drift in Google Search Console
The Rich Results report is not a schema validator. It is a diagnostic surface that tells you whether Google can extract supported enhancements from your markup and whether those enhancements are eligible to appear in search. That distinction matters because Schema.org supports hundreds of types, while Google supports a narrow set for rich results. A page can have flawless JSON-LD and still show no enhancements if the type is not eligible. Conversely, a page can pass validation and still lose rich results because the markup conflicts with visible content, canonical signals, or rendering behavior. The report is best treated as a diff engine: watch it for template-level drift after releases, migrations, and CMS changes.
Start by reading the report’s hierarchy correctly. Errors generally prevent an item from being eligible. Warnings may not block eligibility but signal missing optional properties that affect display quality. “Valid with warnings” is not a failure, yet it is often a useful leading indicator. For Product snippets, a missing aggregateRating may only suppress stars, while an invalid price or availability can kill the enhancement entirely. For Merchant listings, the requirements are stricter because shopping surfaces depend on accurate pricing, shipping, and return data. Diagnose by item type and by template, not by isolated URL, unless the issue is page-specific.
Most rich result regressions come from rendering and deployment changes. If your JSON-LD is injected client-side through a tag manager, consent wrapper, or hydration step, Google may render the page without the markup. URL Inspection’s rendered HTML view is the ground truth for what Google indexed, not your browser’s view-source after JavaScript runs. Compare the live test against the crawled page. If live passes but indexed fails, suspect rendering, robots.txt, noindex, blocked resources, or a caching layer serving stale HTML. Server-side or statically generated JSON-LD is still the most reliable path for critical entities such as Product, Article, BreadcrumbList, and Organization.
Entity consistency is another common failure point. Multiple JSON-LD blocks can compete, especially when plugins, templates, and marketing tags each emit their own graph. Use stable @id values to connect Organization, WebSite, WebPage, Product, Offer, and BreadcrumbList. Ensure price, currency, availability, rating count, and review count match the visible page. Use ISO 8601 for dates and avoid locale-specific formatting. If you use nested Offer or AggregateRating, verify that required properties are not orphaned. The Rich Results Test is useful for Google-supported features, while the Schema Markup Validator can catch broader syntax and vocabulary problems that Google may not report.
URL Inspection should be your second step after the aggregate report flags a pattern. Inspect a representative URL from each affected template. Test the live URL, then inspect the indexed URL. Look for differences in canonical, robots meta, and rendered JSON-LD. If the issue appears only after a deploy, check your edge cache, CDN purge rules, and template partials. If it appears only on paginated or faceted URLs, check whether the markup is being inherited incorrectly from the parent page. Rich results are not guaranteed to display, so treat eligibility as a necessary but not sufficient condition.
The Performance report adds business context. Use the Search appearance filter to compare clicks, impressions, and average position for rich result pages against non-rich pages. A drop in rich result impressions while rankings hold steady often points to an eligibility or display change rather than an algorithmic penalty. Segment by page and query. Then correlate the timing with releases, schema changes, and Google announcements. This keeps you from chasing phantom penalties when the real issue is a missing field on a product template.
For scale, move beyond manual spot checks. Pull Search Analytics data through the API and use the URL Inspection API for sampled URLs. Track enhancement counts weekly and alert on template-level changes. Put structured data tests in CI so a deploy fails when required properties disappear. Snapshot JSON-LD output for key templates and compare changes. Annotate analytics with deployment events. Keep a changelog of schema templates and review it during postmortems, because undocumented markup changes are the hardest to debug. This turns the Rich Results report from a reactive dashboard into a diagnostic feedback loop.
Finally, know what to ignore. Not every schema type earns a rich result, and older features like FAQ and HowTo have limited surface area. Warnings that do not affect your active enhancement may be lower priority than a broken canonical. The goal is not perfect markup for its own sake. The goal is reliable entity extraction that supports search appearance, and the Rich Results report is one of the few places where Google shows you how that extraction is going.


