Structured data¶
Wygard records the structured-data types a page exposes — across JSON-LD, Microdata, and RDFa — and alerts you when that set changes.
| Scope | Tier | Default | Alert |
|---|---|---|---|
| Per URL | Basic | Off — opt-in per URL | 🟠 Heads-up |
Why it matters¶
Structured data (schema.org markup) is what earns your rich results — recipe cards, breadcrumb trails, product prices, review stars, FAQ accordions. None of it shows up in the rendered page, so when a template refactor, a plugin update, or a CMS migration drops a Recipe block or breaks the JSON-LD, the page still looks perfect to a human visitor while the rich result quietly disappears from the SERP.
The default severity is Heads-up because losing markup is worth a review but rarely an instant traffic cliff. The test is off by default — turn it on for the URLs whose rich results actually matter to you.
What Wygard checks¶
On every run, the crawler:
- Fetches the monitored URL.
- Scans the source for structured data in all three markup formats: JSON-LD (
<script type="application/ld+json">), Microdata (itemscope/itemtype), and RDFa (vocab/typeof). - Records the schema type and the format it was found in — e.g.
Recipein JSON-LD,BreadcrumbListin Microdata. - Compares the set of types found against the stored desired value.
<script type="application/ld+json">
{ "@context": "https://schema.org", "@type": "Recipe", ... }
</script>
The first crawl reads every type on the page and stores it as the baseline:
| Type | Format | Status |
|---|---|---|
| BreadcrumbList | JSON-LD | ok |
| Organization | JSON-LD | ok |
| Recipe | Microdata | ok |
If a URL has no structured data at all, the test is set to does not exist — so you're alerted if markup later appears unexpectedly.
Match methods
Structured data supports several match methods — is exactly, is not exactly, containing, not containing, exist, and does not exist. Use is exactly to lock the full set of types, or containing to simply assert that one specific type (say, Product) is always present.
Common alerts¶
- Structured-data type missing — a type that was in the baseline (e.g.
Recipe) is no longer found in any format. - Structured data no longer matches the rule — the types found on the page don't match what you defined.
- New type appeared — markup was added that isn't part of the baseline (worth a look when you didn't deploy it on purpose).
Responding to an alert¶
- Open the alert and review the diff — Wygard shows the baseline set of types versus what it found this run.
- Decide whether the change was intended (you added or removed a schema block on purpose) or accidental (a template regression, a plugin that stopped rendering the markup).
- If intended, click Set found value as desired to adopt the new set as the baseline.
- If accidental, fix the source — restore the markup or roll back the change — and the next crawl turns the test green.
Pair it with Meta robots
Structured data only earns rich results on pages Google can actually index. The Meta robots test catches the other half of the equation — a stray noindex that would strip a page from search no matter how clean its markup is.