Skip to content

Follow one email from WordPress to the inbox

Pick what happens to it: an ordinary send, a provider that refuses, everything down, or a staging site in simulation mode. Step through it, or press play.

Follow one email

Step 1 of 9

WordPress sends an email

A contact form, a password reset, an order receipt: WordPress hands the message to wp_mail(), and BooleanSMTP takes it from there.

Email LogsDemo data
StatusRecipientMailer
Deliveredriley@example.comSES
Deliveredmorgan@example.comGOOGLE

Every path, step by step

Delivered

An ordinary send, from WordPress to the inbox.

  1. WordPress sends an email (wp_mail())

    A contact form, a password reset, an order receipt: WordPress hands the message to wp_mail(), and BooleanSMTP takes it from there.

  2. Simulation check (Simulation check)

    Simulation mode is off, so the message goes out for real.

  3. The connection is chosen (Choose the connection)

    BooleanSMTP uses the connection that owns the From address, or your default connection when none does.

  4. It is sent (Send: API or SMTP)

    Out it goes, over the provider’s API or over SMTP, whichever the connection uses.

  5. The provider accepts it (Mail provider)

    Your mail provider takes the message and handles delivery from here.

  6. It is logged as Delivered (Email Logs)

    Email Logs records the recipient, subject, mailer and time.

  7. It reaches the recipient (Recipient)

    Inbox or spam then depends mostly on your domain’s SPF, DKIM and DMARC records.

Fallback saves it

The primary provider fails; the fallback connection delivers.

  1. WordPress sends an email (wp_mail())

    A contact form, a password reset, an order receipt: WordPress hands the message to wp_mail(), and BooleanSMTP takes it from there.

  2. Simulation check (Simulation check)

    Simulation mode is off, so the message goes out for real.

  3. The connection is chosen (Choose the connection)

    BooleanSMTP uses the connection that owns the From address, or your default connection when none does.

  4. It is sent (Send: API or SMTP)

    Out it goes, over the provider’s API or over SMTP, whichever the connection uses.

  5. The provider refuses it (Mail provider)

    Your primary provider turns the message away: an expired key, a suspended account, an outage.

  6. The fallback takes over (Fallback connection)

    BooleanSMTP immediately tries the message once more on your fallback connection, and this time it goes through.

  7. It is logged as Delivered (Email Logs)

    The log shows it went out on the fallback, on the second attempt, so you know the primary needs a look.

  8. It reaches the recipient (Recipient)

    Your customer never knew anything went wrong.

Everything is down

No connection can send it, and you hear about it at once.

  1. WordPress sends an email (wp_mail())

    A contact form, a password reset, an order receipt: WordPress hands the message to wp_mail(), and BooleanSMTP takes it from there.

  2. Simulation check (Simulation check)

    Simulation mode is off, so the message goes out for real.

  3. The connection is chosen (Choose the connection)

    BooleanSMTP uses the connection that owns the From address, or your default connection when none does.

  4. It is sent (Send: API or SMTP)

    Out it goes, over the provider’s API or over SMTP, whichever the connection uses.

  5. The provider refuses it (Mail provider)

    Your primary provider turns the message away: an expired key, a suspended account, an outage.

  6. The fallback fails too (Fallback connection)

    The immediate retry on your fallback connection is refused as well.

  7. It waits and retries (Retry queue)

    With Retry on other connections on, as it is by default, the message is retried on your other active connections: after about 1 minute, then about 5 minutes.

  8. It is logged as Failed (Email Logs)

    When nothing is left to try, Email Logs marks it Failed, with the provider’s error, ready to resend.

  9. You are alerted (Alert)

    Slack, Discord or Telegram tells you, with a link to the log entry, so you hear about it before your customers do.

Simulation mode

On a staging site: nothing is sent, everything is recorded.

  1. WordPress sends an email (wp_mail())

    A contact form, a password reset, an order receipt: WordPress hands the message to wp_mail(), and BooleanSMTP takes it from there.

  2. Simulation mode is on (Simulation check)

    Handy on a staging copy: BooleanSMTP stops the message here, before any connection is chosen.

  3. It is logged as Simulated (Email Logs)

    Email Logs records it as Simulated, so you see exactly what would have gone out.

  4. Nothing is sent (Captured, not sent)

    No provider ever sees it. Turn simulation off when the site goes live.

When a provider says no

  1. Right away

    Sent on its connection

    The message goes out on the connection chosen for it.

  2. If it is refused

    One immediate retry on the fallback connection

    No waiting: your fallback connection gets it straight away.

  3. After about 1 minute

    A retry on your other connections

    Retry on other connections is on by default and uses your other active connections.

  4. After about 5 minutes

    Another retry

    Up to two more attempts, after about 1 and 5 minutes, by default.

  5. Only if all of that fails

    Logged as Failed, and you are alerted

    A message to Slack, Discord, or Telegram links to the log entry, which holds the provider’s error. Resend it from there once it’s fixed.

What the log records

For every email: recipient, subject, status (Delivered, Failed or Simulated), the mailer that sent it, the provider’s error message when there is one, the delivery time and how many attempts it took. You can search and filter the log, preview a message and resend a failed one. Logs are kept 30 days by default.

What an alert contains

When a message finally fails: the provider, recipient, subject and a button that opens the entry in your site’s log, where the provider’s error is. When a connection fails its health check or its sign-in can no longer be refreshed: the connection’s name and provider. Never credentials, hosts or the provider’s raw response.

A BooleanSMTP alert in a chat channel: Email Delivery Failure, a message could not be delivered after all configured attempts, with the recipient, subject, provider and a button to open the logs.

Want the technical version, hook by hook? The documentation’s How sending works covers the same path for developers and support engineers.

Read the docsSee the featuresComing soon to WordPress.org