Mail Queue - free WordPress plugin to queue, log and send emails
Take control over how WordPress sends email.
Mail Queue intercepts wp_mail() and routes every outgoing message through a managed queue: configurable sending rate, complete logging, alerts when the queue grows unexpectedly and a pause switch for emergencies.
How the WordPress mail queue works
From wp_mail() to the inbox, on your terms.
When the queue is enabled, Mail Queue intercepts wp_mail() and stores outgoing messages in the database. WP-Cron then releases them gradually at the rate and interval you configure. Your SMTP plugin or mail service keeps doing the actual sending - Mail Queue changes when, not how.
Enabled
Emails are added to the queue and sent gradually by WP-Cron at the rate and interval you configure.
Paused
Emails keep being collected in the queue, but nothing leaves the site until you enable delivery again.
Disabled
The plugin does not intercept wp_mail() and has no effect on outgoing emails at all.
WordPress email queue plugin
Every email through one controlled pipeline.
Mail Queue improves the stability and security of your WordPress installation by delaying and controlling wp_mail() submissions. Nothing leaves your site unlogged, unthrottled or unnoticed.
A managed queue for wp_mail()
Mail Queue intercepts wp_mail() and places outgoing messages in a queue instead of sending them instantly. Every email your site produces - core, themes, plugins, even scheduled (cron) tasks - passes through one controlled pipeline.
Configurable sending rate
You decide how many emails are sent and at what interval, in minutes or even seconds. Useful for staying inside the limits of your SMTP provider and for protecting your sender reputation during bursts - and the plugin notifies you when the configured rate looks unusually high.
Three queue states
Enabled, Paused or Disabled: pause delivery without deactivating the plugin while incoming emails keep being collected - handy while you investigate a form abuse incident or a misfiring plugin.
Complete logging
Queued emails, sent emails, alerts and queue events such as status changes are all logged, and HTML emails can be previewed right in the backend. Search and filter the Log and Queue lists to find any email in seconds - even on sites with very large queues.
Alerts and optional auto-pause
If the queue grows unexpectedly - for example a spam bot hammering your forms - you are alerted immediately and can let the plugin pause delivery automatically. You also get an alert when WordPress is unable to send emails at all.
Priorities and instant sending
A single custom header moves an email to the front of the queue or, for the rare exception, bypasses it completely while still being logged. WordPress password reset emails are prioritized automatically.
Send now from the backend
Select one or more queued emails and release them immediately with the Send now bulk action - no waiting for the next WP-Cron cycle. Individual emails can be resent at any time, and emails that can no longer be sent are marked as failed instead of blocking the queue.
Attachments included
Your form builder supports attachments? You are covered. All attachments are stored temporarily in the queue and sent along with their corresponding emails. Deleting queued emails cleans up their attachments as well - no orphaned files.
WordPress email security
Built for the day something goes wrong.
Imagine a spam bot starts hammering your forms. Without a queue, every submission leaves your server immediately - to real inboxes, under your domain. With Mail Queue, the flood stays on your site and you are the first to know.
The queue absorbs the burst
Instead of leaving your server at once, the suspicious volume piles up in the queue where it can do no harm.
You get alerted
When the queue grows past your configured threshold, Mail Queue notifies you - at most one alert every six hours.
Delivery pauses automatically
Optionally, an alert can auto-pause the queue. Nothing leaves the site until you have had a look.
You review and decide
Search and filter the queue in the backend, delete the junk, release the legitimate emails with one bulk action and re-enable delivery.
Mail Queue also alerts you when WordPress is unable to send emails at all - so a broken mail setup never goes unnoticed. And password reset emails are prioritized automatically, so users are never locked out by a busy queue.
Mail Queue for developers
Priorities, instant sending and clean hooks.
Control per-email behavior with a single custom header. X-Mail-Queue-Prio: High moves an email to the front of the queue. Instant bypasses the queue completely for the rare exception - the email still appears in the log, so delivery stays visible.
WooCommerce - prioritize order emails
add_filter('woocommerce_mail_callback_params', function ( $array ) {
$prio_header = 'X-Mail-Queue-Prio: High';
if (is_array($array[3])) {
$array[3][] = $prio_header;
} else {
$array[3] .= $array[3] ? "\r\n" : '';
$array[3] .= $prio_header;
}
return $array;
}, 10, 1); Contact Form 7 - additional headers field
X-Mail-Queue-Prio: High Add this line under Mail > Additional Headers when editing a form. Use the value Instant instead of High to bypass the queue entirely - sparingly, it skips your throttling.
Supported WordPress core hooks
pre_wp_mailwp_mail_content_typewp_mail_charsetwp_mail_fromwp_mail_from_name
Mail Queue plays nicely with SMTP plugins and sending services such as Mailgun or FluentSMTP - it never touches how emails leave your server. On cached or proxied setups (W3 Total Cache, WP Rocket, NGINX), just make sure WP-Cron is triggered externally every couple of minutes.
Mail Queue FAQ
Frequently asked questions.
Compact answers straight from the official plugin documentation - configuration, caching, MultiSite and everything about priorities.
How does Mail Queue work?
When the queue is enabled, the plugin intercepts wp_mail(). Instead of being sent immediately, emails are stored in the database and released gradually via WP-Cron according to your configured rate and interval.
Does the plugin change HOW my emails are sent?
No. If you use SMTP or a third-party service like Mailgun for sending, everything keeps working exactly as before. Mail Queue only changes WHEN emails are sent, by giving you control over how many emails go out in which interval.
Do I need to configure anything?
Yes. After activating the plugin, open its settings and configure the queue: choose whether it is Enabled, Paused or Disabled, set how many emails are sent and how often, and optionally enable alerts with a queue size threshold and automatic pausing.
What are queue alerts?
Alerts warn you when the queue grows longer than usual, for example because a spam bot is flooding your forms. You define the threshold in the settings. Optionally the queue pauses automatically when an alert is triggered. The plugin sends at most one alert every six hours while the queue remains above the threshold.
Can I pause the queue without disabling the plugin?
Yes. When the queue is set to Paused, the plugin still intercepts wp_mail() and stores outgoing emails, but nothing is sent until you switch the status back to Enabled. Useful for temporarily stopping delivery without losing any emails.
What about attachments from my form builder?
You are covered. All attachments are stored temporarily in the queue and sent along with their corresponding emails.
Can I prioritize certain emails or skip the queue entirely?
Yes. Add the custom header X-Mail-Queue-Prio set to High and the email is sent before normal queued emails. Set it to Instant and the email bypasses the queue completely while still appearing in the log. WordPress password reset emails are prioritized automatically.
Does it work with caching plugins or NGINX proxy caching?
Yes, with one requirement: caching solutions that serve static HTML can prevent WP-Cron from firing regularly. Make sure the WordPress cron is triggered externally every couple of minutes, for example by your hoster or an external cron service.
Can I use Mail Queue on a MultiSite installation?
Yes, with limitations. Do not activate it for the whole network - activate it for each site separately and it works smoothly. Full MultiSite support is planned for a future release.
Does wp_mail() still return true?
Yes, wp_mail() works as expected. When the queue is enabled or paused, it returns true once the email has been accepted by the queue, and false only if the email cannot be written to the database.
Download Mail Queue
Get it from the official WordPress.org directory.
Install it straight from your WordPress dashboard (Plugins > Add New, search for "Mail Queue") or download it from the official plugin directory.
★★★★★
I have tried all of the mail log / email queue plugins I could find and this one is the best overall.
★★★★★
Perfect for batching the sending of our monthly newsletter out to subscribed members.
★★★★★
This plugin is a must have in all my clients’ websites.
Free and open source, GPL-3.0 licensed. Requires WordPress 5.9+ and PHP 7.4+. Available in English, German and Chinese (Taiwan).
Built by Webdesign München
Straight out of our agency practice.
Mail Queue is built and maintained by Webdesign München, a Munich based web agency doing custom WordPress development since 1998. The plugin grew out of real client incidents - spam bots flooding forms, SMTP rate limits, missing email logs - and packages our answer for any WordPress site.