/ โ† Learning Hub / Schema Drift Fixes
On this page
  1. Where drift comes from
  2. The fix guides
  3. Build a baseline you can compare against
  4. Catch drift before it reaches the live site
  5. Tracing one change back to its cause
  6. Which findings to fix first
  7. A sensible order of work
  8. Questions and answers

Where drift comes from

Drift is a change nobody meant to make. It almost always has one of a handful of causes, and each leaves a recognisable pattern in the detector's findings.

What changedTypical pattern in the findings
Plugin or app updateA whole type disappears or changes across every page of one template on the same day
New plugin or app installedA second copy of an existing type appears, often with slightly different values
Theme change or redesignMarkup that lived in the old theme's templates is gone site-wide
CMS core or platform updateOutput format changes, for example dates or image values, across many types at once
Content editsOne or a few pages lose a property, such as a price, rating or author, because a field was emptied
Migration or new URL structureURLs and @id values in the markup still point at old addresses, or markup is missing on moved pages
Tag manager changesMarkup injected by script appears and disappears depending on consent or container versions

The date of the first snapshot that shows the change is the most useful clue you have. Match it against your update history, deployment log or plugin changelog before looking anywhere else.

๐Ÿ’ก A drop that affects every page of one type on one day is almost never caused by content editing. Look for an update or deployment on that date.

The fix guides

Each guide covers one kind of change the detector reports: how to confirm it, how to restore the markup and how to stop it happening again.

Markup that went missing or changed

Fixing entirely deleted schema covers restoring markup that vanished after an update, through plugin settings, a theme override or your own template code. Fixing changed schema types covers downgrades such as NewsArticle becoming Article or Product becoming a generic type, which quietly remove eligibility. Fixing lost schema properties covers markup that is still there but has lost ratings, offers, authors or images.

New problems and their effect

Fixing new validation errors is a checklist for markup that passed last week and fails now. Fixing rich result coverage drops helps separate a change on your site from a change in how Google shows a feature, using Search Console alongside the detector's snapshots.

Causes to deal with at source

Fixing CMS update regressions covers testing updates on a staging copy, rolling back and reapplying safely. Fixing plugin and app schema conflicts covers deciding which source owns each type and switching off the rest. Fixing a stale dateModified covers dates that stop updating when content changes, or that change when nothing meaningful did.

Prevention by platform

WordPress covers automatic updates, staging sites and where to keep custom markup so updates do not overwrite it. Shopify covers reviewing theme updates and the apps that change product markup. Custom builds covers keeping markup in one source of truth and testing it on every commit.

Build a baseline you can compare against

Drift is only visible against a known good state. Before relying on alerts, take the time to record what correct markup looks like for each part of the site.

  1. Pick representative pages. One or two per template: home, product, category, article, event, location, contact. Monitoring every URL is rarely needed, because drift usually happens at template level.
  2. Confirm each page is correct now. Fix any existing errors first. A baseline full of problems makes every later comparison harder to read.
  3. Record the expected types and key properties. For a product template that might be Product with name, image, offers, price, currency and availability; for an article, the type, headline, author reference, dates and image.
  4. Note the source of each type. Theme, SEO plugin, review app, custom code or tag manager. When something changes, this tells you where to look.
  5. Keep the baseline with your site documentation. Update it deliberately whenever you change markup on purpose, so intended changes are not mistaken for drift.

Snapshots taken by the detector give you the history; the baseline tells you which version was the one you wanted.

Catch drift before it reaches the live site

Monitoring tells you after the fact. The cheaper option is to check markup as part of every change, so problems never go live.

โš ๏ธ Custom markup added directly to a theme's files is lost when the theme updates, unless it lives in a child theme or a separate snippet the update does not replace. This is one of the most common causes of deleted schema findings.

Tracing one change back to its cause

A worked example shows how the pieces fit together. Suppose the detector reports that product pages no longer contain aggregateRating, starting with Tuesday's snapshot, while the rest of the Product markup is unchanged.

  1. Check the scope. Is the rating missing on every product page, or only some? Every page points to a template, app or plugin; a few pages point to content or to those products losing their reviews.
  2. Check the source. Your baseline says ratings come from the review app, not the theme. That narrows the search to one place.
  3. Check the date. The app's changelog shows an update on Monday night that moved rich snippet output behind a new setting.
  4. Restore and confirm. Turn the setting on, test a live product page, and confirm the next snapshot shows the rating back.
  5. Close the gap. Add that app to the list of updates that are checked on staging before going live.

The same routine, scope, source, date, restore, prevent, works for almost every drift finding. It turns a vague worry that rich results have gone into a specific change with a specific owner.

