How do I enable email notifications in WordPress?

WordPress core sends notification emails by default. New user registration, password reset requests, comment moderation, comment approval, admin alerts for critical updates, and (on WooCommerce sites) order confirmations all fire out of the box. There is nothing to “enable”; the notifications are already on. If they are not arriving, the problem is almost always deliverability rather than a missing toggle.

Most operators who search for “how do I enable email notifications in WordPress” are actually asking one of two related questions: how do I make sure the notifications I expect are being sent (a deliverability issue) or how do I add notifications for events core does not cover (a plugin question). Both have clear answers.

What WordPress notifies about out of the box

Core WordPress and WooCommerce cover the following events without any additional plugin:

  • New user registration. An email to the site admin when someone signs up, and a welcome email with login details to the new user.
  • Password reset requests. The one-click reset link sent when a user clicks “Lost your password?” on the login form.
  • Comment moderation. An email to the post author (or admin) when a comment is held for moderation.
  • Comment approval. An email to the comment author when their comment is approved.
  • Automatic updates. Email to the admin when core, plugin, or theme updates run automatically.
  • Woo order confirmations. Order notifications to the site admin and order confirmations to the customer, plus refund and cancellation emails.

Under Settings > Discussion in the WordPress admin, three checkboxes control the comment-related notifications. Everywhere else, the notifications are wired into the code path and can only be turned off with a plugin or filter.

The most likely reason notifications are not arriving

The notification is being sent by wp_mail() and either failing to leave the server or landing in the recipient’s spam folder. Every WordPress site that “doesn’t send notifications” is really a WordPress site whose outbound mail path is broken. The default sending path (PHP’s mail() function on the local host) is disabled on managed WordPress hosts, throttled on shared hosts, and unauthenticated everywhere. Gmail’s February 2024 sender requirements reject unauthenticated mail outright.

The fix is the same three-step setup every WordPress site needs:

  1. Install a mailer plugin: FluentSMTP, WP Mail SMTP, or Post SMTP.
  2. Connect it to a transactional email provider (Postmark, SMTP2GO, Amazon SES, Brevo, etc.). See transactional email providers for the catalogue.
  3. Publish SPF and DKIM records for your domain per the provider’s onboarding.

See What is the best way to set up email on WordPress? for the setup that scales, Why are my WordPress emails not being delivered? for the diagnosis path, and the WordPress email test suite to confirm the setup works end-to-end.

Adding notifications for events core does not cover

If you want notifications for something core doesn’t send (new posts published, custom post types created, a specific meta value changing, a WooCommerce order status reaching a specific state), several plugins handle it:

  • Better Notifications for WP builds notification templates for a wide catalogue of WordPress events. Free tier covers most of it.
  • Notification by BracketSpace is a more programmable notification builder with a trigger/carrier/recipient model.
  • WPForms, Fluent Forms, and other form plugins let you fire arbitrary email notifications based on form submissions or workflow events.

For code-level customisation, the send_email_change_email, send_password_change_email, and related filters in wp-includes/user.php toggle individual core notifications on and off. wp_mail_from, wp_mail_from_name, and wp_mail_content_type filter the outgoing headers.

Turning notifications off

The opposite question, sometimes: notifications are on and you want them off. Two paths:

  • Disable Emails stops WordPress from sending mail entirely. Useful on staging environments where the last thing you want is a test running to trigger a customer notification.
  • Selective disabling through code, unhooking specific actions. remove_action( 'comment_post', 'wp_new_comment_notify_moderator' ) inside a mu-plugin turns off just the comment-moderation notification, for example.

For monitoring what WordPress is actually sending (rather than assuming), install Check & Log Email or one of the other WordPress email logging plugins. Log everything for a week; the log tells you which notifications fire and where they go, which is usually the fastest way to understand what is and is not working.