Description
Your store took the order. Did everything that was supposed to happen afterwards actually happen?
WooCommerce fails quietly. A webhook feeding your CRM, fulfilment or Zapier gets auto-disabled after five failed deliveries — with no email, no dashboard notice, and official recovery via the REST API. A gateway update silently switches an express-checkout button on for your customers. An order sits in “pending” after the customer paid. The Action Scheduler queue that runs renewals and order emails backs up. An order email is simply never generated — and a mail logger can’t log an email that never existed.
Order Flight Recorder watches all five, records a timeline, and when something changes it names the most plausible culprit: the plugin/theme/core update that immediately preceded the change.
The five detectors (all free):
- Webhook sentinel — instant email alert when WooCommerce disables or degrades a webhook, a Site Health check that turns critical while one is down, and one-click re-enable from the plugin’s own screen (no REST call needed). Optional auto-recovery retries the re-enable for you a few minutes later, up to three times a day, and then leaves it for a human.
- Payment-surface drift — snapshots which gateways and express-checkout options your customers see; diffs after every update event and names the likely culprit. Credentials and secret keys are never captured.
- Stuck orders — pending/on-hold orders beyond your thresholds (offline methods excluded), failed-order counts, and an optional “no orders at all for N hours” deadman switch.
- Queue health — Action Scheduler past-due backlog and failures, grouped by the plugin that owns them.
- Order-email reconciliation — records the emails your store should have generated for each status change (per your own email settings) and flags the ones that never were.
Plus: email alerts and a daily digest (only when something needs review), Site Health integration, and a WP-CLI command (wp ofrw status --format=json). Event log history is your setting, defaulting to keep everything — housekeeping, not a tier: no build removes the bound for you.
Read-only by design. The plugin never changes gateway settings, orders, or queue entries. The only thing it ever writes is a webhook’s status — when you click “Re-enable”, or when you switch on auto-recovery yourself (off by default).
Quiet by design, too. Nothing this plugin has to say appears outside its own screen: no dashboard banners, no cross-admin notices, no nags. Findings reach you by email, in Site Health, on the WP-CLI command, and on the plugin’s own page. The one exception is a single notice on the Plugins screen if WooCommerce is not active, which disappears the moment you activate it.
Pro adds Slack/webhook alert channels, a REST status endpoint for agency dashboards, a white-label client report, and a WooCommerce Subscriptions renewals watch (renewal due, no charge attempt). The free version is fully functional and stays that way.
Known limitations (honest ones)
- Detection runs on a 15-minute/hourly cadence (plus instant signals where WooCommerce provides them). It is a recorder, not a firewall.
- Email reconciliation starts at activation — historical orders are not judged — and relies on WooCommerce’s
woocommerce_email_sentsignal. It verifies emails were generated and handed to your mailer; it cannot see the receiving inbox. - Webhook monitoring covers WooCommerce webhooks, not the external service’s own health.
- The no-orders deadman is off by default; enable it only if your store normally receives orders at least daily.
External services
The monitoring itself contacts nothing external. Every check is a background read of your own database, and alert emails go through your site’s own mailer (wp_mail). No order or customer data ever leaves your site.
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.
- If you opt in on the activation screen (or start a trial / activate a licence). Sent to api.freemius.com: your site URL, your WordPress and PHP versions, and the email address of the account you activate with. Skipping the opt-in is a first-class choice and the plugin is fully functional without it.
- If you open the “Upgrade” page under the plugin’s menu. Your own server (not your browser) asks api.freemius.com for current plan prices, sending your site URL. This happens whoever you are, including if you skipped the opt-in — but only when you open that page. The page itself loads no third-party scripts; everything it renders is served from this plugin’s own folder. The payment SDK’s bundled pricing script used to inject Google Analytics and a remote checkout script into wp-admin on that page; this build removes both, along with the SDK’s remaining remote references (all modifications are listed under “Source code” below).
- If you open the “Contact Us” page, which is Freemius’s hosted support form (wp.freemius.com). The link carries your site URL and your WordPress login URL so the form knows which site you are writing about.
- If you click a plan to buy, you go to Freemius’s hosted checkout (checkout.freemius.com). It receives your site URL, site name, WordPress and PHP versions, and your WordPress administrator email address (pre-filled, sent whether or not you complete the purchase). Freemius is the merchant of record. Their checkout page loads its own third-party scripts (at the time of writing: Stripe, PayPal, Google Tag Manager, and Freemius’s own assets); we do not control that list. If you never click a plan, none of it loads.
Terms: https://freemius.com/terms/ — Privacy: https://freemius.com/privacy/
Installing, activating, skipping the opt-in, every scheduled check, using every screen, deactivating (the SDK’s deactivation-feedback dialog is switched off in this build, so deactivation is one click and sends nothing), and WordPress’s update cycle all complete without contacting Freemius at all. Free updates come from WordPress.org like any other plugin.
Your own alert endpoints (Pro, optional)
If you enter a Slack or generic webhook URL in settings, alert payloads (subject, body, site URL — never customer data) are POSTed to that URL you chose, only when an alert fires. Nothing is sent anywhere you did not enter yourself.
Source code
This plugin’s own PHP and JavaScript are unminified and readable in the plugin folder. The one exception is the third-party payment SDK in vendor/freemius/, which ships pre-minified; its source and build tooling are public:
- Freemius WordPress SDK: https://github.com/Freemius/wordpress-sdk
- The pricing screen at
vendor/freemius/assets/js/pricing/freemius-pricing.js: https://github.com/Freemius/pricing-page
This plugin ships four deliberate modifications to that SDK (all in assets/js/pricing/freemius-pricing.js, all removing remote references from wp-admin): the appendScripts() method is emptied (it injected Google Analytics + checkout.js), the GA pageview tracker is stubbed out, the remote loader GIF is replaced with an inline data-URI, and testimonial photos are forced to the bundled placeholder. Three carry an “Order Flight Recorder:” comment at the patch site.
Screenshots



FAQ
Does it slow my store down?
No. Checks are scheduled background reads (status columns, counts) on a 15-minute/hourly cadence; nothing runs on your customers’ page loads.
Will it change my gateway or optimizer settings?
Never. The single write it can perform is re-enabling a WooCommerce webhook, and only when you click the button or switch on auto-recovery yourself.
Does it store customer data?
No message content is stored. Email log rows keep the WooCommerce email id, order id, and a masked recipient (j***@example.com). Gateway snapshots exclude anything that looks like a credential.
I don’t use webhooks — is it still useful?
Yes: drift, stuck orders, queue health and email reconciliation are independent of webhooks.
HPOS (High-Performance Order Storage)?
Fully compatible — orders are read exclusively through the WooCommerce CRUD APIs.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“BuildsByLuke Order Flight Recorder for WooCommerce” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “BuildsByLuke Order Flight Recorder for WooCommerce” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.0.3
- Initial public release: webhook sentinel with one-click re-enable and optional auto-recovery, payment-surface drift recorder with culprit attribution, stuck-order detector + deadman switch, Action Scheduler health by owner, order-email reconciliation, alerts + daily digest, Site Health tests and WP-CLI with JSON.