Which findings to fix first

  1. Markup deleted across a template. The biggest loss and usually one cause, so one fix restores many pages.
  2. New validation errors on revenue pages. Product, event and job markup that newly fails loses eligibility until fixed.
  3. Type downgrades. A specific type replaced by a generic one looks valid but no longer qualifies for its rich result.
  4. Lost key properties. Missing offers, ratings or images reduce or remove enhancements.
  5. Duplicate sources. Resolve conflicts before they produce contradictory values.
  6. Stale or jumpy dates. Fix templates so dates reflect real content changes.

A sensible order of work

  1. Set up the Schema Drift Detector on representative pages from each template.
  2. Fix any existing errors and record the result as your baseline.
  3. When the detector reports a change, note the date of the first snapshot that shows it.
  4. Match that date against updates, deployments, installed apps and content edits.
  5. Restore the markup at its source: plugin settings, child theme, app configuration or template code.
  6. Confirm the fix on the live page, then check Search Console's enhancement reports as Google recrawls.
  7. Add the check that would have caught it: a staging review, a build test or a required CMS field.
  8. Update the baseline whenever you change markup on purpose.

For debugging a single page's markup in detail, see the Schema Debugger Guide. To rebuild lost markup correctly, see the Schema Builder Guide or the AI Schema Guide, and for what the markup should earn in search, the Rich Snippets Guide.

Questions and answers

1. What is schema drift?

Schema drift is any unintended change to a site's structured data over time. Markup can be deleted, change type, lose properties or start failing validation because of an update, a redesign, a new plugin or an ordinary content edit. The visible page usually looks exactly the same, so nobody notices until rich results disappear or someone happens to test the page. Monitoring compares snapshots over time so these changes are caught when they happen.

2. How would I know if my structured data broke?

Without monitoring, most people find out from a drop in rich results or from Search Console's enhancement reports, and by then the problem may be weeks old. Search Console only reports what Google found on its last crawl of each page, so it lags behind the change. Regular snapshots of your own pages show the change within the monitoring interval and tell you exactly which types and properties changed, which makes the cause much easier to find.

3. Why did a plugin update remove my schema?

Plugins change how they build markup between versions: they rename settings, reset options, move a feature to a paid tier or change which types they output by default. Custom markup attached through a plugin's filters can also stop working if those hooks change. Check the plugin's changelog for the version you updated to, review its schema settings, and test the update on a staging site first next time so you see the effect before visitors do.

4. Should dateModified change every time I edit a page?

It should change when the content meaningfully changes, such as updated facts, prices, advice or sections. Fixing a typo or changing a sidebar does not need a new date. Setting the date to today on every page load, or bumping it without real changes, misrepresents the page, and Google has said it does not want dates changed just to look fresh. The goal is a date that honestly reflects when the main content was last updated.

5. Is a coverage drop in Search Console always a schema problem?

No. Valid items can fall because your markup changed, but impressions with a rich result can also fall because Google changed how often it shows a feature, restricted it, or retired it altogether, as happened with FAQ and HowTo results in 2023. Compare the detector's snapshots with the dates in Search Console. If your markup did not change on the date the drop started, the cause is more likely on Google's side.

6. How often should structured data be checked?

It depends on how often your site changes. A site with automatic plugin updates, frequent deployments or many editors benefits from daily or weekly snapshots of key templates. A small static site that rarely changes can be checked less often. Whatever the interval, always run a check straight after any update, redesign, migration or new plugin, because those are the moments drift is most likely to begin and the easiest times to trace it.

7. How do I stop two plugins fighting over my schema?

Decide which one should own each type, then switch the type off in the other. Most SEO plugins, review apps and schema plugins let you disable specific types, and some let you disable their markup entirely. If a plugin offers no switch, a small code filter or a theme setting may remove its output. Once one source owns each type, record that in your baseline so a later update that turns the other back on is spotted quickly.

Watch your structured data for silent changes

The Schema Drift Detector snapshots your schema regularly and reports changes: types added or removed, properties dropped, validation errors that newly appear and shifts in rich result coverage in Search Console.

Run the Schema Drift Detector โ†’
๐Ÿ’ฌ Got a problem?
Related Guides: Schema Debugger Guide  ·  Schema Builder Guide  ·  Rich Snippets Guide  ·  AI Schema Guide  ·  Learning Hub

About aiwebpageseo

aiwebpageseo.com is a data-driven SEO and AEO (Answer Engine Optimisation) platform providing a free suite of technical SEO tools. Rather than relying on AI-theorised assumptions, the platform analyses live URL performance, delivering objective diagnostics, page speed metrics, CLS debugging, and site crawl data alongside actionable technical tutorials.