Custom Recovery Mode Email

Description

Since WordPress 5.2 there is a built-in feature that detects when a plugin or theme causes a fatal error on your site, and notifies you with an automated email. Sometimes the message lands in the wrong inbox, or with a sender name that does not match your brand.

With Custom Recovery Mode Email you can:

  • Set the recipient address for the Recovery Mode email when a Fatal Error occurs.
  • Customize the From name and email address used by WordPress system emails.
  • Adjust the rate limit between Recovery Mode emails (in days, hours or minutes).
  • Toggle individual administrative notifications: password changes, new user registrations, and plugin/theme auto-update results (success and failure separately).
  • Configure everything network-wide on Multisite, with optional per-site overrides for the recipient and the sender.

The plugin ships with a redesigned settings page that organises every option into clear, focused cards, making it easy to find what you need at a glance.

Translations

  • English
  • Español (España)
  • Euskara (thanks to @garridinsi)
  • Galego
  • Svenska (thanks to @tobifjellner)

Note: Please contact us if you would like to help translating the plugin into your language.

Screenshots

Installation

  1. Upload the entire plugin folder to the /wp-content/plugins/ directory.
  2. Activate the plugin through the “Plugins” menu in WordPress (or “Network Activate” in Multisite).
  3. Go to Settings Recovery Mode Email to access the settings page (or Network Admin Settings Recovery Mode Email in Multisite).

Minimum Requirements

  • PHP 7.4 or greater. Tested with PHP 8.2.
  • WordPress 5.2 or greater.

FAQ

Does it work with WordPress Multisite?

Yes. Network-wide defaults are configured from Network Admin Settings Recovery Mode Email. Each individual site can override only the Recovery recipient and the mail sender from its own Settings page.

Where do I configure the rate limit and notification toggles in Multisite?

In Multisite, the rate limit and the notification toggles (password change, auto-updates, new users) are network-wide and live in the Network Admin page only. Individual sites cannot override these.

What happens if I leave a field empty?

Empty fields fall back to sensible defaults: the site administration email for the recipient, the WordPress default sender for the From address, and the network-level value when overriding from a single site in Multisite.

Will my existing settings be preserved when upgrading from 1.x?

Yes. The 2.0.0 release is a visual and internal overhaul, but the data schema and option names are unchanged. Your saved configuration carries over automatically.

Reviews

Read all 1 review

Contributors & Developers

“Custom Recovery Mode Email” is open source software. The following people have contributed to this plugin.

Contributors

“Custom Recovery Mode Email” has been translated into 7 locales. Thank you to the translators for their contributions.

Translate “Custom Recovery Mode Email” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

2.0.0

  • Feature: new “WPVulnerability Email” field below the Mail Sender Email, shown only when the WPVulnerability plugin is active. The plugin defines the WPVULNERABILITY_MAIL constant (only if not already defined elsewhere) using the configured value, or a fallback of wpvulnerability@ if the field is empty.
  • Feature: new sidebar banner promoting the Dixitalmedia plugins on WordPress.org, dismissible independently from the FactuPress banner.
  • Multisite: the new WPVulnerability email can be set network-wide and overridden per site, following the same pattern as the recovery email and the sender override.
  • Major: full visual redesign of the admin settings page. Each section is now grouped into a card with its own icon, title and description, replacing the previous flat layout.
  • Major: complete internal rewrite. The plugin now follows an OOP architecture with namespaces, autoloading via Composer, a service container, and dedicated classes for hooks, services, settings and lifecycle. The public behavior is unchanged; existing settings are preserved.
  • New: hero header on top of the settings page summarising the plugin scope at a glance.
  • New: dedicated card for the Notifications section, with refined toggle switches.
  • New: callout component for Multisite-context notices (replaces the previous generic admin notice on per-site pages).
  • New: action bar at the bottom of the form with a loading state and spinner when saving, plus aria-busy for assistive technologies.
  • Improvement: admin assets reorganised into assets/css/ and assets/js/ for clarity. Inline <h2> styles removed and replaced with proper CSS classes.
  • Improvement: focus states on inputs and switches now use :focus-visible to avoid showing outlines on mouse clicks.
  • Improvement: prefers-reduced-motion is honoured for the save spinner animation.
  • Compatibility: tested up to WordPress 6.9.4.

1.5.5

  • Hardening: added direct file access protection (ABSPATH guard) to all PHP source files.
  • Hardening: form action URL is now explicitly escaped on output in the Network Settings page.
  • Hardening: $_SERVER[‘REQUEST_METHOD’] is now properly unslashed and sanitized before use.
  • Hardening: exception messages in the service container are escaped before being passed to the runtime.
  • Cleanup: removed legacy load_plugin_textdomain() call (WordPress loads translations automatically since 4.6).
  • Cleanup: removed leftover error_log() debug call from the service container.
  • Compatibility: tested up to WordPress 6.9.

1.5.3

  • Fix: fatal error on boot caused by argument count mismatch in UserNotificationsHooks.
  • Fix: cancelling auto-update emails no longer disables password change notifications as a side effect.
  • Fix: WPVulnerability sender override is now scoped to emails actually sent by that plugin (no longer reformats every email site-wide).
  • Fix: notification toggles are now evaluated at runtime instead of at plugin boot, which broke decisions in Multisite when the active site changed.
  • Fix: From name was missing on overridden emails because the From filter reset the override flag before the From-name filter ran.
  • Fix: Network Admin form now submits via admin-post.php (canonical pattern) and shows the success notice via redirect.
  • Fix: settings page no longer bypasses the repository to read the network option directly.
  • Fix: rate limit is clamped to a minimum of 60 seconds to prevent accidental disabling.
  • Fix: ServiceContainer no longer calls a non-existent write_log() function.
  • Cleanup: removed dead code (unused Notices class, unused repository implementations, no-op TextDomainLoader).
  • Improvement: admin CSS moved to assets/admin.css and properly enqueued.
  • Improvement: TextDomainLoader actually loads the textdomain on init for self-hosted installs.

1.5.2

  • Refactor to OOP with vendor and autoload.
  • Added compatibility with WordPress Multisite.

1.5.1

  • Minor fixes.

1.5

  • Security updates.
  • Now the plugin also changes the recipient for password change and plugins and themes autoupdates emails.
  • Updated last WordPress version tested.
  • Added update email settings.
  • Added password change email setting.
  • Change sender for WPVulnerability plugin.

1.1

  • Security updates.
  • Now the plugin also changes the recipient for password change and plugins and themes autoupdates emails.
  • Updated last WordPress version tested.

1.0.4

  • Updated last WordPress version tested.

1.0.3

  • Updated last WordPress version tested.

1.0.2

  • Added class “regular-text” to input fields.

1.0.1

  • Fix to prevent activation in WordPress Multisite to avoid site to crash.
  • Fix wrong text domain.

1.0

  • Initial Release.