New: opt-in delivery suppression — block wp_mail() to addresses that have hard-bounced or complained. Returns false with a WP_Error on the standard wp_mail_failed action. Off by default; emerge_mail_suppression_bounce_types / emerge_mail_suppressed_recipient_message filters to tune it.
Changed: Connections “Active” radio is now a per-connection Enabled checkbox — pull a mailbox out of failover/throttle rotation without disconnecting it.
Changed: two-tier log retention — general rows 30 days, hard bounces and complaints 365 days (emerge_mail_log_retention_days / emerge_mail_bounce_retention_days).
Changed: inbound bounces are recorded only when they correlate to a logged send, so the Gmail bridge no longer logs DSNs for mail not sent through Emerge Mail (emerge_mail_record_uncorrelated_bounces filter to override).
Fix: Throttle toggle is hidden when fewer than two connections are enabled; OAuth popup now closes itself and refreshes the settings page reliably.
Misc: to_email index added to the event-log table on upgrade.
1.5.0
New: bounce & complaint tracking for SendGrid, Mailgun, Brevo, Amazon SES, and Gmail. One REST endpoint classifies each event, records it in the Activity Log (correlated to the send), and fires the emerge_mail_bounce_received action. Paste the URL from Email Settings → Bounce handling into your provider (SES via an SNS subscription; Gmail via a provided Apps Script).
New: emerge_mail_bounce_received fires for both send-time and webhook bounces with one payload — recipient, disposition, type, subject, mailbox, From, provider, reason, and client_ref. Set an X-Emerge-Mail-Ref (or Message-ID) header on wp_mail() to map a bounce back to your own record on any provider.
Changed: sends now store the provider message id on the log row for webhook correlation (4th arg to emerge_mail_after_send_attempt).
Changed: “Email Controls” renamed to “Email Settings”.
Changed: stored options and cron jobs renamed from the bare emerge_ prefix to emerge_mail_ to avoid namespace clashes — migrated in place on upgrade, nothing lost. The daily usage report now derives counts from the Activity Log (emerge_usage_counters removed).
1.4.0
New: Activity Log unifies all mail activity — successful sends logged alongside suppressions, send errors, and bounces, with Provider/Mailbox/From columns and a provider filter.
New: emerge_mail_log_sends filter to disable logging of successful sends.
New: Reconnect on an Expired API-key connection re-validates the saved key in place and reactivates it if valid.
Changed: “Bulk sending” renamed to “Throttle connections” — rotates across all mailboxes when on; burst detection removed.
Changed: post-error connection cooldown raised from 10 minutes to 1 hour.
Changed: default log retention lowered from 30 days to 10 days (emerge_mail_log_retention_days).
Changed: send-error/bounce logging and the bounce classifier are now standard; the EMERGE_MAIL_PRO gate is removed.
Fix: a successful send (including Send test) clears a stuck “Expired” status back to “Active”.
Fix: the dashboard failure notice names the provider and auth type, so failures are unambiguous when connections share an email.
Removed: the unsafe “Other admin notices” catch-all in Email Controls (it could suppress admin password resets).
1.3.0
New: SendGrid, Mailgun, Amazon SES (Sigv4, no AWS SDK), Brevo, and Generic SMTP (PHPMailer) providers.
New: per-provider connect forms — credentials are validated against the provider before being persisted.
Changed: failover and throttle mix-and-match freely across OAuth and API-key providers.
Changed: bounce classifier extended with provider-specific patterns for all five new providers.
New: unified Activity Log replaces the Suppression Log (suppressions, send errors, bounces in one table).
New (pro): synchronous bounce detection and provider send-error logging (send.bounce.* / send.error.*).
New: emerge_mail_event_logged and emerge_mail_after_send_attempt actions; pro gate via EMERGE_MAIL_PRO.
Changed: wp_mail() return reflects failure type — transport errors fall back to default mail, recipient bounces return false (emerge_mail_fallback_on_failure filter).
Changed: connection-failure admin notice scoped to Dashboard and Plugins screens.
Schema: emerge_suppression_log renamed to emerge_mail_event_log with new columns; migrated in place.
1.0.0
Initial release.
OAuth connections to Gmail and all Microsoft account types.
Multiple mailboxes with active-first routing, automatic failover, and per-connection cooldown.
Optional throttle that rotates connections, per-connection From override, configurable Sender settings.