Skip to content

Instantly share code, notes, and snippets.

@johnbillion
Last active July 7, 2025 13:21
Show Gist options
  • Save johnbillion/0a48021de5510c41d517 to your computer and use it in GitHub Desktop.
Save johnbillion/0a48021de5510c41d517 to your computer and use it in GitHub Desktop.

Revisions

  1. johnbillion revised this gist Mar 31, 2019. 1 changed file with 1 addition and 294 deletions.
    295 changes: 1 addition & 294 deletions wp_mail.md
    Original file line number Diff line number Diff line change
    @@ -2,297 +2,4 @@

    This document lists all the situations where WordPress sends an email, along with how to filter or disable each email.

    This is accurate as of WordPress 4.9.

    There are a few TODOs left. Please bear with me.

    - [Comments](#comments)
    - [Change of Admin Email](#change-of-admin-email)
    - [Change of User Email or Password](#change-of-user-email-or-password)
    - [Automatic Updates](#automatic-updates)
    - [New User](#new-user)
    - [New Site](#new-site)
    - [Other](#other)

    ## Comments

    ### Comment is awaiting moderation
    To: Site Admin, plus post author if they can edit comments
    From: WordPress <wordpress@host>
    Subject: [%s] Please moderate: "%s"
    Function: wp_notify_moderator()
    Pluggable: Yes
    Filters: comment_moderation_subject
    comment_moderation_text
    comment_moderation_recipients
    comment_moderation_headers
    Disable: Return false from notify_moderator filter
    Remove wp_new_comment_notify_moderator action on comment_post hook
    "Email me whenever" on Settings -> Discussion
    Overwrite the pluggable function

    ### Comment has been published
    To: Post author
    From: WordPress <wordpress@host>
    Subject: [%s] Comment: "%s"
    [%s] Pingback: "%s"
    [%s] Trackback: "%s"
    Function: wp_notify_postauthor()
    Pluggable: Yes
    Filters: comment_notification_subject
    comment_notification_text
    comment_notification_recipients
    comment_notification_headers
    Disable: Return false from notify_post_author filter
    Remove wp_new_comment_notify_postauthor action on comment_post hook
    Overwrite the pluggable function
    See also the hardcoded action added to wp_set_comment_status in wp_set_comment_status()

    ## Change of Admin Email

    ### Change of site admin email address is attempted (Prior to WordPress 4.9, this was Multisite-only)
    To: Proposed new email address
    From: WordPress <wordpress@host>
    Subject: [%s] New Admin Email Address
    Function: update_option_new_admin_email()
    Pluggable: No
    Filters: new_admin_email_content
    Disable: Remove action on add_option_new_admin_email and update_option_new_admin_email hooks

    ### Site admin email address is changed (WordPress 4.9+)
    To: Old site admin email address
    From: WordPress <wordpress@host>
    Subject: [%s] Notice of Admin Email Change
    Function: wp_site_admin_email_change_notification()
    Pluggable: No
    Filters: site_admin_email_change_email
    Disable: Return false from send_site_admin_email_change_email filter

    ### Multisite only: Change of network admin email address is attempted (WordPress 4.9+)
    To: Proposed new email address
    From: WordPress <wordpress@host>
    Subject: [%s] New Network Admin Email Address
    Function: update_network_option_new_admin_email()
    Pluggable: No
    Filters: new_network_admin_email_content
    Disable: Remove action on add_site_option_new_admin_email and update_site_option_new_admin_email hooks

    ### Multisite only: Network admin email address is changed (WordPress 4.9+)
    To: Old network admin email address
    From: WordPress <wordpress@host>
    Subject: [%s] Notice of Network Admin Email Change
    Function: wp_network_admin_email_change_notification()
    Pluggable: No
    Filters: network_admin_email_change_email
    Disable: Return false from send_network_admin_email_change_email filter

    ## Change of User Email or Password

    ### User requests a password reset via "Lost your password?"
    To: User
    From: WordPress <wordpress@host>
    Subject: [%s] Password Reset
    Function: retrieve_password()
    Pluggable: No
    Filters: retrieve_password_title
    retrieve_password_message
    Disable: Not possible

    ### User resets their password
    To: Site admin
    From: WordPress <wordpress@host>
    Subject: [%s] Password Changed
    Function: wp_password_change_notification()
    Pluggable: Yes
    Filters: wp_password_change_notification_email (WordPress 4.9+)
    Disable: Remove action on after_password_reset hook
    Overwrite the pluggable function

    ### User attempts to change their email address (Prior to WordPress 4.9, this was Multisite-only)
    To: Proposed new email address
    From: WordPress <wordpress@host>
    Subject: [%s] New Email Address
    Function: send_confirmation_on_profile_email()
    Pluggable: No
    Filters: new_user_email_content
    Disable: Remove action on personal_options_update hook

    ### User changes their password
    To: User
    From: WordPress <wordpress@host>
    Subject: [%s] Notice of Password Change
    Function: wp_update_user()
    Pluggable: No
    Filters: password_change_email
    Disable: Return false from send_password_change_email filter

    ### User changes their email address
    To: User
    From: WordPress <wordpress@host>
    Subject: [%s] Notice of Email Change
    Function: wp_update_user()
    Pluggable: No
    Filters: email_change_email
    Disable: Return false from send_email_change_email filter

    ## Automatic Updates

    ### Completion or failure of a background automatic core update
    To: Site admin / Network admin
    From: WordPress <wordpress@host>
    Subject: [%s] Your site has updated to WordPress %s
    [%s] WordPress %s is available. Please update!
    [%s] URGENT: Your site may be down due to a failed update
    Function: WP_Automatic_Updater::send_email()
    Pluggable: No
    Filters: auto_core_update_email
    Disable: Return false from auto_core_update_send_email filter
    Return false from send_core_update_notification_email filter

    ### Full log of background update results, sent when you are using a development version of WordPress
    To: Site admin / Network admin
    From: WordPress <wordpress@host>
    Subject: [%s] There were failures during background updates
    [%s] Background updates have finished
    Function: WP_Automatic_Updater::send_debug_email()
    Pluggable: No
    Filters: automatic_updates_debug_email
    Disable: Return false from automatic_updates_send_debug_email filter

    ## New User

    ### Multisite only: An existing user is invited to a site from Users -> Add New -> Add Existing User
    To: User being invited
    From: WordPress <wordpress@host>
    Subject: [%s] Joining confirmation
    Function: wp-admin/user-new.php
    Pluggable: No
    Filters: None
    Disable: Click the "Skip Confirmation Email" checkbox when adding the user

    ### Multisite only: A new user is invited to a site from Users -> Add New -> Add New User
    To: User being invited
    From: [Network Name] <[network admin]>
    Subject: [%s] Activate %s
    Function: wpmu_signup_user_notification()
    Pluggable: No
    Filters: wpmu_signup_user_notification_subject
    wpmu_signup_user_notification_email
    Disable: Click the "Skip Confirmation Email" checkbox when adding the user
    Return false from wpmu_signup_user_notification filter

    ### Multisite only: A new user account is created
    To: Network Admin
    From: WordPress <wordpress@host>
    Subject: New User Registration: %s
    Function: newuser_notify_siteadmin()
    Pluggable: No
    Filters: newuser_notify_siteadmin
    Disable: Filter registrationnotification option value
    Remove action on wpmu_new_user hook
    Toggle "Registration notification" in Network Admin -> Settings

    ### Multisite only: A user has been added, or their account activation has been successful
    To: User being added
    From: [Network Name] <[network admin]>
    Subject: New %s User: %s
    Function: wpmu_welcome_user_notification()
    Pluggable: No
    Filters: update_welcome_user_subject
    update_welcome_user_email
    See also "Welcome User Email" setting in Network Admin -> Settings
    Disable: Click the "Skip Confirmation Email" checkbox when adding the user
    Return false from wpmu_welcome_user_notification filter
    Remove action on wpmu_activate_user hook

    ### A new user is created (@TODO: needs a lot more information here)

    When a new user is created, two emails are sent from the same function. One to the site admin:

    To: Site Admin
    From: WordPress <wordpress@host>
    Subject: [%s] New User Registration

    and one to the newly created user:

    To: User being added
    From: WordPress <wordpress@host>
    Subject: [%s] Your username and password info

    Details:

    Function: wp_new_user_notification()
    Pluggable: Yes
    Filters: wp_new_user_notification_email_admin (WordPress 4.9+)
    wp_new_user_notification_email (WordPress 4.9+)
    Disable: Remove wp_send_new_user_notifications action on register_new_user hook
    Remove wp_send_new_user_notifications action on edit_user_created_user hook
    Remove wp_send_new_user_notifications action on network_site_new_created_user hook
    Remove wp_send_new_user_notifications action on network_site_users_created_user hook
    Remove wp_send_new_user_notifications action on network_user_new_created_user hook
    Overwrite the pluggable function

    ## New Site

    ### When WordPress is installed, and when a site is added to a Multisite network
    To: Site Admin
    From: WordPress <wordpress@host>
    Subject: New WordPress Site
    Function: wp_new_blog_notification()
    Pluggable: Yes
    Filters: None
    Disable: Overwrite the pluggable function

    ### Multisite only: New site created from Network Admin -> Sites -> Add New
    To: Network Admin
    From: Site Admin <[network admin]>
    Subject: [%s] New Site Created
    Function: wp-admin/network/site-new.php
    Pluggable: No
    Filters: None
    Disable: Not possible

    ### Multisite only: User registers for a new site
    To: Site Admin
    From: [Network Name] <[network admin]>
    Subject: [%s] Activate %s
    Function: wpmu_signup_blog_notification()
    Pluggable: No
    Filters: wpmu_signup_blog_notification_subject
    wpmu_signup_blog_notification_email
    Disable: Return false from wpmu_signup_blog_notification filter
    Remove action on after_signup_site hook

    ### Multisite only: User activates their new site, or site added from Network Admin -> Sites -> Add New
    To: Network Admin
    From: WordPress <wordpress@host>
    Subject: New Site Registration: %s
    Function: newblog_notify_siteadmin()
    Pluggable: No
    Filters: newblog_notify_siteadmin
    Disable: Filter registrationnotification option value
    Remove action on wpmu_new_blog hook
    Toggle "Registration notification" in Network Admin -> Settings

    ### Multisite only: User activates their new site, or site added from Network Admin -> Sites -> Add New
    To: Site Admin
    From: [Network Name] <[network admin]>
    Subject: New %s Site: %s
    Function: wpmu_welcome_notification()
    Pluggable: No
    Filters: update_welcome_subject
    update_welcome_email
    See also "Welcome Email" setting in Network Admin -> Settings
    Disable: Return false from wpmu_welcome_notification filter
    Remove action on wpmu_activate_blog hook

    ## Other

    ### Multisite only: Site admin deletes site from Tools -> Delete Site
    To: Site Admin
    From: WordPress <wordpress@host>
    Subject: [ %s ] Delete My Site
    Function: wp-admin/ms-delete-site.php
    Pluggable: No
    Filters: delete_site_email_content
    Disable: Not possible
    This documentation has moved here: https://github.com/johnbillion/wp_mail
  2. johnbillion revised this gist Nov 20, 2017. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion wp_mail.md
    Original file line number Diff line number Diff line change
    @@ -2,7 +2,7 @@

    This document lists all the situations where WordPress sends an email, along with how to filter or disable each email.

    This is accurate as of WordPress 4.8, and includes some upcoming changes in WordPress 4.9.
    This is accurate as of WordPress 4.9.

    There are a few TODOs left. Please bear with me.

  3. johnbillion revised this gist Oct 7, 2017. 1 changed file with 215 additions and 247 deletions.
    462 changes: 215 additions & 247 deletions wp_mail.md
    Original file line number Diff line number Diff line change
    @@ -2,7 +2,9 @@

    This document lists all the situations where WordPress sends an email, along with how to filter or disable each email.

    This is accurate as of WordPress 4.8, and includes several upcoming changes in WordPress 4.9.
    This is accurate as of WordPress 4.8, and includes some upcoming changes in WordPress 4.9.

    There are a few TODOs left. Please bear with me.

    - [Comments](#comments)
    - [Change of Admin Email](#change-of-admin-email)
    @@ -15,316 +17,282 @@ This is accurate as of WordPress 4.8, and includes several upcoming changes in W
    ## Comments

    ### Comment is awaiting moderation

    | | |
    |-|-|
    | To: | Site admin <br> Post author if they can edit comments |
    | From: | WordPress <`wordpress@host`> |
    | Subject: | [%s] Please moderate: "%s" |
    | Function: | `wp_notify_moderator()` |
    | Pluggable: | Yes |
    | Filters: | `comment_moderation_subject` <br> `comment_moderation_text` <br> `comment_moderation_recipients` <br> `comment_moderation_headers` |
    | Disable: | Return false from [`notify_moderator`](https://developer.wordpress.org/reference/hooks/notify_moderator/) filter <br> Remove `wp_new_comment_notify_moderator` action on `comment_post` hook <br> "Email me whenever" on Settings -> Discussion screen <br> Overwrite the pluggable function |
    To: Site Admin, plus post author if they can edit comments
    From: WordPress <wordpress@host>
    Subject: [%s] Please moderate: "%s"
    Function: wp_notify_moderator()
    Pluggable: Yes
    Filters: comment_moderation_subject
    comment_moderation_text
    comment_moderation_recipients
    comment_moderation_headers
    Disable: Return false from notify_moderator filter
    Remove wp_new_comment_notify_moderator action on comment_post hook
    "Email me whenever" on Settings -> Discussion
    Overwrite the pluggable function

    ### Comment has been published

    | | |
    |-|-|
    | To: | Post author |
    | From: | WordPress <`wordpress@host`> |
    | Subject: | [%s] Comment: "%s" <br> [%s] Pingback: "%s" <br> [%s] Trackback: "%s" |
    | Function: | `wp_notify_postauthor()` |
    | Pluggable: | Yes |
    | Filters: | `comment_notification_subject` <br> `comment_notification_text` <br> `comment_notification_recipients` <br> `comment_notification_headers` |
    | Disable: | Return false from `notify_post_author` filter <br> Remove `wp_new_comment_notify_postauthor` action on `comment_post` hook <br> Overwrite the pluggable function <br> See also the hardcoded action added to `wp_set_comment_status` in `wp_set_comment_status()` |
    To: Post author
    From: WordPress <wordpress@host>
    Subject: [%s] Comment: "%s"
    [%s] Pingback: "%s"
    [%s] Trackback: "%s"
    Function: wp_notify_postauthor()
    Pluggable: Yes
    Filters: comment_notification_subject
    comment_notification_text
    comment_notification_recipients
    comment_notification_headers
    Disable: Return false from notify_post_author filter
    Remove wp_new_comment_notify_postauthor action on comment_post hook
    Overwrite the pluggable function
    See also the hardcoded action added to wp_set_comment_status in wp_set_comment_status()

    ## Change of Admin Email

    ### Change of site admin email address is attempted (Prior to WordPress 4.9, this was Multisite-only)

    | | |
    |-|-|
    | To: | Proposed new email address |
    | From: | WordPress <`wordpress@host`> |
    | Subject: | [%s] New Admin Email Address |
    | Function: | `update_option_new_admin_email()` |
    | Pluggable: | No |
    | Filters: | `new_admin_email_content` |
    | Disable: | Remove action on `add_option_new_admin_email` and `update_option_new_admin_email` hooks |
    To: Proposed new email address
    From: WordPress <wordpress@host>
    Subject: [%s] New Admin Email Address
    Function: update_option_new_admin_email()
    Pluggable: No
    Filters: new_admin_email_content
    Disable: Remove action on add_option_new_admin_email and update_option_new_admin_email hooks

    ### Site admin email address is changed (WordPress 4.9+)

    | | |
    |-|-|
    | To: | Old site admin email address |
    | From: | WordPress <`wordpress@host`> |
    | Subject: | [%s] Notice of Admin Email Change |
    | Function: | `wp_site_admin_email_change_notification()` |
    | Pluggable: | No |
    | Filters: | `site_admin_email_change_email` |
    | Disable: | Return false from `send_site_admin_email_change_email` filter |
    To: Old site admin email address
    From: WordPress <wordpress@host>
    Subject: [%s] Notice of Admin Email Change
    Function: wp_site_admin_email_change_notification()
    Pluggable: No
    Filters: site_admin_email_change_email
    Disable: Return false from send_site_admin_email_change_email filter

    ### Multisite only: Change of network admin email address is attempted (WordPress 4.9+)

    | | |
    |-|-|
    | To: | Proposed new email address |
    | From: | WordPress <`wordpress@host`> |
    | Subject: | [%s] New Network Admin Email Address |
    | Function: | `update_network_option_new_admin_email()` |
    | Pluggable: | No |
    | Filters: | `new_network_admin_email_content` |
    | Disable: | Remove action on `add_site_option_new_admin_email` and `update_site_option_new_admin_email` hooks |
    To: Proposed new email address
    From: WordPress <wordpress@host>
    Subject: [%s] New Network Admin Email Address
    Function: update_network_option_new_admin_email()
    Pluggable: No
    Filters: new_network_admin_email_content
    Disable: Remove action on add_site_option_new_admin_email and update_site_option_new_admin_email hooks

    ### Multisite only: Network admin email address is changed (WordPress 4.9+)

    | | |
    |-|-|
    | To: | Old network admin email address |
    | From: | WordPress <`wordpress@host`> |
    | Subject: | [%s] Notice of Network Admin Email Change |
    | Function: | `wp_network_admin_email_change_notification()` |
    | Pluggable: | No |
    | Filters: | `network_admin_email_change_email` |
    | Disable: | Return false from `send_network_admin_email_change_email` filter |
    To: Old network admin email address
    From: WordPress <wordpress@host>
    Subject: [%s] Notice of Network Admin Email Change
    Function: wp_network_admin_email_change_notification()
    Pluggable: No
    Filters: network_admin_email_change_email
    Disable: Return false from send_network_admin_email_change_email filter

    ## Change of User Email or Password

    ### User requests a password reset via "Lost your password?"

    | | |
    |-|-|
    | To: | User |
    | From: | WordPress <`wordpress@host`> |
    | Subject: | [%s] Password Reset |
    | Function: | `retrieve_password()` |
    | Pluggable: | No |
    | Filters: | `retrieve_password_title` <br> `retrieve_password_message` |
    | Disable: | Not possible |
    To: User
    From: WordPress <wordpress@host>
    Subject: [%s] Password Reset
    Function: retrieve_password()
    Pluggable: No
    Filters: retrieve_password_title
    retrieve_password_message
    Disable: Not possible

    ### User resets their password

    | | |
    |-|-|
    | To: | Site admin |
    | From: | WordPress <`wordpress@host`> |
    | Subject: | [%s] Password Changed |
    | Function: | `wp_password_change_notification()` |
    | Pluggable: | Yes |
    | Filters: | `wp_password_change_notification_email` (WordPress 4.9+) |
    | Disable: | Remove action on `after_password_reset` hook <br> Overwrite the pluggable function |
    To: Site admin
    From: WordPress <wordpress@host>
    Subject: [%s] Password Changed
    Function: wp_password_change_notification()
    Pluggable: Yes
    Filters: wp_password_change_notification_email (WordPress 4.9+)
    Disable: Remove action on after_password_reset hook
    Overwrite the pluggable function

    ### User attempts to change their email address (Prior to WordPress 4.9, this was Multisite-only)

    | | |
    |-|-|
    | To: | Proposed new email address |
    | From: | WordPress <`wordpress@host`> |
    | Subject: | [%s] New Email Address |
    | Function: | `send_confirmation_on_profile_email()` |
    | Pluggable: | No |
    | Filters: | `new_user_email_content` |
    | Disable: | Remove action on `personal_options_update` hook |
    To: Proposed new email address
    From: WordPress <wordpress@host>
    Subject: [%s] New Email Address
    Function: send_confirmation_on_profile_email()
    Pluggable: No
    Filters: new_user_email_content
    Disable: Remove action on personal_options_update hook

    ### User changes their password

    | | |
    |-|-|
    | To: | User |
    | From: | WordPress <`wordpress@host`> |
    | Subject: | [%s] Notice of Password Change |
    | Function: | `wp_update_user()` |
    | Pluggable: | No |
    | Filters: | `password_change_email` |
    | Disable: | Return false from `send_password_change_email` filter |
    To: User
    From: WordPress <wordpress@host>
    Subject: [%s] Notice of Password Change
    Function: wp_update_user()
    Pluggable: No
    Filters: password_change_email
    Disable: Return false from send_password_change_email filter

    ### User changes their email address

    | | |
    |-|-|
    | To: | User |
    | From: | WordPress <`wordpress@host`> |
    | Subject: | [%s] Notice of Email Change |
    | Function: | `wp_update_user()` |
    | Pluggable: | No |
    | Filters: | `email_change_email` |
    | Disable: | Return false from `send_email_change_email` filter |
    To: User
    From: WordPress <wordpress@host>
    Subject: [%s] Notice of Email Change
    Function: wp_update_user()
    Pluggable: No
    Filters: email_change_email
    Disable: Return false from send_email_change_email filter

    ## Automatic Updates

    ### Completion or failure of a background automatic core update

    | | |
    |-|-|
    | To: | Site admin / Network admin |
    | From: | WordPress <`wordpress@host`> |
    | Subject: | [%s] Your site has updated to WordPress %s <br> [%s] WordPress %s is available. Please update! <br> [%s] URGENT: Your site may be down due to a failed update |
    | Function: | `WP_Automatic_Updater::send_email()` |
    | Pluggable: | No |
    | Filters: | `auto_core_update_email` |
    | Disable: | Return false from `auto_core_update_send_email` filter <br> Return false from `send_core_update_notification_email` filter |
    To: Site admin / Network admin
    From: WordPress <wordpress@host>
    Subject: [%s] Your site has updated to WordPress %s
    [%s] WordPress %s is available. Please update!
    [%s] URGENT: Your site may be down due to a failed update
    Function: WP_Automatic_Updater::send_email()
    Pluggable: No
    Filters: auto_core_update_email
    Disable: Return false from auto_core_update_send_email filter
    Return false from send_core_update_notification_email filter

    ### Full log of background update results, sent when you are using a development version of WordPress

    | | |
    |-|-|
    | To: | Site admin / Network admin |
    | From: | WordPress <`wordpress@host`> |
    | Subject: | [%s] There were failures during background updates <br> [%s] Background updates have finished |
    | Function: | `WP_Automatic_Updater::send_debug_email()` |
    | Pluggable: | No |
    | Filters: | `automatic_updates_debug_email` |
    | Disable: | Return false from `automatic_updates_send_debug_email` filter |
    To: Site admin / Network admin
    From: WordPress <wordpress@host>
    Subject: [%s] There were failures during background updates
    [%s] Background updates have finished
    Function: WP_Automatic_Updater::send_debug_email()
    Pluggable: No
    Filters: automatic_updates_debug_email
    Disable: Return false from automatic_updates_send_debug_email filter

    ## New User

    ### Multisite only: An existing user is invited to a site from Users -> Add New -> Add Existing User

    | | |
    |-|-|
    | To: | User being invited |
    | From: | WordPress <`wordpress@host`> |
    | Subject: | [%s] Joining confirmation |
    | Function: | `wp-admin/user-new.php` |
    | Pluggable: | No |
    | Filters: | None |
    | Disable: | Click the "Skip Confirmation Email" checkbox when adding the user |
    To: User being invited
    From: WordPress <wordpress@host>
    Subject: [%s] Joining confirmation
    Function: wp-admin/user-new.php
    Pluggable: No
    Filters: None
    Disable: Click the "Skip Confirmation Email" checkbox when adding the user

    ### Multisite only: A new user is invited to a site from Users -> Add New -> Add New User

    | | |
    |-|-|
    | To: | User being invited |
    | From: | [Network Name] <[network admin email address]> |
    | Subject: | [%s] Activate %s |
    | Function: | `wpmu_signup_user_notification()` |
    | Pluggable: | No |
    | Filters: | `wpmu_signup_user_notification_subject` <br> `wpmu_signup_user_notification_email` |
    | Disable: | Click the "Skip Confirmation Email" checkbox when adding the user <br> Return false from `wpmu_signup_user_notification` filter |
    To: User being invited
    From: [Network Name] <[network admin]>
    Subject: [%s] Activate %s
    Function: wpmu_signup_user_notification()
    Pluggable: No
    Filters: wpmu_signup_user_notification_subject
    wpmu_signup_user_notification_email
    Disable: Click the "Skip Confirmation Email" checkbox when adding the user
    Return false from wpmu_signup_user_notification filter

    ### Multisite only: A new user account is created

    | | |
    |-|-|
    | To: | Network Admin |
    | From: | WordPress <`wordpress@host`> |
    | Subject: | New User Registration: %s |
    | Function: | `newuser_notify_siteadmin()` |
    | Pluggable: | No |
    | Filters: | `newuser_notify_siteadmin` |
    | Disable: | Filter `registrationnotification` option value <br> Remove action on `wpmu_new_user` hook <br> Toggle "Registration notification" in Network Admin -> Settings |
    To: Network Admin
    From: WordPress <wordpress@host>
    Subject: New User Registration: %s
    Function: newuser_notify_siteadmin()
    Pluggable: No
    Filters: newuser_notify_siteadmin
    Disable: Filter registrationnotification option value
    Remove action on wpmu_new_user hook
    Toggle "Registration notification" in Network Admin -> Settings

    ### Multisite only: A user has been added, or their account activation has been successful

    | | |
    |-|-|
    | To: | User being added |
    | From: | [Network Name] <[network admin email address]> |
    | Subject: | New %s User: %s |
    | Function: | `wpmu_welcome_user_notification()` |
    | Pluggable: | No |
    | Filters: | `update_welcome_user_subject` <br> `update_welcome_user_email` <br> See also "Welcome User Email" setting in Network Admin -> Settings |
    | Disable: | Click the "Skip Confirmation Email" checkbox when adding the user <br> Return false from `wpmu_welcome_user_notification` filter <br> Remove action on `wpmu_activate_user` hook |
    To: User being added
    From: [Network Name] <[network admin]>
    Subject: New %s User: %s
    Function: wpmu_welcome_user_notification()
    Pluggable: No
    Filters: update_welcome_user_subject
    update_welcome_user_email
    See also "Welcome User Email" setting in Network Admin -> Settings
    Disable: Click the "Skip Confirmation Email" checkbox when adding the user
    Return false from wpmu_welcome_user_notification filter
    Remove action on wpmu_activate_user hook

    ### A new user is created (@TODO: needs a lot more information here)

    When a new user is created, two emails are sent from the same function. One to the site admin:

    | | |
    |-|-|
    | To: | Site Admin |
    | From: | WordPress <`wordpress@host`> |
    | Subject: | [%s] New User Registration |
    To: Site Admin
    From: WordPress <wordpress@host>
    Subject: [%s] New User Registration

    and one to the newly created user:

    | | |
    |-|-|
    | To: | User being added |
    | From: | WordPress <`wordpress@host`> |
    | Subject: | [%s] Your username and password info |
    To: User being added
    From: WordPress <wordpress@host>
    Subject: [%s] Your username and password info

    Details:

    | | |
    |-|-|
    | Function: | `wp_new_user_notification()` |
    | Pluggable: | Yes |
    | Filters: | `wp_new_user_notification_email_admin` (WordPress 4.9+) <br> `wp_new_user_notification_email` (WordPress 4.9+) |
    | Disable: | Remove `wp_send_new_user_notifications` action on `register_new_user` hook <br> Remove `wp_send_new_user_notifications` action on `edit_user_created_user` hook <br> Remove `wp_send_new_user_notifications` action on `network_site_new_created_user` hook <br> Remove `wp_send_new_user_notifications` action on `network_site_users_created_user` hook <br> Remove `wp_send_new_user_notifications` action on `network_user_new_created_user` hook <br> Overwrite the pluggable function |
    Function: wp_new_user_notification()
    Pluggable: Yes
    Filters: wp_new_user_notification_email_admin (WordPress 4.9+)
    wp_new_user_notification_email (WordPress 4.9+)
    Disable: Remove wp_send_new_user_notifications action on register_new_user hook
    Remove wp_send_new_user_notifications action on edit_user_created_user hook
    Remove wp_send_new_user_notifications action on network_site_new_created_user hook
    Remove wp_send_new_user_notifications action on network_site_users_created_user hook
    Remove wp_send_new_user_notifications action on network_user_new_created_user hook
    Overwrite the pluggable function

    ## New Site

    ### When WordPress is installed, and when a site is added to a Multisite network

    | | |
    |-|-|
    | To: | Site Admin |
    | From: | WordPress <`wordpress@host`> |
    | Subject: | New WordPress Site |
    | Function: | `wp_new_blog_notification()` |
    | Pluggable: | Yes |
    | Filters: | None |
    | Disable: | Overwrite the pluggable function |
    To: Site Admin
    From: WordPress <wordpress@host>
    Subject: New WordPress Site
    Function: wp_new_blog_notification()
    Pluggable: Yes
    Filters: None
    Disable: Overwrite the pluggable function

    ### Multisite only: New site created from Network Admin -> Sites -> Add New

    | | |
    |-|-|
    | To: | Network Admin |
    | From: | Site Admin <[network admin email address]> |
    | Subject: | [%s] New Site Created |
    | Function: |` wp-admin/network/site-new.php` |
    | Pluggable: | No |
    | Filters: | None |
    | Disable: | Not possible |
    To: Network Admin
    From: Site Admin <[network admin]>
    Subject: [%s] New Site Created
    Function: wp-admin/network/site-new.php
    Pluggable: No
    Filters: None
    Disable: Not possible

    ### Multisite only: User registers for a new site

    | | |
    |-|-|
    | To: | Site Admin |
    | From: | [Network Name] <[network admin email address]> |
    | Subject: | [%s] Activate %s |
    | Function: | `wpmu_signup_blog_notification()` |
    | Pluggable: | No |
    | Filters: | `wpmu_signup_blog_notification_subject` <br> `wpmu_signup_blog_notification_email` |
    | Disable: | Return false from `wpmu_signup_blog_notification` filter <br> Remove action on `after_signup_site` hook |
    To: Site Admin
    From: [Network Name] <[network admin]>
    Subject: [%s] Activate %s
    Function: wpmu_signup_blog_notification()
    Pluggable: No
    Filters: wpmu_signup_blog_notification_subject
    wpmu_signup_blog_notification_email
    Disable: Return false from wpmu_signup_blog_notification filter
    Remove action on after_signup_site hook

    ### Multisite only: User activates their new site, or site added from Network Admin -> Sites -> Add New

    | | |
    |-|-|
    | To: | Network Admin |
    | From: | WordPress <`wordpress@host`> |
    | Subject: | New Site Registration: %s |
    | Function: | `newblog_notify_siteadmin()` |
    | Pluggable: | No |
    | Filters: | `newblog_notify_siteadmin` |
    | Disable: | Filter `registrationnotification` option value <br> Remove action on `wpmu_new_blog` hook <br> Toggle "Registration notification" in Network Admin -> Settings |
    To: Network Admin
    From: WordPress <wordpress@host>
    Subject: New Site Registration: %s
    Function: newblog_notify_siteadmin()
    Pluggable: No
    Filters: newblog_notify_siteadmin
    Disable: Filter registrationnotification option value
    Remove action on wpmu_new_blog hook
    Toggle "Registration notification" in Network Admin -> Settings

    ### Multisite only: User activates their new site, or site added from Network Admin -> Sites -> Add New

    | | |
    |-|-|
    | To: | Site Admin |
    | From: | [Network Name] <[network admin email address]> |
    | Subject: | New %s Site: %s |
    | Function: | `wpmu_welcome_notification()` |
    | Pluggable: | No |
    | Filters: | `update_welcome_subject` <br> `update_welcome_email` <br> See also "Welcome Email" setting in Network Admin -> Settings |
    | Disable: | Return false from `wpmu_welcome_notification` filter <br> Remove action on `wpmu_activate_blog` hook |
    To: Site Admin
    From: [Network Name] <[network admin]>
    Subject: New %s Site: %s
    Function: wpmu_welcome_notification()
    Pluggable: No
    Filters: update_welcome_subject
    update_welcome_email
    See also "Welcome Email" setting in Network Admin -> Settings
    Disable: Return false from wpmu_welcome_notification filter
    Remove action on wpmu_activate_blog hook

    ## Other

    ### Multisite only: Site admin deletes site from Tools -> Delete Site

    | | |
    |-|-|
    | To: | Site Admin |
    | From: | WordPress <`wordpress@host`> |
    | Subject: | [ %s ] Delete My Site |
    | Function: | `wp-admin/ms-delete-site.php` |
    | Pluggable: | No |
    | Filters: | `delete_site_email_content` |
    | Disable: | Not possible |
    To: Site Admin
    From: WordPress <wordpress@host>
    Subject: [ %s ] Delete My Site
    Function: wp-admin/ms-delete-site.php
    Pluggable: No
    Filters: delete_site_email_content
    Disable: Not possible
  4. johnbillion revised this gist Oct 7, 2017. 1 changed file with 247 additions and 215 deletions.
    462 changes: 247 additions & 215 deletions wp_mail.md
    Original file line number Diff line number Diff line change
    @@ -2,9 +2,7 @@

    This document lists all the situations where WordPress sends an email, along with how to filter or disable each email.

    This is accurate as of WordPress 4.8, and includes some upcoming changes in WordPress 4.9.

    There are a few TODOs left. Please bear with me.
    This is accurate as of WordPress 4.8, and includes several upcoming changes in WordPress 4.9.

    - [Comments](#comments)
    - [Change of Admin Email](#change-of-admin-email)
    @@ -17,282 +15,316 @@ There are a few TODOs left. Please bear with me.
    ## Comments

    ### Comment is awaiting moderation
    To: Site Admin, plus post author if they can edit comments
    From: WordPress <wordpress@host>
    Subject: [%s] Please moderate: "%s"
    Function: wp_notify_moderator()
    Pluggable: Yes
    Filters: comment_moderation_subject
    comment_moderation_text
    comment_moderation_recipients
    comment_moderation_headers
    Disable: Return false from notify_moderator filter
    Remove wp_new_comment_notify_moderator action on comment_post hook
    "Email me whenever" on Settings -> Discussion
    Overwrite the pluggable function

    | | |
    |-|-|
    | To: | Site admin <br> Post author if they can edit comments |
    | From: | WordPress <`wordpress@host`> |
    | Subject: | [%s] Please moderate: "%s" |
    | Function: | `wp_notify_moderator()` |
    | Pluggable: | Yes |
    | Filters: | `comment_moderation_subject` <br> `comment_moderation_text` <br> `comment_moderation_recipients` <br> `comment_moderation_headers` |
    | Disable: | Return false from [`notify_moderator`](https://developer.wordpress.org/reference/hooks/notify_moderator/) filter <br> Remove `wp_new_comment_notify_moderator` action on `comment_post` hook <br> "Email me whenever" on Settings -> Discussion screen <br> Overwrite the pluggable function |

    ### Comment has been published
    To: Post author
    From: WordPress <wordpress@host>
    Subject: [%s] Comment: "%s"
    [%s] Pingback: "%s"
    [%s] Trackback: "%s"
    Function: wp_notify_postauthor()
    Pluggable: Yes
    Filters: comment_notification_subject
    comment_notification_text
    comment_notification_recipients
    comment_notification_headers
    Disable: Return false from notify_post_author filter
    Remove wp_new_comment_notify_postauthor action on comment_post hook
    Overwrite the pluggable function
    See also the hardcoded action added to wp_set_comment_status in wp_set_comment_status()

    | | |
    |-|-|
    | To: | Post author |
    | From: | WordPress <`wordpress@host`> |
    | Subject: | [%s] Comment: "%s" <br> [%s] Pingback: "%s" <br> [%s] Trackback: "%s" |
    | Function: | `wp_notify_postauthor()` |
    | Pluggable: | Yes |
    | Filters: | `comment_notification_subject` <br> `comment_notification_text` <br> `comment_notification_recipients` <br> `comment_notification_headers` |
    | Disable: | Return false from `notify_post_author` filter <br> Remove `wp_new_comment_notify_postauthor` action on `comment_post` hook <br> Overwrite the pluggable function <br> See also the hardcoded action added to `wp_set_comment_status` in `wp_set_comment_status()` |

    ## Change of Admin Email

    ### Change of site admin email address is attempted (Prior to WordPress 4.9, this was Multisite-only)
    To: Proposed new email address
    From: WordPress <wordpress@host>
    Subject: [%s] New Admin Email Address
    Function: update_option_new_admin_email()
    Pluggable: No
    Filters: new_admin_email_content
    Disable: Remove action on add_option_new_admin_email and update_option_new_admin_email hooks

    | | |
    |-|-|
    | To: | Proposed new email address |
    | From: | WordPress <`wordpress@host`> |
    | Subject: | [%s] New Admin Email Address |
    | Function: | `update_option_new_admin_email()` |
    | Pluggable: | No |
    | Filters: | `new_admin_email_content` |
    | Disable: | Remove action on `add_option_new_admin_email` and `update_option_new_admin_email` hooks |

    ### Site admin email address is changed (WordPress 4.9+)
    To: Old site admin email address
    From: WordPress <wordpress@host>
    Subject: [%s] Notice of Admin Email Change
    Function: wp_site_admin_email_change_notification()
    Pluggable: No
    Filters: site_admin_email_change_email
    Disable: Return false from send_site_admin_email_change_email filter

    | | |
    |-|-|
    | To: | Old site admin email address |
    | From: | WordPress <`wordpress@host`> |
    | Subject: | [%s] Notice of Admin Email Change |
    | Function: | `wp_site_admin_email_change_notification()` |
    | Pluggable: | No |
    | Filters: | `site_admin_email_change_email` |
    | Disable: | Return false from `send_site_admin_email_change_email` filter |

    ### Multisite only: Change of network admin email address is attempted (WordPress 4.9+)
    To: Proposed new email address
    From: WordPress <wordpress@host>
    Subject: [%s] New Network Admin Email Address
    Function: update_network_option_new_admin_email()
    Pluggable: No
    Filters: new_network_admin_email_content
    Disable: Remove action on add_site_option_new_admin_email and update_site_option_new_admin_email hooks

    | | |
    |-|-|
    | To: | Proposed new email address |
    | From: | WordPress <`wordpress@host`> |
    | Subject: | [%s] New Network Admin Email Address |
    | Function: | `update_network_option_new_admin_email()` |
    | Pluggable: | No |
    | Filters: | `new_network_admin_email_content` |
    | Disable: | Remove action on `add_site_option_new_admin_email` and `update_site_option_new_admin_email` hooks |

    ### Multisite only: Network admin email address is changed (WordPress 4.9+)
    To: Old network admin email address
    From: WordPress <wordpress@host>
    Subject: [%s] Notice of Network Admin Email Change
    Function: wp_network_admin_email_change_notification()
    Pluggable: No
    Filters: network_admin_email_change_email
    Disable: Return false from send_network_admin_email_change_email filter

    | | |
    |-|-|
    | To: | Old network admin email address |
    | From: | WordPress <`wordpress@host`> |
    | Subject: | [%s] Notice of Network Admin Email Change |
    | Function: | `wp_network_admin_email_change_notification()` |
    | Pluggable: | No |
    | Filters: | `network_admin_email_change_email` |
    | Disable: | Return false from `send_network_admin_email_change_email` filter |

    ## Change of User Email or Password

    ### User requests a password reset via "Lost your password?"
    To: User
    From: WordPress <wordpress@host>
    Subject: [%s] Password Reset
    Function: retrieve_password()
    Pluggable: No
    Filters: retrieve_password_title
    retrieve_password_message
    Disable: Not possible

    | | |
    |-|-|
    | To: | User |
    | From: | WordPress <`wordpress@host`> |
    | Subject: | [%s] Password Reset |
    | Function: | `retrieve_password()` |
    | Pluggable: | No |
    | Filters: | `retrieve_password_title` <br> `retrieve_password_message` |
    | Disable: | Not possible |

    ### User resets their password
    To: Site admin
    From: WordPress <wordpress@host>
    Subject: [%s] Password Changed
    Function: wp_password_change_notification()
    Pluggable: Yes
    Filters: wp_password_change_notification_email (WordPress 4.9+)
    Disable: Remove action on after_password_reset hook
    Overwrite the pluggable function

    | | |
    |-|-|
    | To: | Site admin |
    | From: | WordPress <`wordpress@host`> |
    | Subject: | [%s] Password Changed |
    | Function: | `wp_password_change_notification()` |
    | Pluggable: | Yes |
    | Filters: | `wp_password_change_notification_email` (WordPress 4.9+) |
    | Disable: | Remove action on `after_password_reset` hook <br> Overwrite the pluggable function |

    ### User attempts to change their email address (Prior to WordPress 4.9, this was Multisite-only)
    To: Proposed new email address
    From: WordPress <wordpress@host>
    Subject: [%s] New Email Address
    Function: send_confirmation_on_profile_email()
    Pluggable: No
    Filters: new_user_email_content
    Disable: Remove action on personal_options_update hook

    | | |
    |-|-|
    | To: | Proposed new email address |
    | From: | WordPress <`wordpress@host`> |
    | Subject: | [%s] New Email Address |
    | Function: | `send_confirmation_on_profile_email()` |
    | Pluggable: | No |
    | Filters: | `new_user_email_content` |
    | Disable: | Remove action on `personal_options_update` hook |

    ### User changes their password
    To: User
    From: WordPress <wordpress@host>
    Subject: [%s] Notice of Password Change
    Function: wp_update_user()
    Pluggable: No
    Filters: password_change_email
    Disable: Return false from send_password_change_email filter

    | | |
    |-|-|
    | To: | User |
    | From: | WordPress <`wordpress@host`> |
    | Subject: | [%s] Notice of Password Change |
    | Function: | `wp_update_user()` |
    | Pluggable: | No |
    | Filters: | `password_change_email` |
    | Disable: | Return false from `send_password_change_email` filter |

    ### User changes their email address
    To: User
    From: WordPress <wordpress@host>
    Subject: [%s] Notice of Email Change
    Function: wp_update_user()
    Pluggable: No
    Filters: email_change_email
    Disable: Return false from send_email_change_email filter

    | | |
    |-|-|
    | To: | User |
    | From: | WordPress <`wordpress@host`> |
    | Subject: | [%s] Notice of Email Change |
    | Function: | `wp_update_user()` |
    | Pluggable: | No |
    | Filters: | `email_change_email` |
    | Disable: | Return false from `send_email_change_email` filter |

    ## Automatic Updates

    ### Completion or failure of a background automatic core update
    To: Site admin / Network admin
    From: WordPress <wordpress@host>
    Subject: [%s] Your site has updated to WordPress %s
    [%s] WordPress %s is available. Please update!
    [%s] URGENT: Your site may be down due to a failed update
    Function: WP_Automatic_Updater::send_email()
    Pluggable: No
    Filters: auto_core_update_email
    Disable: Return false from auto_core_update_send_email filter
    Return false from send_core_update_notification_email filter

    | | |
    |-|-|
    | To: | Site admin / Network admin |
    | From: | WordPress <`wordpress@host`> |
    | Subject: | [%s] Your site has updated to WordPress %s <br> [%s] WordPress %s is available. Please update! <br> [%s] URGENT: Your site may be down due to a failed update |
    | Function: | `WP_Automatic_Updater::send_email()` |
    | Pluggable: | No |
    | Filters: | `auto_core_update_email` |
    | Disable: | Return false from `auto_core_update_send_email` filter <br> Return false from `send_core_update_notification_email` filter |

    ### Full log of background update results, sent when you are using a development version of WordPress
    To: Site admin / Network admin
    From: WordPress <wordpress@host>
    Subject: [%s] There were failures during background updates
    [%s] Background updates have finished
    Function: WP_Automatic_Updater::send_debug_email()
    Pluggable: No
    Filters: automatic_updates_debug_email
    Disable: Return false from automatic_updates_send_debug_email filter

    | | |
    |-|-|
    | To: | Site admin / Network admin |
    | From: | WordPress <`wordpress@host`> |
    | Subject: | [%s] There were failures during background updates <br> [%s] Background updates have finished |
    | Function: | `WP_Automatic_Updater::send_debug_email()` |
    | Pluggable: | No |
    | Filters: | `automatic_updates_debug_email` |
    | Disable: | Return false from `automatic_updates_send_debug_email` filter |

    ## New User

    ### Multisite only: An existing user is invited to a site from Users -> Add New -> Add Existing User
    To: User being invited
    From: WordPress <wordpress@host>
    Subject: [%s] Joining confirmation
    Function: wp-admin/user-new.php
    Pluggable: No
    Filters: None
    Disable: Click the "Skip Confirmation Email" checkbox when adding the user

    | | |
    |-|-|
    | To: | User being invited |
    | From: | WordPress <`wordpress@host`> |
    | Subject: | [%s] Joining confirmation |
    | Function: | `wp-admin/user-new.php` |
    | Pluggable: | No |
    | Filters: | None |
    | Disable: | Click the "Skip Confirmation Email" checkbox when adding the user |

    ### Multisite only: A new user is invited to a site from Users -> Add New -> Add New User
    To: User being invited
    From: [Network Name] <[network admin]>
    Subject: [%s] Activate %s
    Function: wpmu_signup_user_notification()
    Pluggable: No
    Filters: wpmu_signup_user_notification_subject
    wpmu_signup_user_notification_email
    Disable: Click the "Skip Confirmation Email" checkbox when adding the user
    Return false from wpmu_signup_user_notification filter

    | | |
    |-|-|
    | To: | User being invited |
    | From: | [Network Name] <[network admin email address]> |
    | Subject: | [%s] Activate %s |
    | Function: | `wpmu_signup_user_notification()` |
    | Pluggable: | No |
    | Filters: | `wpmu_signup_user_notification_subject` <br> `wpmu_signup_user_notification_email` |
    | Disable: | Click the "Skip Confirmation Email" checkbox when adding the user <br> Return false from `wpmu_signup_user_notification` filter |

    ### Multisite only: A new user account is created
    To: Network Admin
    From: WordPress <wordpress@host>
    Subject: New User Registration: %s
    Function: newuser_notify_siteadmin()
    Pluggable: No
    Filters: newuser_notify_siteadmin
    Disable: Filter registrationnotification option value
    Remove action on wpmu_new_user hook
    Toggle "Registration notification" in Network Admin -> Settings

    | | |
    |-|-|
    | To: | Network Admin |
    | From: | WordPress <`wordpress@host`> |
    | Subject: | New User Registration: %s |
    | Function: | `newuser_notify_siteadmin()` |
    | Pluggable: | No |
    | Filters: | `newuser_notify_siteadmin` |
    | Disable: | Filter `registrationnotification` option value <br> Remove action on `wpmu_new_user` hook <br> Toggle "Registration notification" in Network Admin -> Settings |

    ### Multisite only: A user has been added, or their account activation has been successful
    To: User being added
    From: [Network Name] <[network admin]>
    Subject: New %s User: %s
    Function: wpmu_welcome_user_notification()
    Pluggable: No
    Filters: update_welcome_user_subject
    update_welcome_user_email
    See also "Welcome User Email" setting in Network Admin -> Settings
    Disable: Click the "Skip Confirmation Email" checkbox when adding the user
    Return false from wpmu_welcome_user_notification filter
    Remove action on wpmu_activate_user hook

    | | |
    |-|-|
    | To: | User being added |
    | From: | [Network Name] <[network admin email address]> |
    | Subject: | New %s User: %s |
    | Function: | `wpmu_welcome_user_notification()` |
    | Pluggable: | No |
    | Filters: | `update_welcome_user_subject` <br> `update_welcome_user_email` <br> See also "Welcome User Email" setting in Network Admin -> Settings |
    | Disable: | Click the "Skip Confirmation Email" checkbox when adding the user <br> Return false from `wpmu_welcome_user_notification` filter <br> Remove action on `wpmu_activate_user` hook |

    ### A new user is created (@TODO: needs a lot more information here)

    When a new user is created, two emails are sent from the same function. One to the site admin:

    To: Site Admin
    From: WordPress <wordpress@host>
    Subject: [%s] New User Registration
    | | |
    |-|-|
    | To: | Site Admin |
    | From: | WordPress <`wordpress@host`> |
    | Subject: | [%s] New User Registration |

    and one to the newly created user:

    To: User being added
    From: WordPress <wordpress@host>
    Subject: [%s] Your username and password info
    | | |
    |-|-|
    | To: | User being added |
    | From: | WordPress <`wordpress@host`> |
    | Subject: | [%s] Your username and password info |

    Details:

    Function: wp_new_user_notification()
    Pluggable: Yes
    Filters: wp_new_user_notification_email_admin (WordPress 4.9+)
    wp_new_user_notification_email (WordPress 4.9+)
    Disable: Remove wp_send_new_user_notifications action on register_new_user hook
    Remove wp_send_new_user_notifications action on edit_user_created_user hook
    Remove wp_send_new_user_notifications action on network_site_new_created_user hook
    Remove wp_send_new_user_notifications action on network_site_users_created_user hook
    Remove wp_send_new_user_notifications action on network_user_new_created_user hook
    Overwrite the pluggable function
    | | |
    |-|-|
    | Function: | `wp_new_user_notification()` |
    | Pluggable: | Yes |
    | Filters: | `wp_new_user_notification_email_admin` (WordPress 4.9+) <br> `wp_new_user_notification_email` (WordPress 4.9+) |
    | Disable: | Remove `wp_send_new_user_notifications` action on `register_new_user` hook <br> Remove `wp_send_new_user_notifications` action on `edit_user_created_user` hook <br> Remove `wp_send_new_user_notifications` action on `network_site_new_created_user` hook <br> Remove `wp_send_new_user_notifications` action on `network_site_users_created_user` hook <br> Remove `wp_send_new_user_notifications` action on `network_user_new_created_user` hook <br> Overwrite the pluggable function |

    ## New Site

    ### When WordPress is installed, and when a site is added to a Multisite network
    To: Site Admin
    From: WordPress <wordpress@host>
    Subject: New WordPress Site
    Function: wp_new_blog_notification()
    Pluggable: Yes
    Filters: None
    Disable: Overwrite the pluggable function

    | | |
    |-|-|
    | To: | Site Admin |
    | From: | WordPress <`wordpress@host`> |
    | Subject: | New WordPress Site |
    | Function: | `wp_new_blog_notification()` |
    | Pluggable: | Yes |
    | Filters: | None |
    | Disable: | Overwrite the pluggable function |

    ### Multisite only: New site created from Network Admin -> Sites -> Add New
    To: Network Admin
    From: Site Admin <[network admin]>
    Subject: [%s] New Site Created
    Function: wp-admin/network/site-new.php
    Pluggable: No
    Filters: None
    Disable: Not possible

    | | |
    |-|-|
    | To: | Network Admin |
    | From: | Site Admin <[network admin email address]> |
    | Subject: | [%s] New Site Created |
    | Function: |` wp-admin/network/site-new.php` |
    | Pluggable: | No |
    | Filters: | None |
    | Disable: | Not possible |

    ### Multisite only: User registers for a new site
    To: Site Admin
    From: [Network Name] <[network admin]>
    Subject: [%s] Activate %s
    Function: wpmu_signup_blog_notification()
    Pluggable: No
    Filters: wpmu_signup_blog_notification_subject
    wpmu_signup_blog_notification_email
    Disable: Return false from wpmu_signup_blog_notification filter
    Remove action on after_signup_site hook

    | | |
    |-|-|
    | To: | Site Admin |
    | From: | [Network Name] <[network admin email address]> |
    | Subject: | [%s] Activate %s |
    | Function: | `wpmu_signup_blog_notification()` |
    | Pluggable: | No |
    | Filters: | `wpmu_signup_blog_notification_subject` <br> `wpmu_signup_blog_notification_email` |
    | Disable: | Return false from `wpmu_signup_blog_notification` filter <br> Remove action on `after_signup_site` hook |

    ### Multisite only: User activates their new site, or site added from Network Admin -> Sites -> Add New
    To: Network Admin
    From: WordPress <wordpress@host>
    Subject: New Site Registration: %s
    Function: newblog_notify_siteadmin()
    Pluggable: No
    Filters: newblog_notify_siteadmin
    Disable: Filter registrationnotification option value
    Remove action on wpmu_new_blog hook
    Toggle "Registration notification" in Network Admin -> Settings

    | | |
    |-|-|
    | To: | Network Admin |
    | From: | WordPress <`wordpress@host`> |
    | Subject: | New Site Registration: %s |
    | Function: | `newblog_notify_siteadmin()` |
    | Pluggable: | No |
    | Filters: | `newblog_notify_siteadmin` |
    | Disable: | Filter `registrationnotification` option value <br> Remove action on `wpmu_new_blog` hook <br> Toggle "Registration notification" in Network Admin -> Settings |

    ### Multisite only: User activates their new site, or site added from Network Admin -> Sites -> Add New
    To: Site Admin
    From: [Network Name] <[network admin]>
    Subject: New %s Site: %s
    Function: wpmu_welcome_notification()
    Pluggable: No
    Filters: update_welcome_subject
    update_welcome_email
    See also "Welcome Email" setting in Network Admin -> Settings
    Disable: Return false from wpmu_welcome_notification filter
    Remove action on wpmu_activate_blog hook

    | | |
    |-|-|
    | To: | Site Admin |
    | From: | [Network Name] <[network admin email address]> |
    | Subject: | New %s Site: %s |
    | Function: | `wpmu_welcome_notification()` |
    | Pluggable: | No |
    | Filters: | `update_welcome_subject` <br> `update_welcome_email` <br> See also "Welcome Email" setting in Network Admin -> Settings |
    | Disable: | Return false from `wpmu_welcome_notification` filter <br> Remove action on `wpmu_activate_blog` hook |

    ## Other

    ### Multisite only: Site admin deletes site from Tools -> Delete Site
    To: Site Admin
    From: WordPress <wordpress@host>
    Subject: [ %s ] Delete My Site
    Function: wp-admin/ms-delete-site.php
    Pluggable: No
    Filters: delete_site_email_content
    Disable: Not possible

    | | |
    |-|-|
    | To: | Site Admin |
    | From: | WordPress <`wordpress@host`> |
    | Subject: | [ %s ] Delete My Site |
    | Function: | `wp-admin/ms-delete-site.php` |
    | Pluggable: | No |
    | Filters: | `delete_site_email_content` |
    | Disable: | Not possible |
  5. johnbillion revised this gist Sep 27, 2017. 1 changed file with 9 additions and 0 deletions.
    9 changes: 9 additions & 0 deletions wp_mail.md
    Original file line number Diff line number Diff line change
    @@ -68,6 +68,15 @@ There are a few TODOs left. Please bear with me.
    Filters: site_admin_email_change_email
    Disable: Return false from send_site_admin_email_change_email filter

    ### Multisite only: Change of network admin email address is attempted (WordPress 4.9+)
    To: Proposed new email address
    From: WordPress <wordpress@host>
    Subject: [%s] New Network Admin Email Address
    Function: update_network_option_new_admin_email()
    Pluggable: No
    Filters: new_network_admin_email_content
    Disable: Remove action on add_site_option_new_admin_email and update_site_option_new_admin_email hooks

    ### Multisite only: Network admin email address is changed (WordPress 4.9+)
    To: Old network admin email address
    From: WordPress <wordpress@host>
  6. johnbillion revised this gist Aug 14, 2017. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion wp_mail.md
    Original file line number Diff line number Diff line change
    @@ -50,7 +50,7 @@ There are a few TODOs left. Please bear with me.

    ## Change of Admin Email

    ### Multisite only: Change of site admin email address is attempted
    ### Change of site admin email address is attempted (Prior to WordPress 4.9, this was Multisite-only)
    To: Proposed new email address
    From: WordPress <wordpress@host>
    Subject: [%s] New Admin Email Address
  7. johnbillion revised this gist Aug 12, 2017. 1 changed file with 6 additions and 2 deletions.
    8 changes: 6 additions & 2 deletions wp_mail.md
    Original file line number Diff line number Diff line change
    @@ -196,18 +196,22 @@ There are a few TODOs left. Please bear with me.
    Return false from wpmu_welcome_user_notification filter
    Remove action on wpmu_activate_user hook

    ### A new user is created
    ### A new user is created (@TODO: needs a lot more information here)

    In this situation, two emails are sent from the same function. One to the site admin, and one to the newly created user:
    When a new user is created, two emails are sent from the same function. One to the site admin:

    To: Site Admin
    From: WordPress <wordpress@host>
    Subject: [%s] New User Registration

    and one to the newly created user:

    To: User being added
    From: WordPress <wordpress@host>
    Subject: [%s] Your username and password info

    Details:

    Function: wp_new_user_notification()
    Pluggable: Yes
    Filters: wp_new_user_notification_email_admin (WordPress 4.9+)
  8. johnbillion revised this gist Aug 12, 2017. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions wp_mail.md
    Original file line number Diff line number Diff line change
    @@ -199,6 +199,7 @@ There are a few TODOs left. Please bear with me.
    ### A new user is created

    In this situation, two emails are sent from the same function. One to the site admin, and one to the newly created user:

    To: Site Admin
    From: WordPress <wordpress@host>
    Subject: [%s] New User Registration
    @@ -210,6 +211,7 @@ In this situation, two emails are sent from the same function. One to the site a
    Function: wp_new_user_notification()
    Pluggable: Yes
    Filters: wp_new_user_notification_email_admin (WordPress 4.9+)
    wp_new_user_notification_email (WordPress 4.9+)
    Disable: Remove wp_send_new_user_notifications action on register_new_user hook
    Remove wp_send_new_user_notifications action on edit_user_created_user hook
    Remove wp_send_new_user_notifications action on network_site_new_created_user hook
  9. johnbillion revised this gist Aug 12, 2017. 1 changed file with 4 additions and 11 deletions.
    15 changes: 4 additions & 11 deletions wp_mail.md
    Original file line number Diff line number Diff line change
    @@ -197,26 +197,19 @@ There are a few TODOs left. Please bear with me.
    Remove action on wpmu_activate_user hook

    ### A new user is created

    In this situation, two emails are sent from the same function. One to the site admin, and one to the newly created user:
    To: Site Admin
    From: WordPress <wordpress@host>
    Subject: [%s] New User Registration
    Function: wp_new_user_notification()
    Pluggable: Yes
    Filters: wp_new_user_notification_email_admin (WordPress 4.9+)
    Disable: Remove wp_send_new_user_notifications action on register_new_user hook
    Remove wp_send_new_user_notifications action on edit_user_created_user hook
    Remove wp_send_new_user_notifications action on network_site_new_created_user hook
    Remove wp_send_new_user_notifications action on network_site_users_created_user hook
    Remove wp_send_new_user_notifications action on network_user_new_created_user hook
    Overwrite the pluggable function

    ### @TODO [description]
    To: User being added
    From: WordPress <wordpress@host>
    Subject: [%s] Your username and password info

    Function: wp_new_user_notification()
    Pluggable: Yes
    Filters: wp_new_user_notification_email (WordPress 4.9+)
    Filters: wp_new_user_notification_email_admin (WordPress 4.9+)
    Disable: Remove wp_send_new_user_notifications action on register_new_user hook
    Remove wp_send_new_user_notifications action on edit_user_created_user hook
    Remove wp_send_new_user_notifications action on network_site_new_created_user hook
  10. johnbillion revised this gist Aug 11, 2017. 1 changed file with 5 additions and 5 deletions.
    10 changes: 5 additions & 5 deletions wp_mail.md
    Original file line number Diff line number Diff line change
    @@ -152,17 +152,17 @@ There are a few TODOs left. Please bear with me.

    ## New User

    ### Multisite only: An existing user is added to a site from Users -> Add New -> Add Existing User
    To: User being added
    ### Multisite only: An existing user is invited to a site from Users -> Add New -> Add Existing User
    To: User being invited
    From: WordPress <wordpress@host>
    Subject: [%s] Joining confirmation
    Function: wp-admin/user-new.php
    Pluggable: No
    Filters: None
    Disable: Click the "Skip Confirmation Email" checkbox when adding the user

    ### Multisite only: A new user is added to a site from Users -> Add New -> Add New User
    To: User being added
    ### Multisite only: A new user is invited to a site from Users -> Add New -> Add New User
    To: User being invited
    From: [Network Name] <[network admin]>
    Subject: [%s] Activate %s
    Function: wpmu_signup_user_notification()
    @@ -196,7 +196,7 @@ There are a few TODOs left. Please bear with me.
    Return false from wpmu_welcome_user_notification filter
    Remove action on wpmu_activate_user hook

    ### @TODO [description]
    ### A new user is created
    To: Site Admin
    From: WordPress <wordpress@host>
    Subject: [%s] New User Registration
  11. johnbillion revised this gist Aug 11, 2017. 1 changed file with 14 additions and 14 deletions.
    28 changes: 14 additions & 14 deletions wp_mail.md
    Original file line number Diff line number Diff line change
    @@ -95,7 +95,7 @@ There are a few TODOs left. Please bear with me.
    Subject: [%s] Password Changed
    Function: wp_password_change_notification()
    Pluggable: Yes
    Filters: wp_password_change_notification_email (since 4.9)
    Filters: wp_password_change_notification_email (WordPress 4.9+)
    Disable: Remove action on after_password_reset hook
    Overwrite the pluggable function

    @@ -202,12 +202,12 @@ There are a few TODOs left. Please bear with me.
    Subject: [%s] New User Registration
    Function: wp_new_user_notification()
    Pluggable: Yes
    Filters: wp_new_user_notification_email_admin (since 4.9)
    Disable: Remove action on register_new_user hook
    Remove action on edit_user_created_user hook
    Remove action on network_site_new_created_user hook
    Remove action on network_site_users_created_user hook
    Remove action on network_user_new_created_user hook
    Filters: wp_new_user_notification_email_admin (WordPress 4.9+)
    Disable: Remove wp_send_new_user_notifications action on register_new_user hook
    Remove wp_send_new_user_notifications action on edit_user_created_user hook
    Remove wp_send_new_user_notifications action on network_site_new_created_user hook
    Remove wp_send_new_user_notifications action on network_site_users_created_user hook
    Remove wp_send_new_user_notifications action on network_user_new_created_user hook
    Overwrite the pluggable function

    ### @TODO [description]
    @@ -216,12 +216,12 @@ There are a few TODOs left. Please bear with me.
    Subject: [%s] Your username and password info
    Function: wp_new_user_notification()
    Pluggable: Yes
    Filters: wp_new_user_notification_email (since 4.9)
    Disable: Remove action on register_new_user hook
    Remove action on edit_user_created_user hook
    Remove action on network_site_new_created_user hook
    Remove action on network_site_users_created_user hook
    Remove action on network_user_new_created_user hook
    Filters: wp_new_user_notification_email (WordPress 4.9+)
    Disable: Remove wp_send_new_user_notifications action on register_new_user hook
    Remove wp_send_new_user_notifications action on edit_user_created_user hook
    Remove wp_send_new_user_notifications action on network_site_new_created_user hook
    Remove wp_send_new_user_notifications action on network_site_users_created_user hook
    Remove wp_send_new_user_notifications action on network_user_new_created_user hook
    Overwrite the pluggable function

    ## New Site
    @@ -280,7 +280,7 @@ There are a few TODOs left. Please bear with me.

    ## Other

    ### Multisite only: Site admin attempts to delete site from the Tools -> Delete Site menu
    ### Multisite only: Site admin deletes site from Tools -> Delete Site
    To: Site Admin
    From: WordPress <wordpress@host>
    Subject: [ %s ] Delete My Site
  12. johnbillion revised this gist Aug 11, 2017. 1 changed file with 3 additions and 3 deletions.
    6 changes: 3 additions & 3 deletions wp_mail.md
    Original file line number Diff line number Diff line change
    @@ -95,7 +95,7 @@ There are a few TODOs left. Please bear with me.
    Subject: [%s] Password Changed
    Function: wp_password_change_notification()
    Pluggable: Yes
    Filters: [filter] @TODO: #38068
    Filters: wp_password_change_notification_email (since 4.9)
    Disable: Remove action on after_password_reset hook
    Overwrite the pluggable function

    @@ -202,7 +202,7 @@ There are a few TODOs left. Please bear with me.
    Subject: [%s] New User Registration
    Function: wp_new_user_notification()
    Pluggable: Yes
    Filters: None
    Filters: wp_new_user_notification_email_admin (since 4.9)
    Disable: Remove action on register_new_user hook
    Remove action on edit_user_created_user hook
    Remove action on network_site_new_created_user hook
    @@ -216,7 +216,7 @@ There are a few TODOs left. Please bear with me.
    Subject: [%s] Your username and password info
    Function: wp_new_user_notification()
    Pluggable: Yes
    Filters: None
    Filters: wp_new_user_notification_email (since 4.9)
    Disable: Remove action on register_new_user hook
    Remove action on edit_user_created_user hook
    Remove action on network_site_new_created_user hook
  13. johnbillion revised this gist Aug 11, 2017. 1 changed file with 21 additions and 21 deletions.
    42 changes: 21 additions & 21 deletions wp_mail.md
    Original file line number Diff line number Diff line change
    @@ -27,7 +27,7 @@ There are a few TODOs left. Please bear with me.
    comment_moderation_recipients
    comment_moderation_headers
    Disable: Return false from notify_moderator filter
    Remove comment_post:wp_new_comment_notify_moderator action
    Remove wp_new_comment_notify_moderator action on comment_post hook
    "Email me whenever" on Settings -> Discussion
    Overwrite the pluggable function

    @@ -44,9 +44,9 @@ There are a few TODOs left. Please bear with me.
    comment_notification_recipients
    comment_notification_headers
    Disable: Return false from notify_post_author filter
    Remove comment_post:wp_new_comment_notify_postauthor action
    See also hardcoded action added to wp_set_comment_status in wp_set_comment_status()
    Remove wp_new_comment_notify_postauthor action on comment_post hook
    Overwrite the pluggable function
    See also the hardcoded action added to wp_set_comment_status in wp_set_comment_status()

    ## Change of Admin Email

    @@ -57,7 +57,7 @@ There are a few TODOs left. Please bear with me.
    Function: update_option_new_admin_email()
    Pluggable: No
    Filters: new_admin_email_content
    Disable: Remove add_option_new_admin_email and update_option_new_admin_email actions
    Disable: Remove action on add_option_new_admin_email and update_option_new_admin_email hooks

    ### Site admin email address is changed (WordPress 4.9+)
    To: Old site admin email address
    @@ -96,7 +96,7 @@ There are a few TODOs left. Please bear with me.
    Function: wp_password_change_notification()
    Pluggable: Yes
    Filters: [filter] @TODO: #38068
    Disable: Remove action after_password_reset
    Disable: Remove action on after_password_reset hook
    Overwrite the pluggable function

    ### User attempts to change their email address (Prior to WordPress 4.9, this was Multisite-only)
    @@ -106,7 +106,7 @@ There are a few TODOs left. Please bear with me.
    Function: send_confirmation_on_profile_email()
    Pluggable: No
    Filters: new_user_email_content
    Disable: Remove action personal_options_update
    Disable: Remove action on personal_options_update hook

    ### User changes their password
    To: User
    @@ -180,7 +180,7 @@ There are a few TODOs left. Please bear with me.
    Pluggable: No
    Filters: newuser_notify_siteadmin
    Disable: Filter registrationnotification option value
    Remove wpmu_new_user action
    Remove action on wpmu_new_user hook
    Toggle "Registration notification" in Network Admin -> Settings

    ### Multisite only: A user has been added, or their account activation has been successful
    @@ -194,7 +194,7 @@ There are a few TODOs left. Please bear with me.
    See also "Welcome User Email" setting in Network Admin -> Settings
    Disable: Click the "Skip Confirmation Email" checkbox when adding the user
    Return false from wpmu_welcome_user_notification filter
    Remove wpmu_activate_user action
    Remove action on wpmu_activate_user hook

    ### @TODO [description]
    To: Site Admin
    @@ -203,11 +203,11 @@ There are a few TODOs left. Please bear with me.
    Function: wp_new_user_notification()
    Pluggable: Yes
    Filters: None
    Disable: Remove register_new_user action
    Remove edit_user_created_user action
    Remove network_site_new_created_user action
    Remove network_site_users_created_user action
    Remove network_user_new_created_user action
    Disable: Remove action on register_new_user hook
    Remove action on edit_user_created_user hook
    Remove action on network_site_new_created_user hook
    Remove action on network_site_users_created_user hook
    Remove action on network_user_new_created_user hook
    Overwrite the pluggable function

    ### @TODO [description]
    @@ -217,11 +217,11 @@ There are a few TODOs left. Please bear with me.
    Function: wp_new_user_notification()
    Pluggable: Yes
    Filters: None
    Disable: Remove register_new_user action
    Remove edit_user_created_user action
    Remove network_site_new_created_user action
    Remove network_site_users_created_user action
    Remove network_user_new_created_user action
    Disable: Remove action on register_new_user hook
    Remove action on edit_user_created_user hook
    Remove action on network_site_new_created_user hook
    Remove action on network_site_users_created_user hook
    Remove action on network_user_new_created_user hook
    Overwrite the pluggable function

    ## New Site
    @@ -253,7 +253,7 @@ There are a few TODOs left. Please bear with me.
    Filters: wpmu_signup_blog_notification_subject
    wpmu_signup_blog_notification_email
    Disable: Return false from wpmu_signup_blog_notification filter
    Remove after_signup_site action
    Remove action on after_signup_site hook

    ### Multisite only: User activates their new site, or site added from Network Admin -> Sites -> Add New
    To: Network Admin
    @@ -263,7 +263,7 @@ There are a few TODOs left. Please bear with me.
    Pluggable: No
    Filters: newblog_notify_siteadmin
    Disable: Filter registrationnotification option value
    Remove wpmu_new_blog action
    Remove action on wpmu_new_blog hook
    Toggle "Registration notification" in Network Admin -> Settings

    ### Multisite only: User activates their new site, or site added from Network Admin -> Sites -> Add New
    @@ -276,7 +276,7 @@ There are a few TODOs left. Please bear with me.
    update_welcome_email
    See also "Welcome Email" setting in Network Admin -> Settings
    Disable: Return false from wpmu_welcome_notification filter
    Remove wpmu_activate_blog action
    Remove action on wpmu_activate_blog hook

    ## Other

  14. johnbillion revised this gist Aug 11, 2017. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion wp_mail.md
    Original file line number Diff line number Diff line change
    @@ -26,7 +26,7 @@ There are a few TODOs left. Please bear with me.
    comment_moderation_text
    comment_moderation_recipients
    comment_moderation_headers
    Disable: Filter notify_moderator
    Disable: Return false from notify_moderator filter
    Remove comment_post:wp_new_comment_notify_moderator action
    "Email me whenever" on Settings -> Discussion
    Overwrite the pluggable function
  15. johnbillion revised this gist Aug 3, 2017. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions wp_mail.md
    Original file line number Diff line number Diff line change
    @@ -43,7 +43,7 @@ There are a few TODOs left. Please bear with me.
    comment_notification_text
    comment_notification_recipients
    comment_notification_headers
    Disable: Filter notify_post_author
    Disable: Return false from notify_post_author filter
    Remove comment_post:wp_new_comment_notify_postauthor action
    See also hardcoded action added to wp_set_comment_status in wp_set_comment_status()
    Overwrite the pluggable function
    @@ -159,7 +159,7 @@ There are a few TODOs left. Please bear with me.
    Function: wp-admin/user-new.php
    Pluggable: No
    Filters: None
    Disable: Click the "Skip Confirmation Email" checkbox when adding the user.
    Disable: Click the "Skip Confirmation Email" checkbox when adding the user

    ### Multisite only: A new user is added to a site from Users -> Add New -> Add New User
    To: User being added
  16. johnbillion revised this gist Aug 3, 2017. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion wp_mail.md
    Original file line number Diff line number Diff line change
    @@ -186,7 +186,7 @@ There are a few TODOs left. Please bear with me.
    ### Multisite only: A user has been added, or their account activation has been successful
    To: User being added
    From: [Network Name] <[network admin]>
    Subject: New %1$s User: %2$s
    Subject: New %s User: %s
    Function: wpmu_welcome_user_notification()
    Pluggable: No
    Filters: update_welcome_user_subject
  17. johnbillion revised this gist Aug 3, 2017. 1 changed file with 7 additions and 3 deletions.
    10 changes: 7 additions & 3 deletions wp_mail.md
    Original file line number Diff line number Diff line change
    @@ -28,7 +28,8 @@ There are a few TODOs left. Please bear with me.
    comment_moderation_headers
    Disable: Filter notify_moderator
    Remove comment_post:wp_new_comment_notify_moderator action
    "Email me whenever" on Settings -> Discussion.
    "Email me whenever" on Settings -> Discussion
    Overwrite the pluggable function

    ### Comment has been published
    To: Post author
    @@ -45,6 +46,7 @@ There are a few TODOs left. Please bear with me.
    Disable: Filter notify_post_author
    Remove comment_post:wp_new_comment_notify_postauthor action
    See also hardcoded action added to wp_set_comment_status in wp_set_comment_status()
    Overwrite the pluggable function

    ## Change of Admin Email

    @@ -201,11 +203,12 @@ There are a few TODOs left. Please bear with me.
    Function: wp_new_user_notification()
    Pluggable: Yes
    Filters: None
    Disable: Remove register_new_user action
    Disable: Remove register_new_user action
    Remove edit_user_created_user action
    Remove network_site_new_created_user action
    Remove network_site_users_created_user action
    Remove network_user_new_created_user action
    Overwrite the pluggable function

    ### @TODO [description]
    To: User being added
    @@ -214,11 +217,12 @@ There are a few TODOs left. Please bear with me.
    Function: wp_new_user_notification()
    Pluggable: Yes
    Filters: None
    Disable: Remove register_new_user action
    Disable: Remove register_new_user action
    Remove edit_user_created_user action
    Remove network_site_new_created_user action
    Remove network_site_users_created_user action
    Remove network_user_new_created_user action
    Overwrite the pluggable function

    ## New Site

  18. johnbillion revised this gist Aug 3, 2017. 2 changed files with 286 additions and 33 deletions.
    33 changes: 0 additions & 33 deletions wp_mail.csv
    Original file line number Diff line number Diff line change
    @@ -1,33 +0,0 @@
    function,subject filter,content filter,disable with,pluggable,can disable,type,ms-only,notes
    WP_Automatic_Updater::send_email,auto_core_update_email,auto_core_update_email,filter: auto_core_update_send_email,,yes,network admin,,called from 4 places
    WP_Automatic_Updater::send_debug_email, automatic_updates_debug_email, automatic_updates_debug_email,"filter: send_update_notification_email,
filter: automatic_updates_send_debug_email",,yes,network admin,,only sent in dev versions of WP
    update_option_new_admin_email,,new_admin_email_content,"remove action: add_option_new_admin_email,
remove action: update_option_new_admin_email",,yes,site admin,,sent when site admin email address is changed
    send_confirmation_on_profile_email,,new_user_email_content,remove action: personal_options_update,,yes,user,,sent when user email address is changed
    wp_new_blog_notification,,,pluggable,yes,yes,user,,sent when WP is installed or a site is added
    file: wp-admin/ms-delete-site.php,,delete_site_email_content,,,NO,site admin,yes,sends site deletion confirmation link to site admin
    file: wp-admin/network/site-new.php,,,,,NO,network admin,yes,sent to network admin when new site created via network admin screen
    file: wp-admin/user-new.php,,,click the ‘no confirmation” checkbox when adding a user,,NO,user,yes,sent to user when adding existing user to a site
    wpmu_signup_blog_notification,wpmu_signup_blog_notification_subject,wpmu_signup_blog_notification_email,"filter: wpmu_signup_blog_notification,
remove action: after_signup_site",,yes,email,yes,"see validate_blog_signup() -> wpmu_signup_blog() -> after_signup_site.
could be converted to user notification type via wpmu_validate_user_signup() in validate_blog_signup()"
    wpmu_signup_user_notification,wpmu_signup_user_notification_subject,wpmu_signup_user_notification_email,"filter: wpmu_signup_user_notification,
click the ‘no confirmation’ checkbox when adding user",,yes,email,yes,"user doesn’t exist at this point.
see after_signup_user action"
    newblog_notify_siteadmin,,newblog_notify_siteadmin,"registrationnotification’ network option,
remove action: wpmu_new_blog",,yes,network admin,yes,sent to network admin when site created
    newuser_notify_siteadmin,,newuser_notify_siteadmin,"registrationnotification’ network option,
remove action: wpmu_new_user",,yes,network admin,yes,sent to network admin when user created
    wpmu_welcome_notification,update_welcome_subject,update_welcome_email,"filter: wpmu_welcome_notification,
remove action: wpmu_activate_blog",,yes,user,yes,also called directly when a site is added via site-new.php
    wpmu_welcome_user_notification,update_welcome_user_subject,update_welcome_user_email,"filter: wpmu_welcome_user_notification,
remove action: wpmu_activate_user,
check the checkbox when adding user",,yes,user,yes,
    wp_notify_postauthor,comment_notification_subject,comment_notification_text,"comments_notify option,
remove action: comment_post:wp_new_comment_notify_postauthor
Since 4.4: filter: notify_post_author",yes,yes,user + email,,"related filters: comment_notification_recipients, comment_notification_notify_author. also hardcoded action added to wp_set_comment_status in wp_set_comment_status()"
    wp_notify_moderator,comment_moderation_subject,comment_moderation_text,"moderation_notify option,
remove action: comment_post:wp_new_comment_notify_moderator
Since 4.4: filter: notify_moderator",yes,yes,site admin + email,,related filters: comment_moderation_recipients
    wp_password_change_notification,,,remove action: after_password_reset,yes,yes,site admin,,
    wp_new_user_notification 1/2,,,"remove wp_send_new_user_notifications action on:
register_new_user
    edit_user_created_user
    network_site_new_created_user
    network_site_users_created_user
    network_user_new_created_user",yes,yes,site admin,,
    wp_new_user_notification 2/2,,,"remove wp_send_new_user_notifications action on:
register_new_user
    edit_user_created_user
    network_site_new_created_user
    network_site_users_created_user
    network_user_new_created_user",yes,yes,user,,
    wp_update_user 1/2,password_change_email,password_change_email,filter send_password_change_email,,yes,user,,
    wp_update_user 2/2,email_change_email,email_change_email,filter send_email_change_email,,yes,user,,
    retrieve_password,retrieve_password_title,retrieve_password_message,filter retrieve_password_message,,yes,user,,see also other actions in this function
    ,,,,,,,,
    Proposed: wp_new_comment_notify_commenter (#33717),comment_approval_notification_subject,comment_approval_notification_text,remove action comment_unapproved_to_approved,,yes,user + email,,
    286 changes: 286 additions & 0 deletions wp_mail.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,286 @@
    # WordPress Emails

    This document lists all the situations where WordPress sends an email, along with how to filter or disable each email.

    This is accurate as of WordPress 4.8, and includes some upcoming changes in WordPress 4.9.

    There are a few TODOs left. Please bear with me.

    - [Comments](#comments)
    - [Change of Admin Email](#change-of-admin-email)
    - [Change of User Email or Password](#change-of-user-email-or-password)
    - [Automatic Updates](#automatic-updates)
    - [New User](#new-user)
    - [New Site](#new-site)
    - [Other](#other)

    ## Comments

    ### Comment is awaiting moderation
    To: Site Admin, plus post author if they can edit comments
    From: WordPress <wordpress@host>
    Subject: [%s] Please moderate: "%s"
    Function: wp_notify_moderator()
    Pluggable: Yes
    Filters: comment_moderation_subject
    comment_moderation_text
    comment_moderation_recipients
    comment_moderation_headers
    Disable: Filter notify_moderator
    Remove comment_post:wp_new_comment_notify_moderator action
    "Email me whenever" on Settings -> Discussion.

    ### Comment has been published
    To: Post author
    From: WordPress <wordpress@host>
    Subject: [%s] Comment: "%s"
    [%s] Pingback: "%s"
    [%s] Trackback: "%s"
    Function: wp_notify_postauthor()
    Pluggable: Yes
    Filters: comment_notification_subject
    comment_notification_text
    comment_notification_recipients
    comment_notification_headers
    Disable: Filter notify_post_author
    Remove comment_post:wp_new_comment_notify_postauthor action
    See also hardcoded action added to wp_set_comment_status in wp_set_comment_status()

    ## Change of Admin Email

    ### Multisite only: Change of site admin email address is attempted
    To: Proposed new email address
    From: WordPress <wordpress@host>
    Subject: [%s] New Admin Email Address
    Function: update_option_new_admin_email()
    Pluggable: No
    Filters: new_admin_email_content
    Disable: Remove add_option_new_admin_email and update_option_new_admin_email actions

    ### Site admin email address is changed (WordPress 4.9+)
    To: Old site admin email address
    From: WordPress <wordpress@host>
    Subject: [%s] Notice of Admin Email Change
    Function: wp_site_admin_email_change_notification()
    Pluggable: No
    Filters: site_admin_email_change_email
    Disable: Return false from send_site_admin_email_change_email filter

    ### Multisite only: Network admin email address is changed (WordPress 4.9+)
    To: Old network admin email address
    From: WordPress <wordpress@host>
    Subject: [%s] Notice of Network Admin Email Change
    Function: wp_network_admin_email_change_notification()
    Pluggable: No
    Filters: network_admin_email_change_email
    Disable: Return false from send_network_admin_email_change_email filter

    ## Change of User Email or Password

    ### User requests a password reset via "Lost your password?"
    To: User
    From: WordPress <wordpress@host>
    Subject: [%s] Password Reset
    Function: retrieve_password()
    Pluggable: No
    Filters: retrieve_password_title
    retrieve_password_message
    Disable: Not possible

    ### User resets their password
    To: Site admin
    From: WordPress <wordpress@host>
    Subject: [%s] Password Changed
    Function: wp_password_change_notification()
    Pluggable: Yes
    Filters: [filter] @TODO: #38068
    Disable: Remove action after_password_reset
    Overwrite the pluggable function

    ### User attempts to change their email address (Prior to WordPress 4.9, this was Multisite-only)
    To: Proposed new email address
    From: WordPress <wordpress@host>
    Subject: [%s] New Email Address
    Function: send_confirmation_on_profile_email()
    Pluggable: No
    Filters: new_user_email_content
    Disable: Remove action personal_options_update

    ### User changes their password
    To: User
    From: WordPress <wordpress@host>
    Subject: [%s] Notice of Password Change
    Function: wp_update_user()
    Pluggable: No
    Filters: password_change_email
    Disable: Return false from send_password_change_email filter

    ### User changes their email address
    To: User
    From: WordPress <wordpress@host>
    Subject: [%s] Notice of Email Change
    Function: wp_update_user()
    Pluggable: No
    Filters: email_change_email
    Disable: Return false from send_email_change_email filter

    ## Automatic Updates

    ### Completion or failure of a background automatic core update
    To: Site admin / Network admin
    From: WordPress <wordpress@host>
    Subject: [%s] Your site has updated to WordPress %s
    [%s] WordPress %s is available. Please update!
    [%s] URGENT: Your site may be down due to a failed update
    Function: WP_Automatic_Updater::send_email()
    Pluggable: No
    Filters: auto_core_update_email
    Disable: Return false from auto_core_update_send_email filter
    Return false from send_core_update_notification_email filter

    ### Full log of background update results, sent when you are using a development version of WordPress
    To: Site admin / Network admin
    From: WordPress <wordpress@host>
    Subject: [%s] There were failures during background updates
    [%s] Background updates have finished
    Function: WP_Automatic_Updater::send_debug_email()
    Pluggable: No
    Filters: automatic_updates_debug_email
    Disable: Return false from automatic_updates_send_debug_email filter

    ## New User

    ### Multisite only: An existing user is added to a site from Users -> Add New -> Add Existing User
    To: User being added
    From: WordPress <wordpress@host>
    Subject: [%s] Joining confirmation
    Function: wp-admin/user-new.php
    Pluggable: No
    Filters: None
    Disable: Click the "Skip Confirmation Email" checkbox when adding the user.

    ### Multisite only: A new user is added to a site from Users -> Add New -> Add New User
    To: User being added
    From: [Network Name] <[network admin]>
    Subject: [%s] Activate %s
    Function: wpmu_signup_user_notification()
    Pluggable: No
    Filters: wpmu_signup_user_notification_subject
    wpmu_signup_user_notification_email
    Disable: Click the "Skip Confirmation Email" checkbox when adding the user
    Return false from wpmu_signup_user_notification filter

    ### Multisite only: A new user account is created
    To: Network Admin
    From: WordPress <wordpress@host>
    Subject: New User Registration: %s
    Function: newuser_notify_siteadmin()
    Pluggable: No
    Filters: newuser_notify_siteadmin
    Disable: Filter registrationnotification option value
    Remove wpmu_new_user action
    Toggle "Registration notification" in Network Admin -> Settings

    ### Multisite only: A user has been added, or their account activation has been successful
    To: User being added
    From: [Network Name] <[network admin]>
    Subject: New %1$s User: %2$s
    Function: wpmu_welcome_user_notification()
    Pluggable: No
    Filters: update_welcome_user_subject
    update_welcome_user_email
    See also "Welcome User Email" setting in Network Admin -> Settings
    Disable: Click the "Skip Confirmation Email" checkbox when adding the user
    Return false from wpmu_welcome_user_notification filter
    Remove wpmu_activate_user action

    ### @TODO [description]
    To: Site Admin
    From: WordPress <wordpress@host>
    Subject: [%s] New User Registration
    Function: wp_new_user_notification()
    Pluggable: Yes
    Filters: None
    Disable: Remove 
register_new_user action
    Remove edit_user_created_user action
    Remove network_site_new_created_user action
    Remove network_site_users_created_user action
    Remove network_user_new_created_user action

    ### @TODO [description]
    To: User being added
    From: WordPress <wordpress@host>
    Subject: [%s] Your username and password info
    Function: wp_new_user_notification()
    Pluggable: Yes
    Filters: None
    Disable: Remove 
register_new_user action
    Remove edit_user_created_user action
    Remove network_site_new_created_user action
    Remove network_site_users_created_user action
    Remove network_user_new_created_user action

    ## New Site

    ### When WordPress is installed, and when a site is added to a Multisite network
    To: Site Admin
    From: WordPress <wordpress@host>
    Subject: New WordPress Site
    Function: wp_new_blog_notification()
    Pluggable: Yes
    Filters: None
    Disable: Overwrite the pluggable function

    ### Multisite only: New site created from Network Admin -> Sites -> Add New
    To: Network Admin
    From: Site Admin <[network admin]>
    Subject: [%s] New Site Created
    Function: wp-admin/network/site-new.php
    Pluggable: No
    Filters: None
    Disable: Not possible

    ### Multisite only: User registers for a new site
    To: Site Admin
    From: [Network Name] <[network admin]>
    Subject: [%s] Activate %s
    Function: wpmu_signup_blog_notification()
    Pluggable: No
    Filters: wpmu_signup_blog_notification_subject
    wpmu_signup_blog_notification_email
    Disable: Return false from wpmu_signup_blog_notification filter
    Remove after_signup_site action

    ### Multisite only: User activates their new site, or site added from Network Admin -> Sites -> Add New
    To: Network Admin
    From: WordPress <wordpress@host>
    Subject: New Site Registration: %s
    Function: newblog_notify_siteadmin()
    Pluggable: No
    Filters: newblog_notify_siteadmin
    Disable: Filter registrationnotification option value
    Remove wpmu_new_blog action
    Toggle "Registration notification" in Network Admin -> Settings

    ### Multisite only: User activates their new site, or site added from Network Admin -> Sites -> Add New
    To: Site Admin
    From: [Network Name] <[network admin]>
    Subject: New %s Site: %s
    Function: wpmu_welcome_notification()
    Pluggable: No
    Filters: update_welcome_subject
    update_welcome_email
    See also "Welcome Email" setting in Network Admin -> Settings
    Disable: Return false from wpmu_welcome_notification filter
    Remove wpmu_activate_blog action

    ## Other

    ### Multisite only: Site admin attempts to delete site from the Tools -> Delete Site menu
    To: Site Admin
    From: WordPress <wordpress@host>
    Subject: [ %s ] Delete My Site
    Function: wp-admin/ms-delete-site.php
    Pluggable: No
    Filters: delete_site_email_content
    Disable: Not possible
  19. johnbillion revised this gist Oct 21, 2015. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions wp_mail.csv
    Original file line number Diff line number Diff line change
    @@ -13,8 +13,8 @@ newblog_notify_siteadmin,,newblog_notify_siteadmin,"registrationnotification’
    newuser_notify_siteadmin,,newuser_notify_siteadmin,"registrationnotification’ network option,
remove action: wpmu_new_user",,yes,network admin,yes,sent to network admin when user created
    wpmu_welcome_notification,update_welcome_subject,update_welcome_email,"filter: wpmu_welcome_notification,
remove action: wpmu_activate_blog",,yes,user,yes,also called directly when a site is added via site-new.php
    wpmu_welcome_user_notification,update_welcome_user_subject,update_welcome_user_email,"filter: wpmu_welcome_user_notification,
remove action: wpmu_activate_user,
check the checkbox when adding user",,yes,user,yes,
    wp_notify_postauthor,comment_notification_subject,comment_notification_text,"comments_notify option,
remove action: comment_post:wp_new_comment_notify_postauthor",yes,yes,user + email,,"related filters: comment_notification_recipients, comment_notification_notify_author. also hardcoded action added to wp_set_comment_status in wp_set_comment_status()"
    wp_notify_moderator,comment_moderation_subject,comment_moderation_text,"moderation_notify option,
remove action: comment_post:wp_new_comment_notify_moderator",yes,yes,site admin + email,,related filters: comment_moderation_recipients
    wp_notify_postauthor,comment_notification_subject,comment_notification_text,"comments_notify option,
remove action: comment_post:wp_new_comment_notify_postauthor
Since 4.4: filter: notify_post_author",yes,yes,user + email,,"related filters: comment_notification_recipients, comment_notification_notify_author. also hardcoded action added to wp_set_comment_status in wp_set_comment_status()"
    wp_notify_moderator,comment_moderation_subject,comment_moderation_text,"moderation_notify option,
remove action: comment_post:wp_new_comment_notify_moderator
Since 4.4: filter: notify_moderator",yes,yes,site admin + email,,related filters: comment_moderation_recipients
    wp_password_change_notification,,,remove action: after_password_reset,yes,yes,site admin,,
    wp_new_user_notification 1/2,,,"remove wp_send_new_user_notifications action on:
register_new_user
    edit_user_created_user
  20. johnbillion created this gist Oct 9, 2015.
    33 changes: 33 additions & 0 deletions wp_mail.csv
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,33 @@
    function,subject filter,content filter,disable with,pluggable,can disable,type,ms-only,notes
    WP_Automatic_Updater::send_email,auto_core_update_email,auto_core_update_email,filter: auto_core_update_send_email,,yes,network admin,,called from 4 places
    WP_Automatic_Updater::send_debug_email, automatic_updates_debug_email, automatic_updates_debug_email,"filter: send_update_notification_email,
filter: automatic_updates_send_debug_email",,yes,network admin,,only sent in dev versions of WP
    update_option_new_admin_email,,new_admin_email_content,"remove action: add_option_new_admin_email,
remove action: update_option_new_admin_email",,yes,site admin,,sent when site admin email address is changed
    send_confirmation_on_profile_email,,new_user_email_content,remove action: personal_options_update,,yes,user,,sent when user email address is changed
    wp_new_blog_notification,,,pluggable,yes,yes,user,,sent when WP is installed or a site is added
    file: wp-admin/ms-delete-site.php,,delete_site_email_content,,,NO,site admin,yes,sends site deletion confirmation link to site admin
    file: wp-admin/network/site-new.php,,,,,NO,network admin,yes,sent to network admin when new site created via network admin screen
    file: wp-admin/user-new.php,,,click the ‘no confirmation” checkbox when adding a user,,NO,user,yes,sent to user when adding existing user to a site
    wpmu_signup_blog_notification,wpmu_signup_blog_notification_subject,wpmu_signup_blog_notification_email,"filter: wpmu_signup_blog_notification,
remove action: after_signup_site",,yes,email,yes,"see validate_blog_signup() -> wpmu_signup_blog() -> after_signup_site.
could be converted to user notification type via wpmu_validate_user_signup() in validate_blog_signup()"
    wpmu_signup_user_notification,wpmu_signup_user_notification_subject,wpmu_signup_user_notification_email,"filter: wpmu_signup_user_notification,
click the ‘no confirmation’ checkbox when adding user",,yes,email,yes,"user doesn’t exist at this point.
see after_signup_user action"
    newblog_notify_siteadmin,,newblog_notify_siteadmin,"registrationnotification’ network option,
remove action: wpmu_new_blog",,yes,network admin,yes,sent to network admin when site created
    newuser_notify_siteadmin,,newuser_notify_siteadmin,"registrationnotification’ network option,
remove action: wpmu_new_user",,yes,network admin,yes,sent to network admin when user created
    wpmu_welcome_notification,update_welcome_subject,update_welcome_email,"filter: wpmu_welcome_notification,
remove action: wpmu_activate_blog",,yes,user,yes,also called directly when a site is added via site-new.php
    wpmu_welcome_user_notification,update_welcome_user_subject,update_welcome_user_email,"filter: wpmu_welcome_user_notification,
remove action: wpmu_activate_user,
check the checkbox when adding user",,yes,user,yes,
    wp_notify_postauthor,comment_notification_subject,comment_notification_text,"comments_notify option,
remove action: comment_post:wp_new_comment_notify_postauthor",yes,yes,user + email,,"related filters: comment_notification_recipients, comment_notification_notify_author. also hardcoded action added to wp_set_comment_status in wp_set_comment_status()"
    wp_notify_moderator,comment_moderation_subject,comment_moderation_text,"moderation_notify option,
remove action: comment_post:wp_new_comment_notify_moderator",yes,yes,site admin + email,,related filters: comment_moderation_recipients
    wp_password_change_notification,,,remove action: after_password_reset,yes,yes,site admin,,
    wp_new_user_notification 1/2,,,"remove wp_send_new_user_notifications action on:
register_new_user
    edit_user_created_user
    network_site_new_created_user
    network_site_users_created_user
    network_user_new_created_user",yes,yes,site admin,,
    wp_new_user_notification 2/2,,,"remove wp_send_new_user_notifications action on:
register_new_user
    edit_user_created_user
    network_site_new_created_user
    network_site_users_created_user
    network_user_new_created_user",yes,yes,user,,
    wp_update_user 1/2,password_change_email,password_change_email,filter send_password_change_email,,yes,user,,
    wp_update_user 2/2,email_change_email,email_change_email,filter send_email_change_email,,yes,user,,
    retrieve_password,retrieve_password_title,retrieve_password_message,filter retrieve_password_message,,yes,user,,see also other actions in this function
    ,,,,,,,,
    Proposed: wp_new_comment_notify_commenter (#33717),comment_approval_notification_subject,comment_approval_notification_text,remove action comment_unapproved_to_approved,,yes,user + email,,