WordPress sends emails you can’t customize. You can’t change who receives them, what they say, or how they look. And if you need to notify your team about content changes, user activity, or security events — WordPress simply doesn’t do that.
Notification fixes this. It gives you complete control over what WordPress sends, to whom, and through which channel. Replace rigid default emails with fully customizable messages, or create entirely new notifications triggered by any WordPress event. No coding required — set up your first notification in under 5 minutes.
WHAT YOU CAN DO WITH THE FREE VERSION
Replace default WordPress emails — Disable any built-in email (new user, password reset, comments, etc.) and replace it with your own version using the built-in Wizard
Create custom notifications — Get notified when posts are published, users register, comments arrive, plugins update, and 50+ other WordPress events
Use dynamic content — Insert Merge Tags like {post_title}, {user_email}, or {comment_content} to personalize every message
Send to anyone — Route notifications to specific email addresses, users, or entire roles
Send via email or webhook — Email is built-in; webhooks let you connect to any external service or automation tool
Control with precision — Enable or disable individual triggers, configure carriers, and set up multiple notifications per event
REPLACE DEFAULT WORDPRESS EMAILS
The built-in Wizard walks you through disabling WordPress default emails and replacing them with your own. You keep full control over the content, recipients, and formatting — no more generic messages you can’t edit.
BUILT-IN TRIGGERS
Over 50 triggers are ready to use out of the box. Enable or disable them in Settings.
Posts & Custom Post Types — published, drafted, updated, pending review, approved, trashed (works with any CPT)
Taxonomy terms — created, updated, deleted (works with any taxonomy)
Notification is designed to be extended. Create custom Triggers from any do_action() call, add Merge Tags in a single line of code, or build entirely new Carriers. The plugin can be bundled with your theme or plugin and white-labeled with one function call.
No 3rd-party plugins needed. The Notification plugin comes with a built-in logger — activate it in Settings > Debugging and you’ll see all notification parameters in a log visible only to you.
Why am I not receiving any emails?
First, check if WordPress sends any emails at all — try resetting your password. If that email doesn’t arrive, the issue is your server configuration, not this plugin. Use any SMTP plugin to fix that.
You can also activate the debug log in plugin settings to confirm whether the notification is being triggered.
Is this plugin for regular users?
Absolutely. The plugin has an intuitive visual interface in the WordPress Admin — no coding skills required. Developers get a powerful API on top of that, but it’s entirely optional.
How do I notify authors when their post is published?
Create a new notification and select the Post Published trigger. Add an Email carrier and set the recipient type to Email/Merge Tag with the value {post_author_user_email}. Use merge tags like {post_title} in the subject and {post_permalink}, {post_publication_datetime} in the body.
How do I get email notifications for posts pending review?
WordPress doesn’t send these by default — it’s one of the most requested missing features. Create a notification with the Post Pending Review trigger. Set the recipient to the Role type and choose Editor (or Administrator). Use {post_title}, {post_author_user_display_name}, and {post_permalink} to build a useful message.
How do I replace the default WordPress new user email?
First, disable the default WordPress new user email in Notifications > Settings > Integrations. Then create a notification with the User Registered trigger. Set the recipient to Email/Merge Tag→{user_email}. Use {user_login}, {user_password_setup_link}, and {site_title} in the body to create your branded welcome message.
How do I get notified about failed login attempts?
Create a notification with the User Login Failed trigger. Set the recipient to the Administrator role. Include {user_login}, {user_IP}, and {user_login_failed_datetime} in the body to see who tried to log in, from where, and when.
How do I know when someone edits a published post?
Use the Post Updated trigger. Set the recipient to the Administrator role (or any role/email you prefer). Include {post_title}, {post_permalink}, {post_updating_user_display_name}, and {post_revision_link} in the body to see what changed and who changed it.
How do I get notified when plugins are activated or updated?
Create two notifications — one with the Plugin Activated trigger and one with the Plugin Updated trigger. Use {plugin_name}, {plugin_version}, and {plugin_activation_date_time} in the message body. Similar triggers are also available for themes.
How do I notify a user when their role changes?
Create a notification with the User Role Changed trigger. Set the recipient to Email/Merge Tag→{user_email} so the affected user gets the notification. Use {user_display_name}, {old_role}, and {new_role} in the body.
How do I set up comment notifications for post authors?
Create a notification with the Comment Published trigger. Set the recipient to Email/Merge Tag→{post_author_user_email} so the post author is notified. Use {comment_author_user_display_name}, {comment_content}, {post_title}, and {post_permalink} in the body.
How is this plugin different from Better Notifications for WP (BNFW)?
Both plugins let you customize WordPress email notifications, but they take different approaches:
Merge Tags vs shortcodes — Notification uses a visual Merge Tag picker with a click-to-insert interface. BNFW uses shortcodes typed into a WYSIWYG editor.
Multiple carriers — Notification has a carrier architecture that supports email, webhooks, and (via extensions) Slack, Discord, Push, SMS, and more. BNFW focuses on email only.
Developer API — Notification lets you create custom triggers from any WordPress action, add merge tags, build new carriers, and bundle/white-label the plugin. BNFW doesn’t offer this level of extensibility.
Extension ecosystem — 20+ extensions for additional carriers (Slack, Twilio, Pushover), conditional logic, scheduled triggers, WooCommerce, and more.
BNFW is a solid choice if you only need to customize email content. Notification is for users who want full control over what gets sent, where, and how.
How does Notification compare to OneSignal?
They solve completely different problems. OneSignal sends browser push notifications to re-engage visitors after they leave your site. Notification sends event-driven alerts (email, webhook, Slack, etc.) when something happens inside WordPress — a post is published, a user registers, a comment needs moderation.
They complement each other rather than compete. Use OneSignal for marketing push notifications to your audience, and Notification for internal workflow alerts for your team.
How does Notification compare to Manage Notification E-mails?
Manage Notification E-mails gives you on/off toggles for default WordPress emails — you can mute them, but that’s it. Notification can also disable default emails, but then lets you replace them with fully customized versions — custom content, custom recipients, merge tags, and multiple carrier options. It’s the difference between muting emails and owning them.
Can I send to a custom recipient list based on my own plugin or theme logic?
Yes, just include filter-id:some-value in the Recipient value (using the Email/Merge tag type with the Email carrier), then return your recipient list from the notification/recipient/email/some-value filter.
Is this plugin capable of sending high volume emails?
The plugin can handle it, but your server probably can’t. For thousands of emails at once, use the SendGrid or Mailgun extensions, which are designed for high volume via a single API call. SMTP typically times out after a dozen emails.
Notifications are now saved into the custom table instead of relying on wp_posts.
Class methods and properties has been changed from snake_case to camelCase.
In Post Triggers, dynamic property $trigger->{$post_type} has been replaced with static prop $trigger->post.
The same as above applies to Post Trigger datetime tags, namely: postCreationDatetime, postPublicationDatetime, and postModificationDatetime.
Post Merge Tags will now use property_name attribute rather than post_type to set trigger property used by resolvers.
Hook notification/data/save and notification/data/save/after now pass Core\Notification instance in the first param instead of the WordPress adapter instance.
Runtime components are now referenced by FQCN (Fully Qualified Class Name), instead of the name.
Namespace changes:
– BracketSpace\Notification\Defaults\ changed to BracketSpace\Notification\Repository\
– BracketSpace\Notification\Abstracts\Carrier changed to BracketSpace\Notification\Repository\Carrier\BaseCarrier
– BracketSpace\Notification\Abstracts\Field changed to BracketSpace\Notification\Repository\Field\BaseField
– BracketSpace\Notification\Abstracts\MergeTag changed to BracketSpace\Notification\Repository\MergeTag\BaseMergeTag
– BracketSpace\Notification\Abstracts\Recipient changed to BracketSpace\Notification\Repository\Recipient\BaseRecipient
– BracketSpace\Notification\Abstracts\Resolver changed to BracketSpace\Notification\Repository\Resolver\BaseResolver
– BracketSpace\Notification\Abstracts\Trigger changed to BracketSpace\Notification\Repository\Trigger\BaseTrigger
Hook depracations:
– notification/data/save/after, use notification/data/saved
Function and method deprecations:
– BracketSpace\Notification\Admin\PostType::getAllNotifications(), use BracketSpace\Notification\Database\NotificationDatabaseService::getAll()
– notification_convert_data(), use BracketSpace\Notification\Core\Notification::from('array', $array)
– notification_register_settings(), use the notification/settings/register action directly
– notification_get_settings(), use \Notification::component('settings')->getSettings()
– notification_update_setting(), use \Notification::component('settings')->updateSetting()
– notification_get_setting(), use \Notification::component('settings')->getSetting()
– notification_adapt(), use BracketSpace\Notification\Core\Notification::to()
– notification_adapt_from(), use BracketSpace\Notification\Core\Notification::from()
– notification_swap_adapter(), use ::from() and ::to() methods on the BracketSpace\Notification\Core\Notification class
– notification_add(), use BracketSpace\Notification\Register::notification()
– notification_log(), use BracketSpace\Notification\Core\Debugger::log()
– notification(), use BracketSpace\Notification\Register::notificationFromArray()
Removed deprecated hooks:
– notitication/admin/notifications/pre, use notification/admin/carriers/pre
– notitication/admin/notifications, use notification/admin/carriers
– notification/email/use_html_mime, use notification/carrier/email/use_html_mime
– notification/email/recipients, use notification/carrier/email/recipients
– notification/email/subject, use notification/carrier/email/subject
– notification/email/message/pre, use notification/carrier/email/message/pre
– notification/email/message/use_autop, use notification/carrier/email/message/use_autop
– notification/email/message, use notification/carrier/email/message
– notification/email/headers, use notification/carrier/email/headers
– notification/email/attachments, use notification/carrier/email/attachments
– notification/webhook/args, use notification/carrier/webhook/args
– notification/webhook/args/{$type}, use notification/carrier/webhook/args/{$type}
– notification/notification/form_fields/values, use notification/carrier/fields/values
Full changelog
[Added] Option to disable notification about admin email address changed.
[Added] New trigger after user confirms his new email address.
[Added] New trigger after admin confirms new site email address.