New: Status column on the connections list. Surfaces “Active”, “Cooldown (Xm)” (connection currently skipped by the orchestrator after a recent error), and “Expired” (token refresh failed) so the failover-eligibility of each mailbox is visible at a glance.
New: Reconnect action on expired connections. One click re-runs the OAuth flow for the same provider and upserts tokens in place, putting the mailbox back into the failover pool without re-adding it from scratch.
Fix: connections settings form failed with “The link you followed has expired” on sites that also had Emerge Campaigns installed. Both plugins were registering admin_init handlers that triggered on any POST containing emerge_save_settings, so one plugin’s nonce check would short-circuit the other’s form submit. Both plugins’ admin handlers are now scoped to their own admin pages.
Changed: all form-submit triggers and nonce actions renamed from the generic emerge_* prefix to emerge_mail_*. Specifically: emerge_save_settings → emerge_mail_save_settings, emerge_save_email_controls → emerge_mail_save_email_controls, emerge_disconnect → emerge_mail_disconnect, emerge_test_send → emerge_mail_test_send, and the matching nonce action strings. Two-plugin sites no longer share any handler-trigger key names with Emerge Campaigns.
1.1.0
New: “Other admin notices” catch-all in Email Controls. When enabled, suppresses any email sent solely to the Administration Email Address that isn’t already covered by a specific filter (WooCommerce order notifications, security alerts, backup reports, etc.). Use the emerge_mail_suppress_other_admin filter to whitelist specific messages.
New: unified Activity Log replaces the Suppression Log. Stores suppressed notifications, provider send errors, and synchronous recipient bounces in one table with type and severity filters.
New (pro): synchronous bounce detection. Provider errors from Gmail/Microsoft Graph that indicate recipient-side rejection (invalid address, mailbox full, user unknown) are classified and logged as send.bounce.* events.
New (pro): provider send-error logging. Quota-exceeded, auth-expired, and other provider failures are logged as send.error.* events.
New: emerge_mail_event_logged action — fires after each log entry. Subscribers receive a hydrated Event DTO and can filter by type prefix ($event->type_starts_with(‘send.bounce.hard.’)).
New: emerge_mail_after_send_attempt action — fires once per mailbox attempt with the connection id, message, and outcome. Useful for third-party logging integrations.
New: pro feature gate via the EMERGE_MAIL_PRO constant (and emerge_mail_pro_enabled filter). All pro features route through Pro_Gate::is_enabled().
Changed: wp_mail() return value now reflects the failure type. Transport-side failures (provider quota, auth expired, provider 5xx, network blip — classified as send.error.*) fall back to WordPress’s default mail delivery, preserving the multi-provider / multi-filter fallback chain the previous version relied on. Recipient-side failures (invalid address, mailbox full, user unknown — classified as send.bounce.*) return false, since no transport can rescue them — callers like Emerge Campaigns and contact-form plugins can detect and record the failure. The fallback is also preserved for the “no mailbox configured yet” case. Override the default via the new emerge_mail_fallback_on_failure filter (4th param is the classified event type).
Changed: the “Emerge Mail: connection failure” admin notice is now scoped to the WordPress Dashboard and the Plugins screen. It no longer leaks into every other plugin’s admin pages.
Schema: table renamed from emerge_suppression_log to emerge_mail_event_log. Added severity, connection_id, message_id columns. Existing suppression rows and settings migrated in place on first boot.
1.0.0
Initial release.
OAuth connections to Gmail and to all Microsoft account types (personal Outlook/Hotmail/Live and Microsoft 365 work/school).
Multiple mailboxes per site with active-first routing and automatic failover (with per-connection cooldown after errors).
Optional bulk-send throttle that rotates connections during detected bursts.
Per-connection From email override for verified send-as aliases.
Configurable Sender settings: custom From name (defaults to site title), opt-in Reply-To-to-admin-email when the sender differs, ignore plugin-set From header.
Full wp_mail mapping: attachments, Cc/Bcc from headers, multipart alternative, comma-separated address lists with quoted display names, non-UTF-8 charsets, RFC 2047 header encoding.
Suppression Log custom table with WP list-table UI, type filter, bulk delete, and daily 30-day pruning.
Per-connection failure visibility on the settings screen plus a site-wide admin notice on recent failures.
Hourly token maintenance via Action Scheduler (WP-Cron fallback).
Safe fallback to default WordPress mail delivery on any provider failure.
Filter hooks for cooldown duration, bulk thresholds, HTTP timeouts and request args, token-refresh timing, final MIME output, Microsoft saveToSentItems, suppression catalog, and log retention.