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):
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.
woocommerce_email_sent signal. It verifies emails were generated and handed to your mailer; it cannot see the receiving inbox.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.
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.
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:
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): 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.