

The Flight Log: every SEO-critical change with severity, before → after, and the likely cause
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.