A free email log for WordPress that shows what failed

Adminkeep records every email your site sends (recipient, sender, subject, headers, attachment names and content) and marks each one Sent, Failed or Unconfirmed. When one fails, the error that came back is kept with it.

free · Tools → Email Log · WordPress 6.9+

Email Log under Tools listing sent, failed and unconfirmed emails
Tools → Email Log: every email the site sent, newest first.

Sent, Failed or Unconfirmed at a glance

Each email gets one of three statuses, and each one means something specific.

Sent

The mail server accepted the email. That is not proof it reached the inbox: the receiving server can still file it as spam or drop it.

Failed

WordPress tried and got an error back. The error is kept and shown in the preview, with any SMTP username or password inside it scrubbed out.

Unconfirmed

WordPress didn't hear back either way, usually because another plugin took over sending or queued the email for later. It may still have gone out.

Filter, search and preview

Filter by status and by period (the last hour up to 30 days, or a date range), and search by recipient, sender or subject. Filtered views live in the address bar, so "failed in the last day" can be bookmarked and checked each morning.

Click a subject to open the email as it was sent, with its Cc, Bcc, Reply-To, attachment names and, for a failed email, the error. The preview is sandboxed: scripts don't run and remote images aren't loaded.

Email Log preview modal showing the rendered HTML of a sent order email
Open any logged email as it was sent. Remote images stay blocked.

Works with any mailer, or none

The email log only listens. It records what wp_mail() was asked to send and changes nothing about how the email is sent, so it works with Adminkeep's own SMTP feature, with another SMTP plugin, or with no SMTP setup at all.

Each email is written to the log the moment wp_mail() is called, before anything else happens. An email that fails partway through still leaves a row behind.

If the log shows failures and you want a proper mail server, Adminkeep also includes SMTP settings with presets for common providers.

Sign-in and reset links kept out of the log

Password-reset, sign-in and account-activation links, in their common formats, are replaced with [link removed] before an email is stored. The rest of the content is kept.

Would rather keep no content at all? Untick one setting and the log stores only the envelope: recipient, sender, subject, headers, attachment names and status.

Only administrators can open the log, and WordPress's personal-data export and erase tools cover it.

Keep a week or up to two years

Choose 7, 14, 30, 60 or 90 days, 1 year or 2 years. The default is 30 days. Older entries are deleted once a day, in batches.

The log also keeps to its newest 10,000 rows, so a burst of sends can't grow it without limit between purges. Uninstalling the plugin removes the log entirely.

Moving from the Email Log plugin

Already running the Email Log plugin? Adminkeep can read its table and copy the history in, with one button under Tools → Email Log or one WP-CLI command. The other plugin's log is left untouched.

Sign-in links are removed on the way in, emails older than your retention setting are skipped, and running the copy again brings only what is new.

Moving from the Email Log plugin →

From WP-CLI

List, read, count, purge and import from the command line. Reading works whether or not logging is switched on, so what was logged stays reachable.

wp adminkeep email-log list --status=failed --format=json
wp adminkeep email-log get 482
wp adminkeep email-log count --status=failed
wp adminkeep email-log purge --older-than=90 --yes
wp adminkeep email-log import email-log --dry-run

WP-CLI reference →

Turn it on in a minute

  1. 01

    Install Adminkeep from Plugins → Add New Plugin (search "Adminkeep") and activate it.

  2. 02

    Go to Settings → Adminkeep and switch on Email Log, in the Email group.

  3. 03

    Every email from then on appears under Tools → Email Log.

How to check if WordPress sent an email

A quick test, what each status means, and how to find the exact error when a password reset goes missing.

Read the guide →

Email Log docs

Every column, filter, setting and command, with what each status means and what is kept.

Read the docs →

Switch on what you need. Forget the rest.

A free WordPress plugin — GPL, instantly reversible, and updates come to you.

Type to search the whole site.