Structured Data Coverage Outlier
Finds pages missing the structured data the rest of their page type carries
Finds pages missing the structured data the rest of their page type carries
| Rule ID | schema/coverage-outlier |
| Category | Structured Data |
| Scope | Site-wide |
| Severity | warning |
| Weight | 3/10 |
How it works
“This page has no structured data” is weak advice, because plenty of pages
legitimately carry none. “40 of 45 product pages have Product schema, these 5 do
not” is strong advice, because the site has already proved it knows how to emit the
markup and simply missed some pages.
So this rule never asks whether a page has schema in the abstract. It groups the
crawled pages by page type (product, article, category, docs, and so on), works out
which schema.org @types most of each group agrees on, and reports only the members
that break their own group’s pattern.
It stays quiet unless it has grounds to speak:
- Fewer than 10 crawled pages: no site norm exists, so the rule is skipped.
- Fewer than 8 pages of a given page type: that type is dropped, not guessed at.
- A
@typecarried by under 70% of a page type: the group has no established pattern, so nothing in it is a deviant. A site with no structured data anywhere therefore reports nothing here. That is the job of the per-type rules such as Product Schema and Article Schema.
Pages built from one template all carry the same markup, so they sit inside their own norm and are never reported. Page types the classifier could not identify are excluded, as are pages that did not return a 2xx.
The finding names the ratio it is arguing from, and lists the pages that break it.
Solution
These pages break your own site’s pattern: most pages of the same type emit this
schema @type and these do not. That is almost always a template or CMS gap rather
than a deliberate choice, a product without its Product markup or an article
without its Article markup, and it costs those pages the rich results their
siblings are eligible for. Find where the working pages get their JSON-LD and make
sure the listed pages run through the same path. If a page genuinely should not
carry the markup (a discontinued product stub, a landing page filed under the same
type), leave it: the point is that it is currently the exception.
Enable / Disable
Disable this rule
[rules]
disable = ["schema/coverage-outlier"]
Disable all Structured Data rules
[rules]
disable = ["schema/*"]
Enable only this rule
[rules]
enable = ["schema/coverage-outlier"]
disable = ["*"]