Mailkeep
Mailkeep is a lightweight logging tool for one of the most invisible parts of a WordPress site: outgoing email. Every time WordPress, a plugin or a theme calls wp_mail() — a password reset, a new-order notification, a contact form submission, an admin alert — Mailkeep records it to a dedicated datab
Mailkeep is a lightweight logging tool for one of the most invisible parts of a WordPress site: outgoing email. Every time WordPress, a plugin or a theme calls wp_mail() — a password reset, a new-order notification, a contact form submission, an admin alert — Mailkeep records it to a dedicated database table, independent of whatever SMTP or mail-sending service actually delivers it.
This makes it easy to answer questions that are otherwise hard to check: Did that notification actually get sent? What did the email say? Who received it, and when? You don’t need to reproduce the problem or dig through server mail logs — the answer is in your dashboard.
Because it hooks into wp_mail() itself rather than any particular plugin, Mailkeep works the same way regardless of what generates the email — core, WooCommerce, a contact form, a membership plugin, or custom code.
How it works
- Every outgoing email is written to its own table ( wp_mailkeep_logs ), recording the recipient, subject, message body, headers, attachments list and content type.
- The Mails admin screen lists every logged email with search, pagination and a modal preview of the full content.
- A background daily task removes logs older than your configured retention period, so the table doesn’t grow forever.
- Logging can be paused at any time from Settings without deactivating the plugin.
Built-in privacy protections
Mail bodies routinely contain sensitive one-click links — password resets, order-pay links, login tokens. Storing those in plain text would turn the log table into a security liability. Mailkeep redacts known sensitive query parameters ( key , token , password , otp , order_key , and more, filterable via mailkeep_sensitive_keys ) before anything is written to the database, and this is on by default .
If you’d rather not store message content at all, you can disable body logging entirely and keep only the recipient, subject and timestamp. Mailkeep also registers with WordPress’s built-in personal data export and erasure tools, so logged mail is included when you process a privacy request.
Features
- Full email capture — recipient, subject, headers, message body, attachments and content type.