WordPress default emails in a clean HTML layout, one switch

WordPress writes its own emails as bare plain text: the password reset, the new-user notice, the comment notification, the "your site updated" report. Next to anything else in an inbox they read like a server log. Adminkeep sends those emails, and only those, with your site's name at the top, the text in a card, and a link home at the bottom.

free · Settings → Adminkeep → Email · WordPress 6.9+

The 25 emails it covers

Every email WordPress core writes as plain text: 19 on a single site, and 6 more that exist only on a multisite network. Each one is recognised as WordPress builds it, not guessed from its subject.

Accounts · 9

  • Password reset link
  • New account: login details, to the user
  • New account: notice to the site admin
  • Password changed, to the user
  • Password changed, to the site admin
  • Account email changed, to the old address
  • Confirm a new account email
  • Confirm a new site admin email
  • Site admin email changed, to the old address

Comments · 2

  • New comment, to the post author
  • Comment awaiting moderation

Updates and site health · 4

  • WordPress updated automatically
  • Plugins or themes updated automatically
  • Automatic update debug report
  • Technical issue (recovery mode) notice

Privacy · 4

  • Personal data request: confirm
  • Personal data request confirmed, to the site admin
  • Personal data export ready
  • Personal data erased

Multisite only · 6

  • Activate a new site
  • Activate a new account
  • New site welcome
  • New account welcome
  • Confirm a new network admin email
  • Network admin email changed

Left alone

  • WooCommerce emails, form plugins and every other plugin's email.
  • Any email that is already HTML or multipart, whoever sends it.

One layout, named after your site

Your site's name heads the email and links home. The text WordPress wrote sits in a white card, unchanged: line breaks are kept and web addresses become links, so the reset link still works. The footer names the site again with its address.

There is nothing to design and nothing to configure. The colours are WordPress admin's own, the fonts are the system's, and there are no images, so nothing has to load. Mail clients that support dark-mode styles get a dark version.

Nothing is stored. Switch the feature off and the next email goes out as plain text again.

Works with your mailer and your log

The layout is applied just before the email is handed to the mailer, so it goes out the same way with Adminkeep's own SMTP feature, with another SMTP plugin, or with no SMTP setup at all.

With Email Log on, the log holds the HTML version, which is what was sent, and its preview shows it the way a mail client would.

For developers: one filter

adminkeep_nice_emails_wrap is asked before each plain-text email goes out. It receives true for one of core's emails and false for anything else, the email's id (such as password_reset or comment_notification), and the wp_mail() arguments.

Return false to keep a particular email plain, or true to give a plain-text email of your own the same layout. Emails that already declare HTML are not asked about.

See every one of them in your own inbox

Most of these emails are hard to trigger on purpose: you would need a new account, a pending comment, an automatic update. wp adminkeep emails send makes WordPress send each one for real, through the code that sends it on a live site, to one address of your choosing.

What each email needs is created for the run and removed after it: a throwaway account, a private post with two comments, a personal data request. Your own accounts are not touched.

wp adminkeep feature enable nice_emails
wp adminkeep emails list
wp adminkeep emails send password_reset [email protected]
wp adminkeep emails send --all [email protected]

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 Nice Default Emails, in the Email group.

  3. 03

    Send yourself a password reset from the login page. It arrives in the new layout.

How to send WordPress default emails as HTML

Why WordPress sends its own emails as plain text, why the usual one-line fix breaks them, and the switch that dresses them up.

Read the guide →

Nice Default Emails docs

Every email it covers, what the layout holds, what is left alone, the filter and the WP-CLI commands.

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.