WordPress Plugin · v1.0.0 · Coming soon
SEO Flight Recorder
Records your pages’ SEO output — titles, meta, robots, canonicals, schema — and tells you what changed, when, and which update did it.
- WordPress 6.2+
- PHP 7.4+
- GPLv2+
- Read-only
- Any SEO plugin
Free core coming to the WordPress.org plugin directory. This page is the plugin’s official home.
Your SEO can break silently. Nothing tells you.
A plugin update wipes your product schema. A settings collision flips a page to noindex. Your canonical quietly starts pointing somewhere else. Your sitemap begins returning errors. The site looks fine. The dashboard says nothing. Google notices — sometimes weeks before you do, and Search Console reports what its crawler decided, days later, without ever telling you what on your site changed or what changed it.
SEO Flight Recorder is the black box for your site’s SEO. It records the SEO-critical output of the pages you care about, re-checks them on a schedule and immediately after anything on the site changes, and writes every difference to a flight log — with the site events that immediately preceded it, so the culprit has a name.
How it works
Record. Diff. Name the culprit.
Job one · The recording
Record what your pages actually say
SEO Flight Recorder fetches the pages you care about from your own server, normalises the SEO-critical fields out of the rendered HTML, and stores a compact snapshot. Then it does it again — daily, and on demand — and diffs the result. Not “is there a problem”, but “this field said that yesterday and says this today”.
- Title & meta description
- Meta robots — noindex tripwire
- Canonical URL (value, not just presence)
- Schema types, including nested @graph
- Open Graph & Twitter cards
- First H1 and H1 count
- HTTP status & redirect target
Recent changes
meta robots — index, follow → noindex, follow
Site events immediately before this change: Plugin updated · Example SEO Suite 4.2
schema — Product, BreadcrumbList → BreadcrumbList
A Product type vanished. Same update window.
title — About us — Studio → About us
No site events in the window. Unexplained.
meta description changed
You edited this page 4 minutes earlier — filed as a content edit.
Job two · The culprit
Name the update that changed it
External SEO crawlers poll from outside. SEO Flight Recorder lives inside WordPress, so it sees the moment an update finishes, a plugin is activated, the theme is switched, or an SEO-relevant setting changes — and runs a check about 90 seconds later, once caches have settled. When output changed, the log entry carries the events that just happened, so the culprit has a name.
- It knows when you edited the page, and files those as expected content edits — not alarms.
- A change that endangers indexability stays critical even then.
- Site-wide watch too: robots.txt, the sitemap, and the “Discourage search engines” switch.
Site-wide checks
| robots.txt | Reachable · unchanged since 4 Jun | |
| XML sitemap | Returns 500 was 1,284 URLs | |
| Search engines | Site is indexable blog_public = 1 |
Monitoring status
This site can fetch its own pages, so monitoring is live. If it ever can’t, every screen says monitoring impaired — never a false all-clear.
A recorder, never a hand on the controls
It does not edit your SEO output, generate meta tags or schema, crawl other websites, or promise rankings. It records, diffs and alerts. It proves what your pages said, when they changed, and what changed them.
Honest when it cannot see
If your host blocks loopback requests, checks cannot run — so it says monitoring impaired on the dashboard, in Site Health and by email. A monitor that goes quiet when it breaks is worse than no monitor at all.
Nothing leaves your site
The only requests it makes are to this site’s own public URLs, from your own server — the way WordPress’s own Site Health checks work. Records stay in your database. No third-party crawler, API or CDN is involved.
In the free build
The whole engine, not a teaser.
The diff engine and the culprit timeline are the point of this plugin — so they are free, complete, on every field and every check.
-
Up to 10 monitored pages
Front page auto-added; add the rest by URL or post picker. Every field, every check — no gates.
-
Daily + post-update checks
A daily scheduled check, an automatic one ~90 seconds after any update, and a manual “Check now”.
-
Flight log
Every change with before → after, severity, timestamp, and the site events that immediately preceded it.
-
Expected-change intelligence
Changes to a page you edited yourself are filed as content edits, not alarms — unless they endanger indexability.
-
robots.txt & sitemap watch
Content drift, reachability, XML validity, URL-count drops — plus a critical alarm if robots.txt starts blocking everyone.
-
The blog_public tripwire
“Discourage search engines” flipping on — the classic staging-to-production catastrophe — caught even when page checks can’t run.
-
Email alerts with all-clear
Mail above your chosen severity, once per check, in plain language. Resolved findings send the all-clear.
-
WP-CLI + Site Health
wp seo-flight-recorder check / status, including --format=json, plus Site Health tests and a dashboard widget.
Free vs Pro
Pro is scale, integrations and the client-facing artifact.
Retention and page count are capacity dials, not feature locks — the free build stays fully functional on every one of them. Here is the honest split.
| Capability | Free | Pro |
|---|---|---|
| Field-level snapshot & diff engine (title, meta, robots, canonical, schema, OG, H1, status) | ✓ | ✓ |
| Update-culprit attribution + expected-change intelligence | ✓ | ✓ |
| robots.txt, sitemap and “Discourage search engines” watch | ✓ | ✓ |
| Email alerts with all-clear, flight log, resolve/mute notes | ✓ | ✓ |
| Site Health, dashboard widget, WP-CLI (incl. --format=json) | ✓ | ✓ |
| Loopback self-check with honest “monitoring impaired” state | ✓ | ✓ |
| Monitored pages | 10 | Unlimited + sitemap sweep |
| Check schedule | Daily + post-update | Hourly + post-update |
| History retention | 30 days / 200 changes | Unlimited |
| Pre-update armed baseline (snapshot now, update, auto-compare) | — | ✓ |
| Slack & webhook alerts | — | ✓ |
| White-label weekly client digest (print / PDF) | — | ✓ |
| REST status endpoint for fleet dashboards | — | ✓ |
| Ignore rules / expected-change management | — | ✓ |
Pro · founder pricing
Pro
$99/yr
Agency
$199/yr
14-day trial, no card required. Annual, in US dollars. If a licence lapses you keep the features — only updates and support stop. Pro is sold and licensed through Freemius, the merchant of record.
Questions people ask.
Doesn’t Google Search Console already tell me this?
Search Console tells you what Google’s crawler eventually decided, on its own schedule — often days or weeks later — and it doesn’t watch social tags or canonical values, doesn’t run the moment an update finishes, and never names the plugin that caused it. SEO Flight Recorder tells you what your HTML said, within a day (or ~90 seconds after an update), with the likely cause attached. They complement each other; only one of them is on your side of the fence.
How does it know which update caused a change?
It keeps a short log of site events — plugin, theme and core updates, activations, deactivations, theme switches, SEO-relevant setting changes, and edits to monitored pages. When a check finds a difference, the events since the previous clean check are attached to the log entry. It is honest about uncertainty: entries say “site events immediately before this change”, and when nothing happened in the window, it says so.
Does it work with Yoast, Rank Math, AIOSEO or SEOPress?
Yes — with all of them, and with none of them. It monitors the rendered output of your pages regardless of what generates it. It is not an SEO plugin and does not compete with yours; it verifies that whatever your SEO stack promised is actually what your pages serve.
Does it change my SEO output or fix problems automatically?
No, and that’s deliberate. It is strictly read-only: it records, diffs, and alerts. You — or your SEO plugin — stay in charge of what your pages say. A recorder you can trust must never be a hand on the controls.
What counts as a critical finding?
noindex appearing on a monitored page, the site being switched to “Discourage search engines”, a canonical moving to a different domain or disappearing, a schema type vanishing, a monitored page starting to return errors or redirect off-site, robots.txt blocking all crawlers, a broken or invalid sitemap, and an emptied title. Warnings cover meaningful-but-possibly-intended changes: title and description edits, Open Graph changes, H1 changes, sitemap shrinkage. Changes you made yourself by editing the page are logged as informational.
What can’t it see?
Three things, and it says so rather than pretending otherwise. If your host blocks loopback requests the plugin cannot fetch its own pages — it detects that and reports “monitoring impaired” everywhere, never a false all-clear. CDN-level caches can serve stale HTML until they expire, which delays detection (there is an optional cache-bypass mode that defeats most page caches). And tags injected by JavaScript after page load — schema added via Tag Manager, say — are invisible to a server-side fetch, so they are not monitored.
Will it slow my site down?
No. Checks run in the background via WP-Cron, fetch a handful of your own pages with a strict time budget, and store compact snapshots. Nothing runs on your visitors’ page loads, and nothing is added to your front end.
Found out weeks late, from a traffic graph?
That is the normal way to discover an SEO regression, and it is a terrible one. SEO Flight Recorder puts a timestamp and a suspect on it instead — within a day, or ninety seconds after the update that did it.