How Do I Get Notified When a New User Registers on WordPress?
WordPress sends an admin notification email the moment a user registers, but the default setup is fragile: it goes to one address, carries no context, and fails silently when your hosting blocks outgoing mail. This guide covers every method for getting reliable registration alerts, from fixing the built-in email to routing conditional notifications to different team members based on the role a user receives.
We tested each approach on a standard WordPress 6.5 install and on a WooCommerce site with three staff roles. The results are below, in order of how much they actually fix.
How WordPress Registration Notifications Work by Default
WordPress fires the register_new_user() function when someone completes the registration form. That function calls wp_new_user_notification(), which sends two emails: one to the new user with a password setup link, and one to the site admin email address set under Settings > General > Administration Email Address.
The admin email is a single address. If your site has 5 staff members who all need to know about new registrations, only one of them gets the alert.
That is the first problem. The second is deliverability: on most shared hosting, WordPress sends email through PHP mail, which major providers treat as spam.
A registration notification that lands in spam is functionally identical to no notification at all. Fix delivery before you fix anything else.
Here is what the default notification does and does not include:
- Sends to: the single admin email in Settings > General
- Contains: username, email address, and a link to the user’s profile
- Does not include: user role, registration source, IP address, or any custom field data
- Delivery method: PHP mail, unverified, no DKIM or SPF alignment by default
- Failure behaviour: silent, no retry, no log entry
Step 1, Confirm the Default Notification Is On
Go to Settings > General in your WordPress admin. Check that Administration Email Address contains a working address you actually monitor. That is the only place the default notification can be controlled without code or a plugin.
WordPress does not provide a toggle to turn the admin notification on or off from the Settings screen. The email fires unconditionally unless something in your setup suppresses it.
Check whether any plugin on the site is calling remove_action( 'register_new_user', 'wp_new_user_notification' ) or filtering wp_new_user_notification_email_admin to return false. A security or membership plugin sometimes does this silently.
If the address is correct and nothing is suppressing the hook, move immediately to the delivery problem below. That is where most missing notifications actually fail.
Step 2, Fix Email Delivery First
This step resolves the majority of missing notification complaints. WordPress’s built-in PHP mail has no authentication layer. Gmail, Outlook and most business mail servers reject it or route it to spam, because the sending IP is a shared hosting server with no relationship to your domain.
The fix is SMTP. Install a plugin like WP Mail SMTP and point it at a transactional email service.
We use Postmark in our own setup, but Mailgun, SendGrid and Brevo all work. Any of them gives you:
- Proper DKIM and SPF alignment, so the mail passes authentication checks
- A sending IP with a reputation, not a shared hosting pool
- A delivery log so you can confirm whether the email was sent and whether it bounced
- Retry on soft bounce, rather than WordPress’s fire-and-forget approach
The WordPress.org documentation on the wp_mail() function explains what the function does and does not handle. It does not handle SMTP routing. That is your plugin’s job.
After switching to SMTP, register a test account and check the transactional log. If the email now shows as delivered, the problem was always delivery. If it still does not arrive, move to the next step.
Step 3, Send Notifications to Multiple or Different Email Addresses
The default notification goes to one address. Changing it to a different address or adding more recipients requires either a short code snippet or a plugin that handles it without touching functions.php.
Option A: A Code Snippet
Add this to your site using a snippet manager like Code Snippets. Replace the two addresses with the ones you need:
add_filter( 'wp_new_user_notification_email_admin', function( $email, $user, $blogname ) {
$email['to'] = 'manager@example.com, team@example.com';
return $email;
}, 10, 3 );
This filter was added in WordPress 4.9 and is documented on the official developer reference. The to field accepts a comma-separated string of addresses, so you can notify as many recipients as you need from a single filter.
The limitation is that this sends the same email to everyone. If you need different content or different recipients based on the user’s role, you need conditional logic, which Option B covers.
Option B: A Visual Workflow
If you want to avoid touching code, or if you need logic the filter cannot express (for example, notify the sales manager only when a vendor role registers, and notify support only when a customer role registers), a visual workflow handles this cleanly.
The approach we use is a User Registered trigger with a conditional branch. The Yes path fires when a condition matches, the No path handles everything else.
Each path ends in a Send Email action with its own recipient and body. No code, no fragile filter stacking, and you can test the logic before it goes live using the workflow simulator.
The full setup for a welcome email using the same trigger is documented in the first workflow guide, which you can follow alongside this tutorial.
Step 4, Build a Conditional Registration Notification
This is the gap none of the competing guides address. The default filter sends the same alert to the same address regardless of context. The workflow approach lets you route based on any user attribute available at registration time.
Here is the exact setup we tested, using Krom Automation:
- Install the plugin from the WordPress.org plugin directory. Activate it.
- Go to Krom Automation > Workflows > Add New. You will see a blank canvas.
- Click Add Trigger and select User Registered. This trigger fires the moment WordPress completes registration.
- Click Add Condition and set the condition to User Role equals Vendor. The canvas splits into a Yes branch and a No branch.
- On the Yes branch, add a Send Email action. Set the recipient to your sales manager’s address. In the subject and body, use merge tags to pull in the user’s display name, email, and role. For example:
{{user.display_name}}and{{user.email}}. - On the No branch, add a second Send Email action pointing to your support inbox, with a body suited to standard registrations.
- Save the workflow and toggle it active.
The workflow fires in the background via Action Scheduler, so registration page performance is not affected. Execution logs give you a per-step audit trail for every registration, so you can see exactly which branch fired and what was sent.
The conditions and branching documentation covers every available condition type, including user meta fields set by membership plugins and WooCommerce customer data.
Conditional routing is not a premium feature reserved for enterprise tools. It belongs in the default registration setup for any site with more than one staff role.
What Each Approach Actually Costs You
| Method | Setup time | Multiple recipients | Conditional routing | Execution log | Cost |
|---|---|---|---|---|---|
| WordPress default | 0 min | No | No | No | Free |
| Filter in functions.php | 5 to 10 min | Yes (static list) | Manual PHP only | No | Free, dev time |
| Visual workflow (free tier) | 10 to 15 min | Yes | Yes, visual | Yes, per step | Free |
| Visual workflow (Pro) | 10 to 15 min | Yes | Yes, visual + richer data | Yes, per step | From $69/year |
The free tier covers the User Registered trigger, conditional branching, the Send Email action, merge tags, and execution logging. You do not need Pro for the setup described in Step 4. Pro adds richer trigger data and additional actions like Slack, Discord, and SMS via Twilio, which is useful if your team does not monitor email reliably during peak hours.
Extending Registration Notifications Beyond Email
Email is the obvious channel but often not the fastest. If your team uses Slack, you can add a Slack message action to the same workflow that sends the admin email.
The message arrives in under 2 seconds in our testing. For high-value registrations (for example, a new vendor on a marketplace), that speed difference matters.
If your registration flow runs through a form plugin rather than the native WordPress form, the trigger changes. For Gravity Forms, the relevant setup is in the Gravity Forms integration documentation.
For WPForms, see the WPForms integration documentation. Both give you access to form field data at trigger time, so you can route based on what the user actually filled in, not just their assigned role.
If your site uses a membership plugin and registration flows through it rather than through WordPress core, check whether the plugin fires its own hook. MemberPress, for example, fires on subscription creation rather than user registration. The MemberPress integration handles that correctly.
You might also want to extend what happens after a registration notification: adding the user to a CRM, subscribing them to an email list, or tagging them in FluentCRM. The FluentCRM integration and the Mailchimp integration both connect to the same User Registered trigger, so a single workflow can notify your team and start the onboarding sequence at the same time.
One registration event can notify three team members, tag the user in a CRM, and add them to a welcome sequence. That is not a complicated setup. It takes about 20 minutes on a blank canvas.
Common Reasons Registration Notifications Stop Working
Work through these in order. Skipping ahead wastes time if the problem is actually step one:
- Delivery failure: Check your transactional mail log or SMTP plugin log first. If the email was sent but not received, the problem is spam filtering or an authentication failure, not WordPress configuration.
- A plugin suppressing the hook: Security plugins, membership plugins, and some caching plugins occasionally remove the default notification hook. Search your active plugins for calls to
remove_actiononregister_new_userorwp_new_user_notification. - The admin email address is wrong: Check Settings > General > Administration Email Address. WordPress requires you to confirm a change to this address via a verification link. If you updated it recently and did not click the link, it reverted.
- Custom registration forms bypassing core: Forms built with WPForms, Gravity Forms, or Elementor sometimes create users directly via the REST API or a custom handler, skipping
register_new_user()entirely. In that case, the core notification never fires. Use the form plugin’s own notification settings or a form-specific trigger instead. - User registration is disabled: Go to Settings > General and confirm Anyone can register is checked. If registration is off, no notification fires because no registrations occur.
Disabling Admin Notifications Without Breaking User Notifications
A common but overlooked need: you want the new user to receive their password email, but you do not want the admin alert. On a high-volume membership site that registers hundreds of users a day, the default admin notification becomes noise rather than signal.
The cleanest approach is a one-line filter. Add this to a snippet:
add_filter( 'wp_new_user_notification_email_admin', '__return_false' );
This returns false for the admin email only. The user still receives their password setup email. The WooCommerce documentation notes a similar pattern for order notification suppression, which gives you a sense of how widely this filter approach is used across the WordPress ecosystem.
If you are using a visual workflow for notifications, simply do not include a Send Email action directed at the admin. The workflow can handle the user-facing email and leave the admin untouched.
Also from wpRigel
Pollify is a Gutenberg-native poll, survey, and quiz plugin. Polls are built directly inside the block editor as native blocks with no shortcodes to paste, which makes adding audience feedback to any post or page a two-minute task rather than a configuration exercise in a separate interface.
Commandify is a command palette for the WordPress admin. Press Cmd or Ctrl and K to search anything, navigate anywhere, and run admin actions without clicking through menus. It is the only command palette with real WooCommerce order, product, and customer commands built in, which makes it genuinely useful on busy store sites rather than just a convenience shortcut.
Next Steps
If registration emails are missing, start with SMTP and work through the five-point checklist above. If the core email works but you need conditional routing or multiple recipients, the visual workflow approach in Step 4 takes about 15 minutes and requires no code. If your registration flow goes through a form plugin, check the relevant integration documentation before assuming the core trigger applies.
The free plugin covers everything in this guide. Try Krom Automation free on WordPress.org and have the workflow running before you finish your next coffee.
Frequently Asked Questions
Why am I not getting email notifications when a new user registers?
The most common cause is email delivery failure, not a WordPress configuration problem. Install an SMTP plugin and check the delivery log to confirm whether the email was sent.
If it was sent but not received, the issue is spam filtering or SPF/DKIM alignment on your sending domain. If it was not sent at all, check whether a plugin is suppressing the wp_new_user_notification hook.
How do I send registration notifications to a different email address?
Use the wp_new_user_notification_email_admin filter to change the to field to any address you need. The filter accepts a comma-separated string, so you can include multiple addresses. If you prefer a no-code option, a workflow with a User Registered trigger and a Send Email action handles this in about 10 minutes.
How do I notify different team members based on the user’s role?
Add conditional branching to the workflow. Set a condition on the Yes path for the specific role, add a Send Email action with the relevant recipient, and repeat for each role.
The No path handles any registration that does not match a specific condition. The conditions and branching documentation lists every available condition field.
How do I turn off admin registration emails without affecting the user’s password email?
Add the filter add_filter( 'wp_new_user_notification_email_admin', '__return_false' ); via a snippet plugin. This suppresses only the admin copy. The user still receives their password setup email through the same core function.
Can I get a Slack or SMS alert instead of an email when a user registers?
Yes. The User Registered trigger supports any action the workflow builder offers.
Add a messaging action after the trigger, point it at a Slack channel or a Twilio number, and include merge tags for the user’s name and email. The messaging integrations documentation covers the full setup for Slack, Discord, Twilio, and Telegram.
See full pricing details and compare all plans, annual plans start at $69 and lifetime plans start at $199.