Every email, logged.
Kaiizen Mail Log records every wp_mail() call your site makes — WooCommerce receipts, password
resets, form notifications, cron digests, all of it — into a dedicated, indexed table built to stay fast
past a million rows.
By default, WordPress sends mail into a void.
wp_mail() either works or it doesn't, and most of the time nobody finds out
which until a customer says their receipt never arrived. The message itself, the plugin that sent it, the
SMTP response, whether it was even attempted — none of that survives past the request that generated it.
Kaiizen Mail Log sits in front of every call to wp_mail() — before it's sent
and after — and keeps a permanent, searchable record. Not in wp_posts, where it
would bloat your content tables; in its own indexed table, designed for the volume a busy site actually
produces.
What ships in 1.0
A dedicated, indexed table
Never touches wp_posts. Indexed on status, subject, recipient, sender, and
source plugin, plus a FULLTEXT index across subject, body, and headers for search that stays fast at
scale.
A full email viewer
Headers, HTML and plain-text bodies, attachments, the raw SMTP response, and exactly which plugin, theme, cron job, or REST route triggered the send.
Resend, with edits
Change the recipient, subject, or body before resending. The resend itself gets logged too.
CSV and JSON export
Filtered or full, streamed in chunks so exporting hundreds of thousands of rows doesn't exhaust memory.
Automatic retention
Keep 7, 30, 90, 180, 365 days, or forever. A daily cron clears out what's past its date on its own.
REST API and WP-CLI
mailscribe/v1 REST routes, and
wp mailscribe list|view|delete|cleanup|export for everything scriptable.
Zero telemetry
No tracking, no phone-home, no premium tier hiding the features that matter. Free, in full, forever.
Fast at row one. Still fast at row five million.
Most email logs are fine until they aren't — a table that was instant at ten thousand rows and unusable at two million. Mail Log is built around the parts of that problem that are actually solvable.
Pages are fetched by WHERE id <, not OFFSET — page 4,000 costs the same as page one.
Subject, body, and headers are indexed for search, not scanned row by row on every keystroke.
Exports and cleanup run in bounded batches, so a five-million-row table never becomes a memory-limit error.
Zero configuration, on purpose
Upload the plugin folder to /wp-content/plugins/.
Activate it from the Plugins screen.
That's it. Emails start logging immediately — visit Kaiizen Mail Log in the admin menu.