Email Log records every email your WordPress site tries to send and stores it in a searchable log inside the AdminEase dashboard. It’s the fastest way to confirm that password resets, order receipts, or contact-form notifications actually went out, and to inspect the body and headers when they didn’t.
What this feature does
Whenever your site calls wp_mail(), AdminEase intercepts the call and writes a row to its own database table with the recipients, sender, subject, full message body, headers, attachments, status (sent or failed), and any error message returned by the mailer. Logged emails are visible from the Debug tab and can be inspected, resent, exported as CSV, or deleted in bulk.
It’s the right tool for diagnosing “the email never arrived” reports, auditing what your site is sending in the background, and validating SMTP configurations after switching providers.
Email Log hooks the standard wp_mail() function and the wp_mail_failed action, so it captures messages regardless of which delivery service handles the outbound traffic. SMTP plugins like WP Mail SMTP, FluentSMTP, and Post SMTP are all logged transparently.
How to enable it
- Open AdminEase › Debug. In the WordPress admin menu, click AdminEase, then switch to the Debug tab.
- Toggle Email Log on. Find the Email Log setting and flip the switch. The settings panel expands to reveal the sub-options.
- Choose your retention. Set Maximum Log Entries and Auto Clear Logs After. Default is 1,000 entries kept for 7 days, which suits most sites.
- Save settings. Scroll down and click Save settings. AdminEase creates the database table on first save and the dashboard reloads so the Email Log screen mounts under the toggle.
Settings reference
| Setting | What it does | Default |
|---|---|---|
| Email Log | Master switch. Off stops new entries from being recorded. Existing entries are preserved. | Off |
| Maximum Log Entries | Hard cap on how many rows the table can hold. Oldest entries are pruned first when the cap is hit. Range: 100 to 100,000. | 1000 |
| Auto Clear Logs After | Maximum age of an entry before the hourly cleanup cron deletes it. Choose 1 Hour, 24 Hours, 7 Days, 30 Days, or Never. | 7 Days |
| Exclude Email Addresses | List of recipients to skip, one per line. Useful for hiding internal monitoring traffic or noisy notification destinations. | Empty |
| Store Full Email Body | When on, the entire HTML and plain-text body is stored. Turn off if you only need the metadata (to, subject, status) and want to keep the table small. | On |
| Log Failed Emails Only | Skips successful sends and logs only the ones that returned an error. Ideal for low-noise debugging once a site is healthy. | Off |
| Auto-Load Email Log | When on, the log fetches its first page as soon as the AdminEase dashboard opens. Off means you click Refresh manually. | Off |
| Log AJAX-Triggered Emails | Includes emails sent from AJAX requests (e.g. form submissions handled over admin-ajax.php) in the log. |
Off |
| Disable Email Sending (Log Only Mode) | Blocks every outgoing email at the mailer level while still recording it in the log. Use on staging environments or when testing forms so customers never receive test mail. | Off |
While Disable Email Sending is on, no email leaves your site. Password resets, order confirmations, contact-form notifications, and admin alerts are all suppressed. AdminEase shows a red indicator in the WordPress admin bar so you can’t forget it’s on. Always switch it off before pointing a domain at a production site.
Using the Email Log
Once enabled, an Email Log panel appears below the settings on the Debug tab. The panel shows a paginated table with one row per logged email and a row of action buttons above it.
Top action bar
- Refresh reloads the current page of entries.
- Clear wipes every row from the table after a confirmation prompt. There is no undo.
- Export downloads a CSV of the current view (filtered, paginated, or full).
- Bulk Delete and Bulk Resend act on whichever rows are checked. Bulk Resend is useful for retrying a batch of failed emails after fixing an SMTP misconfiguration.
Inspecting an email
Click any row to expand the detail panel. The panel groups information into four sections:
- Email Information: timestamp, recipients, sender, subject, status, and email type.
- Message Body: rendered HTML preview, plain-text body, and (for HTML emails) the raw source.
- Headers and Attachments: full header lines and a list of attached file names.
- Context Information: user ID and a “triggered by” hint identifying the action that fired the email (e.g. password reset, comment notification, WooCommerce order).
Resending an email
Each row has a Resend action that re-sends the original message to the original recipients using the current site mailer. Useful when a temporary outage prevented delivery and you want to retry without asking the user to trigger the action again.
Status badges
Email status is shown as a coloured badge: Sent for successful deliveries, Failed when the mailer returned an error, Blocked when Log Only Mode prevented sending.
What happens behind the scenes
Email Log uses one custom table, wp_adminease_email_log, with indexes on timestamp, status, email type, and user ID. Capture happens through the WordPress phpmailer_init action (for outgoing mail) and the wp_mail_failed action (for failures). When Log Only Mode is on, the wp_mail filter short-circuits delivery before the mailer runs.
An hourly cron event named adminease_cleanup_email_logs enforces the Auto Clear Logs After retention window and the Maximum Log Entries cap. The cron is registered when the feature is enabled and unscheduled automatically when AdminEase is deactivated.
Troubleshooting
The Email Log is empty even though I’m sure mail is being sent
Three things to check, in order: confirm the master toggle is on; confirm the recipient isn’t in the Exclude Email Addresses list; if the email is fired from an AJAX endpoint, enable Log AJAX-Triggered Emails. Some plugins bypass wp_mail() entirely and call SMTP libraries directly. Those messages cannot be intercepted by Email Log; switch to a standard SMTP plugin (WP Mail SMTP, FluentSMTP, etc.) so the call goes through wp_mail().
Failed sends show an empty error message
The mailer didn’t return one. Check your SMTP plugin’s own logs for more detail. The most common cause is a misconfigured From address that the receiving server rejects.
The table is huge and slowing down the dashboard
Either lower the Maximum Log Entries cap, set Auto Clear Logs After to a shorter window, or turn off Store Full Email Body. Storing only metadata cuts each row’s size dramatically.
I forgot to turn off Log Only Mode and customers didn’t get their emails
Switch Disable Email Sending off and click Save settings. The blocked emails are still in the log; select them and click Bulk Resend to deliver them retroactively.
