0+
August 27, 2026
August 10, 2026
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 Google Search Console reports what its crawler decided, days later, without ever telling you what on your site changed or what changed it.
BuildsByLuke 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.
noindex appearing where it shouldn’tProduct or FAQPage type is a critical findingblog_public) — the classic staging-to-production catastrophe, caught even when page checks can’t runExternal SEO crawlers poll from outside. This plugin lives inside WordPress, so it sees the moment a plugin/theme/core update finishes, a plugin is activated or deactivated, the theme is switched, or an SEO-relevant setting changes — and runs a check ~90 seconds later. When output changed, the log entry carries the events that just happened: “meta_description removed — right after: Plugin updated: Example SEO Suite 4.2”.
It also knows when you edited the page yourself, and files those changes as expected content edits instead of alarms. (A change that endangers indexability — like noindex appearing — stays critical even then.)
Changes above your chosen severity arrive by email, once per check, with plain-language descriptions. When a critical finding stops being detected, it is marked resolved and you can get the all-clear. No site-wide nags, no dashboard takeovers — one dashboard widget with the headline, and everything else lives in the plugin’s own pages.
There is no page limit, no check-frequency tier, no history limit and no feature switched off pending payment.
wp seo-flight-recorder check / status, including --format=jsonGET /wp-json/sfrec/v1/status for scripts and dashboards, with the same manage_options permission the admin screens usePro adds no monitoring — monitoring is complete and unlimited above. What it adds is delivery: ways to get the flight log out of this dashboard and in front of people.
Details and pricing. Sold and licensed through Freemius (see “External services”).
It does not edit your SEO output, does not generate meta tags or schema (your SEO plugin does that), does not crawl other websites, and does not promise rankings. It is a recorder: it proves what your pages said, when they changed, and what changed them.
The monitoring itself contacts nothing external. Checks fetch this site’s own public URLs from your own server (loopback requests, like WordPress’s own Site Health checks) with the user agent “SEOFlightRecorder”. Redirects are not followed by the HTTP layer: the plugin resolves each hop itself and re-checks the destination against your site address before requesting it, so a monitored URL that redirects off-site is recorded as a change and stopped there rather than followed. Records stay in your database. Nothing about your site is transmitted anywhere, and no third-party crawler, API, or CDN is involved.
Freemius (freemius.com), who sell and license the Pro version
Freemius is contacted in four situations. Every one of them is something you click. It is never contacted in the background.
Terms: https://freemius.com/terms/ — Privacy: https://freemius.com/privacy/
Installing, activating, skipping the opt-in, monitoring, using every screen, deactivating (the SDK’s deactivation-feedback dialog is switched off in this build, so deactivation is one click and sends nothing), WordPress’s update cycle and all scheduled tasks complete without contacting Freemius at all. Free updates come from WordPress.org like any other plugin.
In the Pro version, Slack and webhook alerts POST run summaries only to endpoint URLs you enter yourself in the plugin’s settings; nothing is sent until you configure one.
This plugin’s own PHP is unminified and readable in the plugin folder.
The one exception to “unminified” is the third-party payment SDK in vendor/freemius/, which ships pre-minified. Those files are the Freemius WordPress SDK, published under the GPL, and their unminified source and build tooling are public:
vendor/freemius/assets/js/pricing/freemius-pricing.js: https://github.com/Freemius/pricing-pageThis plugin ships four deliberate modifications to that SDK, all in assets/js/pricing/freemius-pricing.js, all removing remote references from wp-admin. Three are marked with a “SEO Flight Recorder:” comment at the patch site; the loader-image swap (3.) is a one-string replacement:
appendScripts() method is emptied. Upstream it injects https://www.google-analytics.com/analytics.js and https://checkout.freemius.com/checkout.js into wp-admin when the pricing screen renders.img.freemius.com/blue-loader.gif) is replaced with an inline data-URI equivalent.No installation instructions provided.
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. This plugin tells you what your HTML said, within your chosen check window (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.
As many as you want, as often as hourly. Neither is limited, and neither depends on paying for anything.
No. Checks run in the background via WP-Cron, fetch your pages with a strict time budget per batch, and store compact snapshots. Nothing runs on your visitors’ page loads, and nothing is added to your front end.
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.
A snapshot you take deliberately, rather than on a schedule. Before running a batch of updates, click “Arm baseline” — every monitored page is captured as it is right now. Run your updates, then click “Compare against armed baseline” and anything that moved is written to the flight log. It is the same recorder, pointed at a moment you chose.
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/description edits, Open Graph changes, H1 changes, sitemap shrinkage). Changes you made yourself by editing the page are logged as informational.
It keeps a short log of site events — plugin/theme/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.
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.
Everything the plugin created: its three tables (pages, snapshots, changes), its options, transients, and scheduled tasks. Deactivating (without uninstalling) keeps your flight log.
sfrec/v1/status REST endpoint is now part of the free plugin, alongside the existing WP-CLI commands.