WP Comment Notification
Choose who receives the comment emails WordPress already sends. Send the "Please moderate" email, and optionally the "New comment" email, to your own list of addresses and the post author.
Version 1.5.0 WordPress plugin Free plugin Requires WordPress 6.2 Requires PHP 7.4 Tested up to 7.1 Updated 6 Oct 2026
1. Overview
WP Comment Notification lets you choose who receives the comment emails that WordPress already sends. It does not send any email of its own. It changes the recipients of two standard WordPress emails:
- "Please moderate": sent when a new comment, pingback or trackback arrives and is held in the Pending queue.
- "New comment": sent when a comment is published straight away or approved later. The plugin only takes over this email when you tick Approved comments (off by default).
Out of the box, WordPress sends the "Please moderate" email to the site admin email address, and to the post author when that author can edit the comment. The "New comment" email goes to the post author only. On a site with several editors, moderators or a support team, that means comments can wait in the queue without the right people noticing. This plugin lets you add as many addresses as you need, optionally include the post author, and decide whether the same people also hear about approved comments.
Because WordPress builds and sends the emails, they keep their usual wording, translations, subject lines and action links. Only the list of people they go to changes.
How it works
- You enter email addresses and choose two options on Settings → WP Comment Notification.
- When a new comment is held for moderation, WordPress prepares its "Please moderate" email. The plugin tells WordPress to send it, even if A comment is held for moderation is unticked under Settings → Discussion, and replaces the recipients with your list (plus the post author if you ticked Notify post author).
- If you ticked Approved comments, the same happens for the "New comment" email when a comment is approved.
- WordPress sends one separate email to each recipient, so recipients do not see each other's addresses.
At a glance
Your own recipient list
Any number of addresses for the "Please moderate" email: editors, moderators, a shared support inbox. There is no limit in the code.
Post author option
Optionally add the author of the post that received the comment. Off by default.
Approved comments option
Optionally send the "New comment" email to the same recipients. Off by default.
Address check on save
Invalid addresses are skipped and listed, duplicates are removed, and a warning appears when nobody would be notified about comments held for moderation.
Standard WordPress emails
Wording, translations and links come from WordPress. Works with any SMTP or email log plugin because it uses the normal WordPress mail function.
No noise
Spam and trashed comments are never emailed. Block editor notes keep WordPress's own notifications. For approved comments, the person who wrote or approved the comment is not emailed about it.
What it does not do
- It does not change the wording, subject, layout or sender of the emails. Those come from WordPress and can be changed with WordPress's own filters (see Core filters that still apply).
- It does not decide which comments are held for moderation. That is controlled by Settings → Discussion and by any anti-spam plugin you use.
- It has no per-post, per-category or per-author recipient lists in the settings screen. For routing like that, use the
wp_comment_notification_recipientsfilter (see The recipients filter). - It does not email commenters, does not send digests, and keeps no log of sent emails.
- It does not change notifications for block editor notes (WordPress 6.9 and later).
- It has no shortcodes, blocks, REST routes, WP-CLI commands, widgets, scripts or styles.
2. Requirements
| Item | Requirement | Notes |
|---|---|---|
| WordPress | 6.2 or later | Tested up to 7.1. From the Requires at least and Tested up to lines in the plugin header. |
| PHP | 7.4 or later | From the Requires PHP line in the plugin header. The changelog for 1.5.0 says it was tested with PHP 8.2 to 8.5. |
| WooCommerce | Not required | The plugin contains no WooCommerce code. See What it works with. |
| Other plugins | None required | Any SMTP or email log plugin works, because the emails are sent with the normal WordPress mail function (wp_mail()). |
| Working email on the server | Required for any email to arrive | If your site cannot send email at all (password reset emails included), no comment email will arrive either. Set up an SMTP plugin or fix your hosting's mail. |
| User permission | manage_options | Needed to open and save Settings → WP Comment Notification. By default WordPress gives this to administrators (on multisite, to site administrators). |
| Block editor notes | WordPress 6.9 or later | Only relevant because the plugin deliberately leaves notes alone. The plugin works on versions without notes. |
The plugin has no requirement checks of its own and shows no message when something is missing. WordPress itself uses the Requires at least and Requires PHP header lines when you activate a plugin.
3. Installation
- Open Plugins → Add New Plugin, search for "WP Comment Notification", then click Install Now and Activate. You can also upload the plugin folder or zip file through Plugins → Add New Plugin → Upload Plugin.
- Open Settings → WP Comment Notification. A Settings link also appears next to the plugin on the Plugins screen.
- Check the address list, choose your options and click Save Changes.
What activation creates
Nothing. The plugin has no activation routine: no database tables, no options, no roles, no scheduled events, no pages. The only stored data is one option, wp_comment_notification_settings, and that is created the first time you save the settings screen.
Updating
Update through the normal Dashboard → Updates or Plugins screen. The plugin has no upgrade or migration routine, so an update never rewrites your saved settings. The 1.5.0 upgrade notice in readme.txt says existing settings are kept.
Multisite
The plugin can be activated on a single site or network-wide. It has no network admin screen. Each site has its own Settings → WP Comment Notification screen and its own stored option, so every site in the network has its own recipients. The default list (before a site's first save) uses that site's admin email address and that site's administrators. Deleting the plugin removes the option on every site (see Privacy).
Deactivating and deleting
Deactivating keeps your saved settings in the database and returns comment emails to WordPress's default recipients. Deleting the plugin from the Plugins screen removes the saved settings. The plugin has no deactivation routine.
4. Quick start
- Activate the plugin, then open Settings → WP Comment Notification.
- In Notification email address(es), enter the addresses that should receive the "Please moderate" email, separated by commas or one per line. The box starts filled with your site admin email address and your administrators' addresses. Remove or add addresses as you need.
- Tick Notify post author if the author of the commented post should be emailed too.
- Tick Approved comments if the same people should also get the "New comment" email for approved comments.
- Click Save Changes. If a message lists addresses that were skipped, correct them and save again. If a yellow warning says no recipients are set, add an address or tick Notify post author.
- Test it. Under Settings → Discussion tick Comment must be manually approved, then post a comment on a post while logged out (a private browser window works). Everyone on your list should receive a "Please moderate" email.
5. Features
Several details below describe what WordPress core does after this plugin has chosen the recipients. Those parts were checked against WordPress 7.1.2 and can differ in older versions.
The two emails the plugin controls
| When WordPress sends it | WordPress default recipients | With this plugin | |
|---|---|---|---|
"Please moderate" (subject [Site name] Please moderate: "Post title") | A new comment, pingback or trackback arrives and is held for moderation. | The site admin email address, plus the post author when the author can edit the comment. Only if A comment is held for moderation is ticked under Settings → Discussion. | Always sent for comments held for moderation. Goes to your saved list, plus the post author if Notify post author is ticked. |
"New comment" (subject [Site name] Comment: "Post title", or Pingback: / Trackback: in place of Comment:) | A comment is published straight away, or is approved later. | The post author. Only if Anyone posts a comment is ticked under Settings → Discussion. | Unchanged unless you tick Approved comments. When ticked, it goes to your saved list, plus the post author if Notify post author is ticked, whatever the Discussion setting says. |
The "Please moderate" email
This email is always on. The plugin does not have a switch for it. To stop it for everyone, leave the address list empty and leave Notify post author unticked (the settings screen then shows a warning, because that is rarely what you want).
- When it is sent. WordPress sends it when a new comment is created and is waiting for approval. It is not sent when an approved comment is later set back to Pending, because WordPress does not send it for status changes.
- Which comments. Only comments whose status is Pending (held for moderation). Approved, spam and trashed comments never trigger it.
- The Discussion setting is overridden. The plugin returns "send" for every pending comment, so A comment is held for moderation under Settings → Discussion has no effect while the plugin is active. This is true from the moment you activate it, not only after the first save.
- Who gets it. The recipient list described in How the recipient list is built. Nobody is removed from this email because they wrote the comment.
- What it contains. WordPress's standard text. See What the emails contain.
- Which comments are held. This is not the plugin's decision. WordPress holds comments according to Settings → Discussion (for example Comment must be manually approved, Comment author must have a previously approved comment and the Comment Moderation options) and any anti-spam plugin.
The "New comment" email off by default
Tick Approved comments to send the "New comment" email to your list. It is sent when a comment is published straight away and when a pending comment is approved later.
- When it is sent. WordPress triggers it when a comment is created already approved (through the comment form; a comment created through the REST API does not trigger it, see Troubleshooting), and when a comment is set to Approved through WordPress's status function. That covers the Approve link, the Approve action on the Comments screen (single and bulk), approving through the REST API, and restoring a comment from Trash or Spam when it was approved before. Changing a comment's status inside the Edit Comment screen does not trigger it in WordPress 7.1.2, so no "New comment" email is sent in that case.
- Which comments. Only comments whose status is Approved. Pending, spam and trashed comments are never sent. Comments of the type "note" are left to WordPress.
- The Discussion setting is overridden. While Approved comments is ticked, the email is sent whether or not Anyone posts a comment is ticked under Settings → Discussion.
- When unticked, the plugin does not touch this email at all: WordPress sends it to the post author as usual, following its own Discussion setting.
- Who is left out. The person who wrote the comment and the person who approved it (see Who is never emailed).
How the recipient list is built
For each email, the plugin builds the list in this order:
- It starts with the saved addresses. If you have never saved the settings, it uses the default list (see Before you save the settings).
- If Notify post author is ticked, it adds the email address of the user who is the author of the post the comment belongs to. This is skipped if the post has no author account or the account has no email address. The author is added whether or not they could edit the comment themselves.
- It trims each address, drops anything that is not a valid address, and removes duplicates. Duplicates are matched ignoring upper and lower case and only one copy is kept. If the post author's address is already in your list, the spelling from the author's user account is the one used.
- "New comment" email only: it removes the addresses of the person who wrote the comment and the person who approved it (see Who is never emailed).
- It passes the result through the
wp_comment_notification_recipientsfilter (see The recipients filter), then removes anything that is not a valid address. If a filter returns something that is not an array, nobody is emailed. - It hands the list to WordPress, which sends one email to each address. For the "New comment" email, WordPress applies a few extra checks of its own to the post author's address (see Who is never emailed).
The plugin ignores any recipients that WordPress or other plugins had already put in the list at an earlier stage. It replaces the whole list with the one above. See What it works with for the filter priority involved.
Who is never emailed
- Spam and trashed comments. Neither email is ever sent for them. The "Please moderate" email needs the status Pending. The "New comment" email needs the status Approved.
- Block editor notes (WordPress 6.9 and later; comment type
note). The plugin returns WordPress's own decision and recipients unchanged, so notes keep WordPress's default notifications. - The commenter and the approver, on the "New comment" email. The plugin removes from the list: the email address entered on the comment, the email address of the registered user who wrote it (if any), and the email address of the logged-in user performing the action (for example the person who clicked Approve). Matching ignores upper and lower case. This does not apply to the "Please moderate" email.
- The post author, in three cases (WordPress core, "New comment" email). WordPress removes the post author's address when the post author wrote the comment, when the post author is the logged-in user moderating the comment on their own post, and when the post author can no longer read the post. WordPress matches the address exactly as it is stored on the author's user account (including upper and lower case), so this also applies when the author's address comes from your list.
- Nobody at all. If the list ends up empty, WordPress sends nothing.
Before you save the settings
The plugin only stores settings once you click Save Changes. Until then:
- The recipients are the site admin email address (Settings → General) followed by the email address of every user with the Administrator role. An administrator whose address matches the site admin address (ignoring case) is not repeated.
- The address box on the settings screen is filled with that list.
- Notify post author and Approved comments are both off.
- The "Please moderate" email is already sent for every pending comment, whatever the Discussion setting says.
The first time you save, whatever is in the box becomes a fixed list. Administrators you add to the site later are not added automatically. An empty box you save is stored as empty and does not bring the defaults back.
wp_comment_notification_settings (for example with wp option delete wp_comment_notification_settings if you use WP-CLI) returns the plugin to the "never saved" state described above.Address checking when you save
When you save, the plugin cleans the address box:
- It splits the text wherever it finds a comma, a semicolon, a space or a line break. The screen text only mentions commas and lines, but spaces and semicolons work as separators too.
- Each piece is cleaned and checked with WordPress's email functions. Valid addresses are kept with their original upper and lower case. Duplicates are removed, ignoring case, keeping the first one.
- Anything invalid is skipped. The settings are still saved, and WordPress shows a warning at the top of the screen:
Settings saved, but these addresses are not valid and were skipped: ...followed by the skipped entries, comma separated. When that warning appears, WordPress does not also show its usual "Settings saved." message. - The saved list is stored as one comma separated string.
Things that count as invalid include text without an @ and an address whose domain has no dot (such as name@localhost). Display names do not work: Jane Doe <jane@example.com> is split at the space, so you would see Jane and Doe reported as skipped, while the last piece is cleaned by WordPress (the angle brackets are removed) and saved as jane@example.com. Enter plain addresses only.
Example. If you enter:
editor@example.com; Moderator@Example.com, editor@example.com
not-an-email
the plugin stores editor@example.com,Moderator@Example.com and shows Settings saved, but these addresses are not valid and were skipped: not-an-email.
The "nobody is emailed" warning
At the top of the settings screen, a yellow warning appears when the address box is empty and Notify post author is unticked:
No recipients are set, so nobody is emailed about comments held for moderation. Add at least one address or enable "Notify post author".
The warning is about the "Please moderate" email. It does not appear when the box has at least one address, or when Notify post author is ticked (even with an empty box).
The settings screen
Open Settings → WP Comment Notification (page address options-general.php?page=wp-comment-notification). The screen needs the manage_options capability. It has the heading "WP Comment Notification", a short introduction, the warning described above when it applies, three settings and a Save Changes button. The settings are saved through the standard WordPress settings system (options.php). The introduction reads:
Comments that are held for moderation are always emailed to the recipients below, whatever the "Email me whenever" options under Settings > Discussion say. Comments marked as spam are never emailed.
Every setting, its label and its allowed values are listed in Settings.
What it works with
- SMTP and email log plugins. WordPress sends each email through
wp_mail(), so SMTP plugins, transactional email plugins and email logs see these emails like any other WordPress email. - Pingbacks and trackbacks. They are comments of a different type, and WordPress uses its pingback and trackback wording for them. The plugin treats them like comments.
- WooCommerce product reviews. The plugin contains no WooCommerce code. It acts on whatever WordPress sends through its comment notification functions, and the readme states that product reviews held for moderation reach your list like other comments. That depends on how WooCommerce stores reviews, which is not part of this plugin. One WooCommerce detail matters here: in WooCommerce 11.1.2,
WC_Comments::comment_moderation_recipients()is hooked tocomment_moderation_recipientsat priority 10 and cuts the list for comments on products down to the site admin email address (the post author is dropped). This plugin runs at priority 999 and replaces that list with yours. - Block editor notes. Left alone, as described above.
- Multisite. Per-site settings, see Multisite.
- Other plugins that change comment recipients. The plugin registers its callbacks at priority 999 on the WordPress filters
comment_moderation_recipientsandcomment_notification_recipients(the latter only when Approved comments is ticked). It returns its own list and ignores the list it received, so recipients added by another plugin at a lower priority are discarded. A plugin that runs after it (priority above 999) can still change the final list. - Languages. The email text is WordPress's. When WordPress sends an email to an address that belongs to a user account, it switches to that user's language for that email.
What the emails contain
WordPress writes the emails, so the exact text depends on your WordPress version and language. In WordPress 7.1.2:
- "Please moderate". The post title and link, the commenter's name, IP address and host name, email address and website, the comment text (and a "In reply to" link for a reply), then links to Approve it, Trash it (Delete it when the trash is switched off) and Spam it, followed by the number of comments waiting and a link to the moderation page. For pingbacks and trackbacks the wording changes accordingly.
- "New comment". The post title, the commenter's name, IP address and host name, email address and website, the comment text, the link to the comments on the post and a permalink to the comment. The Trash it (or Delete it) and Spam it links are added only when the post author is allowed to edit the comment. There is no Approve link, because the comment is already approved. The email's Reply-To header is the commenter's address when the comment has one.
The action links open the WordPress admin. Whether the person who clicks them can act depends on their own user account and permissions.
6. Settings
There is one settings screen, Settings → WP Comment Notification, with three settings. They are all stored together in one option, wp_comment_notification_settings (see How the settings are stored). The form field names are wp_comment_notification_settings[wp_comment_notification_emails] and so on.
| Setting (label) | Key | Default | What it does |
|---|---|---|---|
| Notification email address(es) | wp_comment_notification_emails | Never saved: the site admin email address and every administrator's address. After a save: exactly what you saved. | A text box (6 rows) holding the recipients of the "Please moderate" email, and of the "New comment" email when Approved comments is ticked. Separate addresses with commas or put one per line (semicolons and spaces also work). There is no limit on the number of addresses. Invalid addresses are skipped and listed, and duplicates are removed (see Address checking when you save). Leave it empty to email only the post author (if Notify post author is ticked). If it is empty and the author option is off, nobody is emailed. |
| Notify post author | wp_comment_notification_author | Off | A checkbox, label "Also email the author of the post that received the comment." When ticked, the post author's address is added to the recipients of both emails (the "New comment" email only if Approved comments is also ticked). Stored as 1 when ticked, or an empty string. |
| Approved comments | wp_comment_notification_approved | Off | A checkbox, label "Also send the "New comment" email for approved comments (published straight away or approved later) to the same recipients." When ticked, the plugin takes over the "New comment" email: it is sent for every approved comment whatever Anyone posts a comment says under Settings → Discussion, and goes to your recipients instead of only the post author. When unticked, WordPress's default behaviour is left untouched. Stored as 1 when ticked, or an empty string. |
Texts shown on the settings screen
| Where | Text |
|---|---|
| Menu entry and page heading | WP Comment Notification (under Settings) |
| Link on the Plugins screen | Settings |
| Help text under the address box | Comma separated email addresses (one per line also works). These addresses replace the default recipients of comment moderation emails. Leave empty to send them only to the post author (if enabled below). |
| Warning when nobody would be emailed | No recipients are set, so nobody is emailed about comments held for moderation. Add at least one address or enable "Notify post author". |
| Message when some addresses were skipped | Settings saved, but these addresses are not valid and were skipped: (the skipped entries) |
| Message when everything was valid | Settings saved. (shown by WordPress itself) |
How the settings are stored
The option holds an array with three keys, always written together when you save. The checkboxes are stored as '1' or ''. The option is registered with the WordPress settings system as an array and is not exposed through the REST API settings endpoint.
array(
'wp_comment_notification_emails' => 'editor@example.com,moderator@example.com',
'wp_comment_notification_author' => '1',
'wp_comment_notification_approved' => '',
)
7. Developer reference
The plugin is one class in one file. It has no shortcodes, blocks, REST routes, WP-CLI commands, AJAX or admin-post actions, scheduled events, database tables, post, user or comment meta, transients, roles, template files, scripts or styles, and it does not read any constants you can define. It checks the core capability manage_options for its settings screen and adds no capabilities of its own.
The recipients filter
The plugin fires one filter of its own.
| Item | Detail |
|---|---|
| Name | wp_comment_notification_recipients (since 1.5.0) |
| Type | Filter |
Parameter 1: $emails | string[]. The final list: saved addresses, plus the post author if enabled, trimmed, validated and de-duplicated. For the approved context, the commenter and approver are already removed. |
Parameter 2: $comment_id | int. The comment ID. |
Parameter 3: $context | string. moderation (a comment held for moderation) or approved (an approved comment, "New comment" email). |
| Return | An array of addresses. Anything that is not a valid address is removed afterwards. If you return anything other than an array, nobody is emailed. |
| When | Each time WordPress asks for the recipients of the "Please moderate" email (comments other than notes), and of the "New comment" email when Approved comments is ticked (comments other than notes). It does not run for notes, and it does not run for the "New comment" email when the option is off. |
The plugin removes duplicates before the filter runs, not after. If your callback adds an address that is already in the list, the "Please moderate" email goes to that address twice. Check with in_array() before adding.
Examples
Add a team address to the "Please moderate" email:
add_filter( 'wp_comment_notification_recipients', function ( $emails, $comment_id, $context ) {
if ( 'moderation' === $context ) {
$emails[] = 'team@example.com';
}
return $emails;
}, 10, 3 );
Add an extra address to every email about comments on a post type called product, without adding it twice:
add_filter( 'wp_comment_notification_recipients', function ( $emails, $comment_id, $context ) {
$comment = get_comment( $comment_id );
if ( $comment && 'product' === get_post_type( $comment->comment_post_ID ) && ! in_array( 'shop@example.com', $emails, true ) ) {
$emails[] = 'shop@example.com';
}
return $emails;
}, 10, 3 );
Send approved-comment emails only to the post author, ignoring the saved list:
add_filter( 'wp_comment_notification_recipients', function ( $emails, $comment_id, $context ) {
if ( 'approved' !== $context ) {
return $emails;
}
$comment = get_comment( $comment_id );
$post = $comment ? get_post( $comment->comment_post_ID ) : null;
$author = $post ? get_userdata( $post->post_author ) : false;
return $author ? array( $author->user_email ) : array();
}, 10, 3 );
WordPress hooks the plugin uses
| Hook | Type | Priority | Plugin method | What it does |
|---|---|---|---|---|
notify_moderator | Filter (2 arguments) | 999 | maybe_notify_moderator | Returns true when the comment's status is Pending (comment_approved is '0') and false otherwise. Notes: returns the value it received. |
comment_moderation_recipients | Filter (2 arguments) | 999 | moderation_recipients | Returns the recipient list for the moderation context. Notes: returns the list it received. |
notify_post_author | Filter (2 arguments) | 999 | maybe_notify_post_author | When Approved comments is ticked: returns true only when the comment is Approved (comment_approved is '1'). Otherwise, and for notes: returns the value it received. |
comment_notification_recipients | Filter (2 arguments) | 999 | approved_recipients | When Approved comments is ticked: returns the recipient list for the approved context. Otherwise, and for notes: returns the list it received. |
admin_menu | Action | 10 | admin_menu | Adds Settings → WP Comment Notification (capability manage_options, slug wp-comment-notification). |
admin_init | Action | 10 | wp_comment_notification_settings_init | Registers the setting (group wp_comment_notification), the settings section and the three fields. |
plugin_action_links_{plugin basename} | Filter | 10 | plugin_action_links | Adds the Settings link at the start of the plugin's row on the Plugins screen. |
WordPress applies notify_moderator twice for each new pending comment: once before calling wp_notify_moderator() and once inside it. The plugin gives the same answer both times.
Core filters that still apply
The emails are built by WordPress (wp_notify_moderator() and wp_notify_postauthor()), so WordPress's own filters still work on them. These names exist in WordPress 7.1.2:
comment_moderation_subject,comment_moderation_textandcomment_moderation_headersfor the "Please moderate" email.comment_notification_subject,comment_notification_textandcomment_notification_headersfor the "New comment" email.comment_notification_notify_author: returntrueto stop WordPress removing the post author's address in the cases described in Who is never emailed.
See wp_notify_moderator() and wp_notify_postauthor() in the WordPress developer reference.
Option
| Option | Contents | Created and removed |
|---|---|---|
wp_comment_notification_settings | Array with the keys wp_comment_notification_emails (comma separated string), wp_comment_notification_author and wp_comment_notification_approved ('1' or ''). See How the settings are stored. | Created on the first save of the settings screen. Deleted when the plugin is deleted, on every site of a multisite network. Kept on deactivation. |
To read a setting in code, use get_option( 'wp_comment_notification_settings' ) and check that the result is an array: it is false before the first save.
The class
The plugin defines WP_Comment_Notification (guarded by class_exists()) and stores the one instance in $GLOBALS['wp_comment_notification']. The option name is available as WP_Comment_Notification::OPTION. The class is not a documented API and may change, but these public methods exist in 1.5.0:
| Method | What it does |
|---|---|
get_options() | The saved option as an array (an empty array when never saved). |
get_default_notification_mails() | The default list: the site admin email address, then every administrator's address that differs from it. |
get_notification_mail_ids() | The configured addresses as a comma separated string, or the default list when the addresses were never saved. |
get_recipients( $comment_id, $context = 'moderation' ) | Builds the recipient list for a comment (ID or WP_Comment) and runs the wp_comment_notification_recipients filter. $context is moderation or approved. It does not check whether Approved comments is ticked. |
remove_notifications( $maybe_notify, $comment_id ) | Kept for compatibility with earlier versions, which used it to switch off WordPress's moderation email. The plugin no longer hooks it. It now returns the same result as maybe_notify_moderator(). |
File layout
wp-comment-notification.php: the plugin header and the whole class.uninstall.php: removes the option when the plugin is deleted.readme.txt: WordPress.org readme and changelog.
The plugin uses the text domain wp-comment-notification. It does not call load_plugin_textdomain() and ships no languages folder.
8. Privacy
| Topic | Detail |
|---|---|
| Data the plugin stores | Only its settings: the recipient addresses you enter and the two checkbox values. They are kept in the wp_options table as the option wp_comment_notification_settings, in plain text, one copy per site. The addresses are those of your own staff or inboxes. The plugin stores nothing about visitors or commenters and keeps no log of the emails it affects. |
| Cookies | None. |
| Tracking and scripts | None. The plugin loads no JavaScript or CSS and does not track visitors. |
| Data sent to other services | None. The plugin makes no external requests and sends no data to WpExperts Hub or anyone else. |
| Emails | The emails are sent by WordPress with wp_mail() and your site's mail setup (including any SMTP or email log plugin you use, which may keep a copy). Each recipient receives their own email. The emails contain the commenter's name, email address, website, IP address and host name, and the comment text (see What the emails contain). Every address you add therefore receives this personal data. Only add people who are entitled to see it. |
| Host name lookup | When WordPress builds these emails, it looks up the host name for the commenter's IP address, when the comment has one (a reverse DNS lookup). This is done by WordPress itself, not by the plugin. |
| Retention | The plugin keeps no data beyond the settings option. How long the emails themselves are kept depends on your mail server and any email log plugin. |
| Deactivation | Nothing is deleted. The saved settings stay in the database. |
| Uninstall (deleting the plugin) | The option wp_comment_notification_settings is deleted. On multisite, uninstall.php goes through every site returned by get_sites() (with no limit on the number) and deletes the option on each. Nothing else is created, so nothing else needs removing. |
| Privacy policy text, exporter, eraser | None. The plugin registers no privacy policy text, no personal data exporter and no eraser, because it stores no personal data about visitors. |
9. Troubleshooting
| Problem | Likely cause and fix |
|---|---|
| No comment emails arrive at all. | Open Settings → WP Comment Notification and check that your address is in the box and that you clicked Save Changes. Look in your spam folder. If your site sends no email at all (for example password reset emails do not arrive either), set up an SMTP plugin: this plugin uses the standard WordPress mail function. |
| The yellow warning "No recipients are set, so nobody is emailed about comments held for moderation..." is showing. | The address box is empty and Notify post author is unticked. Add at least one address or tick Notify post author, then save. |
| After saving, a message says addresses "are not valid and were skipped". | The listed entries failed WordPress's address check. The rest of the list was saved. Check for typos, for domains without a dot (name@localhost), and for display names such as Jane Doe <jane@example.com>, which are split at the space (the words are reported as skipped, the address itself is saved without the angle brackets). Enter plain addresses and save again. |
| Emails go to people I never added. | You have not saved the settings yet, so the default list is in use: the site admin email address and every administrator. Review the box and click Save Changes. Also check whether Notify post author is ticked, or whether another plugin or your own code adds addresses with the wp_comment_notification_recipients filter. |
| "A comment is held for moderation" is unticked under Settings → Discussion, but moderation emails still arrive. | This is by design. While the plugin is active, every comment held for moderation is emailed to your list regardless of that setting. To stop the email, deactivate the plugin or empty the list and untick Notify post author. |
| I get "Please moderate" emails but no "New comment" emails. | Approved comments is off by default. Tick it and save. Also remember that a comment must be Approved, that you are not emailed about a comment you wrote or approved yourself, and that spam, trashed and note comments are never sent. |
| The person who approved a comment, or who posted it, did not get the "New comment" email. | By design: for the "New comment" email, the plugin removes the commenter's addresses and the address of the logged-in user who performed the action. Everyone else on the list is still notified. This does not apply to the "Please moderate" email. |
| A comment was approved but no "New comment" email was sent. | Check that Approved comments is ticked. In WordPress 7.1.2, WordPress only triggers the email when the comment is approved through its status function (the Approve link, the Approve action on the Comments screen, bulk approve, the REST API). Changing the status inside the Edit Comment screen does not trigger it. |
| The post author stopped receiving "New comment" emails after I ticked "Approved comments". | Your list now replaces WordPress's default recipient, the post author. Tick Notify post author or add their address to the list. |
| The post author is ticked and in the list but did not get the "New comment" email. | WordPress removes the post author's address when the author wrote the comment, when the author is the person moderating on their own post, or when the author can no longer read the post. |
| An address I removed from the list still gets emails, or an address gets two copies. | Another plugin or code is adding it. If it runs after this plugin at priority above 999, or hooks wp_comment_notification_recipients, it can add addresses. A filter callback that adds an address already in the list makes the "Please moderate" email go to it twice. |
| Recipients added by another plugin to the comment moderation emails no longer work. | This plugin runs at priority 999 and replaces the whole list. Add those addresses to this plugin's list, use the wp_comment_notification_recipients filter, or run your code at a priority above 999. |
| Block editor notes are not emailed to my list. | By design. Notes (WordPress 6.9 and later) keep WordPress's own notifications. |
| Comments created through the REST API do not trigger a "Please moderate" email. | In WordPress 7.1.2 the REST API creates comments with wp_insert_comment(), not wp_new_comment(), and WordPress only sends the moderation email from wp_new_comment(). The plugin cannot change that. |
| I cannot find the settings page. | It is under Settings → WP Comment Notification and needs the manage_options capability. You can also use the Settings link on the Plugins screen. On multisite, open it from each site's own admin, not from the network admin. |
| I want the default recipients back. | Delete the option wp_comment_notification_settings (see Before you save the settings), or deactivate the plugin. |
10. FAQ
Which emails does the plugin control?
The "Please moderate" email for comments held for moderation and, if you tick Approved comments, the "New comment" email for approved comments. Only the recipients change. WordPress sends the emails.
Who receives the emails before I save the settings?
The site admin email address and every administrator of the site, for the "Please moderate" email. The "New comment" email is not changed until you tick Approved comments.
What happens if I leave the address list empty?
The "Please moderate" email then goes only to the post author, if Notify post author is ticked. If it is not ticked, nobody is emailed, and the settings page shows a warning. An empty list does not bring the defaults back.
I do not receive any emails. What can I check?
Make sure your address is saved on the settings page and look in your spam folder. If your site does not send any emails at all, set up an SMTP plugin: this plugin uses the standard WordPress mail function.
Why did the person who approved a comment not get the "New comment" email?
Nobody is emailed about a comment they wrote or approved themselves, just like WordPress does for post authors. All other recipients are still notified. This applies to the "New comment" email, not to the "Please moderate" email.
Are spam comments emailed?
No. Comments marked as spam (for example by Akismet) and trashed comments are never emailed by either email.
Can I stop the "Please moderate" email?
There is no switch. While the plugin is active it sends that email for every comment held for moderation, whatever Settings → Discussion says. Empty the address list and untick Notify post author to send it to nobody, or deactivate the plugin to return to WordPress's defaults.
Does it work with WooCommerce product reviews?
The plugin has no WooCommerce-specific code and acts on the comment emails WordPress sends. The readme states that reviews held for moderation are emailed to your list like any other comment.
Does the plugin change the notifications for block editor notes?
No. Notes (WordPress 6.9 and later) are still sent to the post author, as WordPress does by default.
Does it work on multisite?
Yes. Every site of the network has its own recipients under Settings → WP Comment Notification. There is no network-wide screen.
Can I send different comments to different people?
Not from the settings screen. Use the wp_comment_notification_recipients filter, which receives the comment ID, and decide per post, post type or category. See Examples.
Can I change the email text or subject?
Not with this plugin. The text comes from WordPress, so use WordPress's own filters (see Core filters that still apply).
Can I change the recipients in code?
Yes, with the wp_comment_notification_recipients filter. It receives the email addresses, the comment ID and the context: moderation (comment held for moderation) or approved (new approved comment).
What happens to the settings when I delete the plugin?
They are removed from the database, on every site of a multisite network. Deactivating the plugin keeps them.
Where can I get help?
See Support.
11. Changelog
1.5.0 - 29/09/2026
- Fix - Email addresses are validated and sanitised on save (invalid ones are reported and skipped); empty entries no longer cause
wp_mail()calls with an empty recipient. - Fix - Block editor notes (WordPress 6.9+) were sent to the notification list instead of the post author when "Approved comments" was enabled.
- Fix - The person who wrote or approved a comment no longer receives the "New comment" email about it.
- Fix - Settings output escaped; the "Notify post author" checkbox rendered an invalid attribute.
- Fix - The pending comment count used a direct database query; the moderation email is now built by WordPress core, so it keeps core wording and translations.
- New - Option to send the "New comment" email for approved comments and replies to the same recipients.
- New -
wp_comment_notification_recipientsfilter. - Tweak - Settings link on the Plugins screen; settings page uses the standard admin layout and warns when nobody would be emailed.
- Tweak - Settings are removed when the plugin is deleted.
- Tweak - Tested with WordPress 7.1 and PHP 8.2 - 8.5.
1.4 - 30/07/2022
- Fix - Compatibility Fix.
- Fix - Code updated.
1.3 - 09/04/2021
- Fix - Compatibility Fix.
- Fix - Code updated.
1.2 - 05/11/2019
- Fix - Mail notification tweaks.
1.1 - 29/07/2017
- Fix - Mail notification disabled for comments caught in spam.
1.0 - 16/07/2017
- Initial Release.
12. Support
For help, email support@wpexpertshub.com. You can also open a topic in the WordPress.org support forum; bug reports and feature requests are welcome there too.
Please include:
- Your order ID, if you have one.
- The plugin version (Plugins → Installed Plugins), your WordPress version and your PHP version.
- What you expected, what happened instead, and what you have already tried (for example the contents of the settings screen and whether other plugins change comment emails).
- The type of comment (normal comment, reply, pingback, trackback, product review) and whether it was held for moderation or approved.