[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fESucYKqwj3CTpeOqZtZsF8fWpmbLckZ9c24wfFBjoIQ":3},{"slug":4,"name":5,"version":6,"author":7,"author_profile":8,"description":9,"short_description":10,"active_installs":11,"downloaded":12,"rating":13,"num_ratings":14,"last_updated":15,"tested_up_to":16,"requires_at_least":17,"requires_php":18,"tags":19,"homepage":25,"download_link":26,"security_score":13,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":29,"vulnerabilities":30,"developer":31,"crawl_stats":28,"alternatives":39,"analysis":138,"fingerprints":607},"notification-bbpress","Notification : bbPress","4.0.2","Kuba Mikita","https:\u002F\u002Fprofiles.wordpress.org\u002Fkubitomakita\u002F","\u003Cp>This is an addon with triggers for the \u003Ca href=\"https:\u002F\u002Fbracketspace.com\u002Fnotification\u002F\" rel=\"nofollow ugc\">Notification WordPress plugin\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch4>Available triggers\u003C\u002Fh4>\n\u003Cp>Forum:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Forum added\u003C\u002Fli>\n\u003Cli>Forum updated\u003C\u002Fli>\n\u003Cli>Forum removed\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Topic:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>New topic added\u003C\u002Fli>\n\u003Cli>Topic updated\u003C\u002Fli>\n\u003Cli>Topic merged\u003C\u002Fli>\n\u003Cli>Topic removed\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Reply:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>New reply added\u003C\u002Fli>\n\u003Cli>Reply updated\u003C\u002Fli>\n\u003Cli>Reply removed\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Custom development\u003C\u002Fh4>\n\u003Cp>BracketSpace – the company behind this plugin provides \u003Ca href=\"https:\u002F\u002Fbracketspace.com\u002Fcustom-development\u002F\" rel=\"nofollow ugc\">custom WordPress plugin development services\u003C\u002Fa>. We can create any custom plugin for you.\u003C\u002Fp>\n","bbPress triggers for Notification plugin",70,8502,100,3,"2026-01-07T12:24:00.000Z","6.8.5","4.9","",[20,21,22,23,24],"bbpress","email","mail","notification","notify","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fnotification-bbpress\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fnotification-bbpress.4.0.2.zip",0,null,"2026-03-15T15:16:48.613Z",[],{"slug":32,"display_name":7,"profile_url":8,"plugin_count":33,"total_installs":34,"avg_security_score":35,"avg_patch_time_days":36,"trust_score":37,"computed_at":38},"kubitomakita",9,50520,95,237,76,"2026-04-04T15:06:42.212Z",[40,63,79,100,122],{"slug":41,"name":42,"version":43,"author":44,"author_profile":45,"description":46,"short_description":47,"active_installs":48,"downloaded":49,"rating":50,"num_ratings":51,"last_updated":52,"tested_up_to":16,"requires_at_least":53,"requires_php":54,"tags":55,"homepage":58,"download_link":59,"security_score":60,"vuln_count":61,"unpatched_count":27,"last_vuln_date":62,"fetched_at":29},"bnfw","Customize WordPress Emails and Alerts – Better Notifications for WP","1.9.9.1","Jack - BNFW","https:\u002F\u002Fprofiles.wordpress.org\u002Fvoltronik\u002F","\u003Cp>Better Notifications for WP is a simple but powerful plugin for that allows you to customise the email notifications that WordPress sends using a WYSIWYG editor and shortcodes. All of the default WordPress email notifications are available to customise as well as lots of new ones. You can choose to send notifications to individual users, multiple users, all users in a user role, multiple roles – you name it! You can also power-up your notifications with \u003Ca href=\"https:\u002F\u002Fbetternotificationsforwp.com\u002Fdownloads\u002F\" rel=\"nofollow ugc\">Premium Add-ons\u003C\u002Fa>. Emails are sent out via your WordPress website (using \u003Ccode>wp_mail\u003C\u002Fcode>) but can be sent via SMTP using a  3rd party plugin should you wish.\u003Cbr \u002F>\nIf you want to let users create their own email notifications\u002Fsubscriptions\u002Falerts, check out my other plugin: \u003Ca href=\"https:\u002F\u002Fcontentnotify.com\" rel=\"nofollow ugc\">Content Notify\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>Here’s a quick walkthrough of the plugin in action:\u003Cbr \u002F>\n\u003Cspan class=\"embed-youtube\" style=\"text-align:center; display: block;\">\u003Ciframe loading=\"lazy\" class=\"youtube-player\" width=\"750\" height=\"422\" src=\"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FMxPUyRZPJ1Q?version=3&rel=1&showsearch=0&showinfo=1&iv_load_policy=1&fs=1&hl=en-US&autohide=2&wmode=transparent\" allowfullscreen=\"true\" style=\"border:0;\" sandbox=\"allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox\">\u003C\u002Fiframe>\u003C\u002Fspan>\u003C\u002Fp>\n\u003Ch4>An Example:\u003C\u002Fh4>\n\u003Cp>You want all the users in the Editor role to be notified via email when a new post is published and you’d like to customise it to include your logo along with the author’s name and date \u002F time it was published – with this plugin, that’s easy.\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>A handy list of shortcodes you can use is available \u003Ca href=\"https:\u002F\u002Fbetternotificationsforwp.com\u002Fdocumentation\u002Fnotifications\u002Fshortcodes\u002F\" title=\"Shortcodes for use in Better Notifications for WP\" rel=\"nofollow ugc\">here\u003C\u002Fa>.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Ch4>Premium Add-ons\u003C\u002Fh4>\n\u003Cp>Power-up your notifications using add-ons:\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fbetternotificationsforwp.com\u002Fadd-on-bundles\u002F\" rel=\"nofollow ugc\">Notification Add-on Bundles\u003C\u002Fa> – Everything you need for your WordPress notifications. Save big when you buy an add-on bundle. Instant access.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fbetternotificationsforwp.com\u002Fdownloads\u002Fsubscriptions-gdpr\u002F\" rel=\"nofollow ugc\">Subscriptions (GDPR)\u003C\u002Fa> – Allow users to manage their subscriptions for BNFW notifications.\u003Cbr \u002F>\nIf you want to let users create their own email notifications\u002Fsubscriptions\u002Falerts, check out my other plugin: \u003Ca href=\"https:\u002F\u002Fcontentnotify.com\" rel=\"nofollow ugc\">Content Notify\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fbetternotificationsforwp.com\u002Fdownloads\u002Fconditional-notifications\u002F\" rel=\"nofollow ugc\">Conditional Notifications\u003C\u002Fa> – Limit certain notifications depending on which categories, tags, post formats, or terms you choose.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fbetternotificationsforwp.com\u002Fdownloads\u002Fcustom-fields\u002F\" rel=\"nofollow ugc\">Custom Fields\u003C\u002Fa> – Provides a number of new shortcodes allowing you to include data from custom fields and custom user fields created using \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fadvanced-custom-fields\u002F\" rel=\"ugc\">ACF\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fbetternotificationsforwp.com\u002Fdownloads\u002Fsend-to-any-email\u002F\" rel=\"nofollow ugc\">Send to Any Email\u003C\u002Fa> – Send notifications to non-WordPress Users.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fbetternotificationsforwp.com\u002Fdownloads\u002Fdigest\u002F\" rel=\"nofollow ugc\">Digest\u003C\u002Fa> – Group multiple notifications into a single digest notification.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fbetternotificationsforwp.com\u002Fdownloads\u002Fper-post-override\u002F\" rel=\"nofollow ugc\">Global Override\u003C\u002Fa> – Override some of the settings of notifications directly when editing a post, page, or custom post type.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fbetternotificationsforwp.com\u002Fdownloads\u002Fupdate-reminder\u002F\" rel=\"nofollow ugc\">Reminders\u003C\u002Fa> – Send a reminder to your users and\u002For user roles when a post, page, or custom post type hasn’t been updated after a set amount of time. Also send a notification when a user hasn’t logged in for a set amount of time.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fbetternotificationsforwp.com\u002Fdownloads\u002Fmultisite\u002F\" rel=\"nofollow ugc\">Multisite\u003C\u002Fa> – Adds new notifications and shortcodes for WordPress Multisite to Better Notifications for WP.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fbetternotificationsforwp.com\u002Fdownloads\u002Fprofile-builder\u002F\" rel=\"nofollow ugc\">Profile Builder\u003C\u002Fa> – Adds compatibility and new notifications and shortcodes for Profile Builder Free, Hobbyist, and Pro plugins to Better Notifications for WP.\u003C\u002Fp>\n\u003Cp>…and more coming soon!\u003C\u002Fp>\n\u003Ch4>Notifications\u003C\u002Fh4>\n\u003Cp>The notifications that are currently available to use are:\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Admin\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>New User Registration – For Admin\u003C\u002Fli>\n\u003Cli>User Lost Password – For Admin\u003C\u002Fli>\n\u003Cli>Password Changed – For Admin\u003C\u002Fli>\n\u003Cli>User Email Changed – For Admin\u003C\u002Fli>\n\u003Cli>User Role Changed – For Admin\u003C\u002Fli>\n\u003Cli>User Logged In – For Admin\u003C\u002Fli>\n\u003Cli>WordPress Core Automatic Background Updates\u003C\u002Fli>\n\u003Cli>Privacy – Confirm Action: Export Data Request – For Admin\u003C\u002Fli>\n\u003Cli>Privacy – Confirm Action: Erase Data Request – For Admin\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Transactional\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>New User Registration – For User\u003C\u002Fli>\n\u003Cli>New User – Post-registration Email\u003C\u002Fli>\n\u003Cli>User Lost Password – For User\u003C\u002Fli>\n\u003Cli>Password Changed – For User\u003C\u002Fli>\n\u003Cli>User Email Changed Confirmation – For User\u003C\u002Fli>\n\u003Cli>User Email Changed – For User\u003C\u002Fli>\n\u003Cli>User Role Changed – For User\u003C\u002Fli>\n\u003Cli>User Logged In – For User\u003C\u002Fli>\n\u003Cli>Comment Reply\u003C\u002Fli>\n\u003Cli>Privacy – Confirm Action: Export Data Request – For User\u003C\u002Fli>\n\u003Cli>Privacy – Confirm Action: Erase Data Request – For User\u003C\u002Fli>\n\u003Cli>Privacy – Data Export – For User\u003C\u002Fli>\n\u003Cli>Privacy – Data Erased – For User\u003C\u002Fli>\n\u003Cli>Profile Builder – Approval Request for Admin (\u003Ca href=\"https:\u002F\u002Fbetternotificationsforwp.com\u002Fdownloads\u002Fprofile-builder\u002F\" rel=\"nofollow ugc\">Profile Builder Add-on\u003C\u002Fa>)\u003C\u002Fli>\n\u003Cli>Profile Builder – Email Confirmation (\u003Ca href=\"https:\u002F\u002Fbetternotificationsforwp.com\u002Fdownloads\u002Fprofile-builder\u002F\" rel=\"nofollow ugc\">Profile Builder Add-on\u003C\u002Fa>)\u003C\u002Fli>\n\u003Cli>Profile Builder – Account Approved (\u003Ca href=\"https:\u002F\u002Fbetternotificationsforwp.com\u002Fdownloads\u002Fprofile-builder\u002F\" rel=\"nofollow ugc\">Profile Builder Add-on\u003C\u002Fa>)\u003C\u002Fli>\n\u003Cli>Profile Builder – Account Unapproved (\u003Ca href=\"https:\u002F\u002Fbetternotificationsforwp.com\u002Fdownloads\u002Fprofile-builder\u002F\" rel=\"nofollow ugc\">Profile Builder Add-on\u003C\u002Fa>)\u003C\u002Fli>\n\u003Cli>User Login Reminder (\u003Ca href=\"https:\u002F\u002Fbetternotificationsforwp.com\u002Fdownloads\u002Fcustom-fields\u002F\" rel=\"nofollow ugc\">Reminders Add-on\u003C\u002Fa>)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Posts \u002F Custom Post Types\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>New Post Published\u003C\u002Fli>\n\u003Cli>Post Updated\u003C\u002Fli>\n\u003Cli>Post Pending Review\u003C\u002Fli>\n\u003Cli>New Private Post\u003C\u002Fli>\n\u003Cli>Post Scheduled\u003C\u002Fli>\n\u003Cli>Published Post Moved to Trash\u003C\u002Fli>\n\u003Cli>New Comment\u003C\u002Fli>\n\u003Cli>New Comment Awaiting Moderation\u003C\u002Fli>\n\u003Cli>Post – Comment Approved\u003C\u002Fli>\n\u003Cli>Post – Custom Field Updated (\u003Ca href=\"https:\u002F\u002Fbetternotificationsforwp.com\u002Fdownloads\u002Fcustom-fields\u002F\" rel=\"nofollow ugc\">Custom Fields Add-on\u003C\u002Fa>)\u003C\u002Fli>\n\u003Cli>Post – Update Reminder (\u003Ca href=\"https:\u002F\u002Fbetternotificationsforwp.com\u002Fdownloads\u002Fupdate-reminder\u002F\" rel=\"nofollow ugc\">Reminders Add-on\u003C\u002Fa>)\u003C\u002Fli>\n\u003Cli>New Trackback\u003C\u002Fli>\n\u003Cli>New Pingback\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Pages\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>New Page Published\u003C\u002Fli>\n\u003Cli>Page Updated\u003C\u002Fli>\n\u003Cli>Page Pending Review\u003C\u002Fli>\n\u003Cli>New Private Page\u003C\u002Fli>\n\u003Cli>Page Scheduled\u003C\u002Fli>\n\u003Cli>Page – New Comment\u003C\u002Fli>\n\u003Cli>Page – New Comment Awaiting Moderation\u003C\u002Fli>\n\u003Cli>Page – Comment Approved\u003C\u002Fli>\n\u003Cli>Page – Comment Reply\u003C\u002Fli>\n\u003Cli>Page – Custom Field Updated (\u003Ca href=\"https:\u002F\u002Fbetternotificationsforwp.com\u002Fdownloads\u002Fcustom-fields\u002F\" rel=\"nofollow ugc\">Custom Fields Add-on\u003C\u002Fa>)\u003C\u002Fli>\n\u003Cli>Page – Update Reminder (\u003Ca href=\"https:\u002F\u002Fbetternotificationsforwp.com\u002Fdownloads\u002Fupdate-reminder\u002F\" rel=\"nofollow ugc\">Reminders Add-on\u003C\u002Fa>)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Media\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>New Media Published\u003C\u002Fli>\n\u003Cli>Media Updated\u003C\u002Fli>\n\u003Cli>Media – New Comment\u003C\u002Fli>\n\u003Cli>Media – New Comment Awaiting Moderation\u003C\u002Fli>\n\u003Cli>Media – Comment Approved\u003C\u002Fli>\n\u003Cli>Media – Comment Reply\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Posts\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>New Category\u003C\u002Fli>\n\u003Cli>New Tag\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Custom Post Types\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>New Term\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Multisite (\u003Ca href=\"https:\u002F\u002Fbetternotificationsforwp.com\u002Fdownloads\u002Fmultisite\u002F\" rel=\"nofollow ugc\">Multisite Add-on\u003C\u002Fa>)\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>New Site Activated or Created – For Network Admin\u003C\u002Fli>\n\u003Cli>New User Created – For Network Admin\u003C\u002Fli>\n\u003Cli>Network Admin Email Change Attempted – For New Network Admin\u003C\u002Fli>\n\u003Cli>Network Admin Email Changed – For Old Network Admin\u003C\u002Fli>\n\u003Cli>New Site Activated or Created – For Site Admin\u003C\u002Fli>\n\u003Cli>Site Deleted – For Site Admin\u003C\u002Fli>\n\u003Cli>Site Admin Email Change Attempted – For New Site Admin\u003C\u002Fli>\n\u003Cli>Site Admin Email Changed – For Old Site Admin\u003C\u002Fli>\n\u003Cli>New Site Activated – For User\u003C\u002Fli>\n\u003Cli>New User Created – For User\u003C\u002Fli>\n\u003Cli>New User Invited to Site – For User\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>If you’d like to see a notification in the list above, please drop me a line in the forum and I’ll see what I can do to add it.\u003C\u002Fp>\n\u003Cp>If you want to let users create their own email notifications\u002Fsubscriptions\u002Falerts, check out my other plugin: \u003Ca href=\"https:\u002F\u002Fcontentnotify.com\" rel=\"nofollow ugc\">Content Notify\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>Like this plugin? Please leave it \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Fplugin\u002Fbnfw\u002Freviews\u002F?rate=5#new-post\" rel=\"ugc\">a great review\u003C\u002Fa>! Don’t think the plugin is worthy of 5 stars? Having problems? Let me know in the \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Fplugin\u002Fbnfw\u002F\" rel=\"ugc\">forum\u003C\u002Fa> and I’ll do my best to help.\u003C\u002Fp>\n\u003Cp>DISCLAIMER\u003Cbr \u002F>\n  This is an incredibly useful and highly rated plugin however, it’s possible that overuse or abuse of this plugin could upset your users by sending them too many notifications. By downloading \u002F installing \u002F using this plugin, you take full responsibility of the management \u002F quantity \u002F types of notifications that are sent out from it including abiding by any SPAM laws in your country \u002F operating areas, dealing with \u002F responding to subscription \u002F unsubscription requests, complaints, and so on. I accept no liability or responsibility for SPAM or abuse of this plugin from the user(s) of or anyone that may receive notifications as a result of the use of this plugin. I’m trusting you, please don’t abuse your users.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n","Supercharge your WordPress email notifications using a WYSIWYG editor and shortcodes. Default and new notifications available. Add-ons available.",30000,1035011,96,184,"2025-09-08T10:17:00.000Z","4.8","7.4",[56,21,57,23,24],"alert","message","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fbnfw\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fbnfw.1.9.9.1.zip",99,2,"2023-05-18 00:00:00",{"slug":23,"name":64,"version":65,"author":7,"author_profile":8,"description":66,"short_description":67,"active_installs":68,"downloaded":69,"rating":70,"num_ratings":71,"last_updated":72,"tested_up_to":73,"requires_at_least":74,"requires_php":54,"tags":75,"homepage":18,"download_link":76,"security_score":13,"vuln_count":77,"unpatched_count":27,"last_vuln_date":78,"fetched_at":29},"Notification – Custom Notifications and Alerts for WordPress","9.0.10","\u003Cp>\u003Cstrong>WordPress sends emails you can’t customize.\u003C\u002Fstrong> You can’t change who receives them, what they say, or how they look. And if you need to notify your team about content changes, user activity, or security events — WordPress simply doesn’t do that.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Notification fixes this.\u003C\u002Fstrong> It gives you complete control over what WordPress sends, to whom, and through which channel. Replace rigid default emails with fully customizable messages, or create entirely new notifications triggered by any WordPress event. No coding required — set up your first notification in under 5 minutes.\u003C\u002Fp>\n\u003Cspan class=\"embed-youtube\" style=\"text-align:center; display: block;\">\u003Ciframe loading=\"lazy\" class=\"youtube-player\" width=\"750\" height=\"422\" src=\"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FgW2KHrT_a7U?version=3&rel=1&showsearch=0&showinfo=1&iv_load_policy=1&fs=1&hl=en-US&autohide=2&wmode=transparent\" allowfullscreen=\"true\" style=\"border:0;\" sandbox=\"allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox\">\u003C\u002Fiframe>\u003C\u002Fspan>\n\u003Ch4>WHAT YOU CAN DO WITH THE FREE VERSION\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Replace default WordPress emails\u003C\u002Fstrong> — Disable any built-in email (new user, password reset, comments, etc.) and replace it with your own version using the built-in Wizard\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Create custom notifications\u003C\u002Fstrong> — Get notified when posts are published, users register, comments arrive, plugins update, and 50+ other WordPress events\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Use dynamic content\u003C\u002Fstrong> — Insert Merge Tags like \u003Ccode>{post_title}\u003C\u002Fcode>, \u003Ccode>{user_email}\u003C\u002Fcode>, or \u003Ccode>{comment_content}\u003C\u002Fcode> to personalize every message\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Send to anyone\u003C\u002Fstrong> — Route notifications to specific email addresses, users, or entire roles\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Send via email or webhook\u003C\u002Fstrong> — Email is built-in; webhooks let you connect to any external service or automation tool\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Control with precision\u003C\u002Fstrong> — Enable or disable individual triggers, configure carriers, and set up multiple notifications per event\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>REPLACE DEFAULT WORDPRESS EMAILS\u003C\u002Fh4>\n\u003Cp>The built-in Wizard walks you through disabling WordPress default emails and replacing them with your own. You keep full control over the content, recipients, and formatting — no more generic messages you can’t edit.\u003C\u002Fp>\n\u003Ch4>BUILT-IN TRIGGERS\u003C\u002Fh4>\n\u003Cp>Over 50 triggers are ready to use out of the box. Enable or disable them in Settings.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Posts & Custom Post Types\u003C\u002Fstrong> — published, drafted, updated, pending review, approved, trashed (works with any CPT)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Taxonomy terms\u003C\u002Fstrong> — created, updated, deleted (works with any taxonomy)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Comments, Pingbacks & Trackbacks\u003C\u002Fstrong> — new, replied, approved, unapproved, spam, trashed\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Users\u003C\u002Fstrong> — registered, profile updated, logged in, failed login, logged out, password reset\u002Fchanged, deleted\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Media\u003C\u002Fstrong> — added, updated, deleted\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Plugins\u003C\u002Fstrong> — activated, deactivated, installed, removed, updated\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Themes\u003C\u002Fstrong> — installed, switched, updated\u003C\u002Fli>\n\u003Cli>\u003Cstrong>WordPress\u003C\u002Fstrong> — available updates (on a schedule you define)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Privacy\u003C\u002Fstrong> — personal data erased, erase request, exported, export request\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Each trigger comes with its own set of Merge Tags, plus you can use Global Merge Tags (\u003Ccode>{site_title}\u003C\u002Fcode>, \u003Ccode>{admin_email}\u003C\u002Fcode>, \u003Ccode>{home_url}\u003C\u002Fcode>, etc.) anywhere.\u003C\u002Fp>\n\u003Ch4>EXTENSIONS\u003C\u002Fh4>\n\u003Cp>Extend the plugin with additional carriers, triggers, and features:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fbracketspace.com\u002Fdownloads\u002Fnotification-webhooks\u002F\" rel=\"nofollow ugc\">Webhooks\u003C\u002Fa> – send and receive Webhooks\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fbracketspace.com\u002Fdownloads\u002Fnotification-conditionals\u002F\" rel=\"nofollow ugc\">Conditionals\u003C\u002Fa> – send Notifications only when specific conditions are met\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fbracketspace.com\u002Fdownloads\u002Fnotification-custom-fields\u002F\" rel=\"nofollow ugc\">Custom Fields\u003C\u002Fa> – use any meta value in your Notifications\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fbracketspace.com\u002Fdownloads\u002Fnotification-slack\u002F\" rel=\"nofollow ugc\">Slack\u003C\u002Fa> – post messages to Slack channel\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fbracketspace.com\u002Fdownloads\u002Fnotification-push\u002F\" rel=\"nofollow ugc\">Push\u003C\u002Fa> – send push notifications via browser’s native system\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fbracketspace.com\u002Fdownloads\u002Fnotification-discord\u002F\" rel=\"nofollow ugc\">Discord\u003C\u002Fa> – post messages to Discord channel\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fbracketspace.com\u002Fdownloads\u002Fnotification-twilio\u002F\" rel=\"nofollow ugc\">Twilio\u003C\u002Fa> – send bulk SMS messages from your Twilio registered phone number\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fbracketspace.com\u002Fdownloads\u002Fnotification-scheduled-triggers\u002F\" rel=\"nofollow ugc\">Scheduled Triggers\u003C\u002Fa> – schedule your notifications based on events time\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fbracketspace.com\u002Fdownloads\u002Fnotification-review-queue\u002F\" rel=\"nofollow ugc\">Review Queue\u003C\u002Fa> – catch your Notifications into a queue for manual review\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fbracketspace.com\u002Fdownloads\u002Fnotification-woocommerce\u002F\" rel=\"nofollow ugc\">WooCommerce\u003C\u002Fa> – triggers specific to WooCommerce\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fbracketspace.com\u002Fdownloads\u002Fnotification-pushbullet\u002F\" rel=\"nofollow ugc\">Pushbullet\u003C\u002Fa> – send Push and SMS Notifications via your phone\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fbracketspace.com\u002Fdownloads\u002Fnotification-pushover\u002F\" rel=\"nofollow ugc\">Pushover\u003C\u002Fa> – send Push messages to devices registered in Pushover\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fbracketspace.com\u002Fdownloads\u002Fnotification-sendgrid\u002F\" rel=\"nofollow ugc\">SendGrid\u003C\u002Fa> – send emails using SendGrid service\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fbracketspace.com\u002Fdownloads\u002Fnotification-mailgun\u002F\" rel=\"nofollow ugc\">Mailgun\u003C\u002Fa> – send emails using Mailgun service\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fbracketspace.com\u002Fdownloads\u002Fnotification-file-log\u002F\" rel=\"nofollow ugc\">File Log\u003C\u002Fa> – save Notifications as file logs on the server\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fnotification-bbpress\u002F\" rel=\"ugc\">bbPress\u003C\u002Fa> – bbPress triggers\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fnotification-buddypress\u002F\" rel=\"ugc\">BuddyPress\u003C\u002Fa> – BuddyPress triggers and integration with their notification system\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fsignature-notification\u002F\" rel=\"ugc\">Signature\u003C\u002Fa> – add a signature to all your emails automatically\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fbracketspace.com\u002Fdownloads\u002Fnotification-email-attachments\u002F\" rel=\"nofollow ugc\">Email Attachments\u003C\u002Fa> – attach files to your notification\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>DEVELOPER-FRIENDLY\u003C\u002Fh4>\n\u003Cp>Notification is designed to be extended. Create custom Triggers from any \u003Ccode>do_action()\u003C\u002Fcode> call, add Merge Tags in a single line of code, or build entirely new Carriers. The plugin can be bundled with your theme or plugin and white-labeled with one function call.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fdocs.bracketspace.com\u002Fnotification\u002Fdeveloper\u002Fgeneral\" rel=\"nofollow ugc\">Developer documentation\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FBracketSpace\u002FNotification-Extension-Boilerplate\u002F\" rel=\"nofollow ugc\">Extension Boilerplate\u003C\u002Fa> to start building your own add-on\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>USE CASES\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Editorial workflows\u003C\u002Fstrong> — Notify editors when a post is submitted for review, and authors when it’s approved or scheduled\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Security monitoring\u003C\u002Fstrong> — Get alerts on failed login attempts, user role changes, or plugin activations\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Client sites\u003C\u002Fstrong> — Replace confusing default WordPress emails with branded, clear messages for your clients\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Team coordination\u003C\u002Fstrong> — Send Slack or webhook notifications when content is updated, users register, or comments need moderation\u003C\u002Fli>\n\u003Cli>\u003Cstrong>WooCommerce stores\u003C\u002Fstrong> — Trigger custom alerts for orders, stock changes, and customer activity (with the WooCommerce extension)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Here are some of the most popular specific setups. See the FAQ section for step-by-step details on each.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Notify authors when their post is published\u003C\u002Fli>\n\u003Cli>Email editors when a post is submitted for review\u003C\u002Fli>\n\u003Cli>Replace the default new user welcome email with a branded version\u003C\u002Fli>\n\u003Cli>Alert admins on failed login attempts with IP address details\u003C\u002Fli>\n\u003Cli>Get notified when someone edits a published post\u003C\u002Fli>\n\u003Cli>Send Slack\u002Fwebhook alerts when plugins are activated or updated\u003C\u002Fli>\n\u003Cli>Notify users when their role changes\u003C\u002Fli>\n\u003Cli>Disable default WordPress emails and replace them with custom ones\u003C\u002Fli>\n\u003Cli>Monitor user registrations, password resets, and account deletions\u003C\u002Fli>\n\u003Cli>Set up comment moderation notifications for post authors\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>USEFUL LINKS\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fdocs.bracketspace.com\u002Fnotification\u002F\" rel=\"nofollow ugc\">Documentation\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FBracketSpace\u002FNotification\" rel=\"nofollow ugc\">GitHub repository\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FBracketSpace\u002FNotification\u002Fissues\u002Fnew\" rel=\"nofollow ugc\">Report a bug\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>CUSTOM DEVELOPMENT\u003C\u002Fh4>\n\u003Cp>BracketSpace – the company behind this plugin provides \u003Ca href=\"https:\u002F\u002Fbracketspace.com\u002Fcustom-development\u002F\" rel=\"nofollow ugc\">custom WordPress plugin development services\u003C\u002Fa>. We can create any custom plugin for you.\u003C\u002Fp>\n","Take full control of WordPress emails and notifications. Replace default messages, add custom triggers, and send alerts via email, webhook, Slack, and &hellip;",10000,402473,92,124,"2026-03-11T08:32:00.000Z","6.9.4","5.8",[56,21,22,23,24],"https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fnotification.9.0.10.zip",1,"2021-10-25 00:00:00",{"slug":80,"name":81,"version":82,"author":83,"author_profile":84,"description":85,"short_description":86,"active_installs":87,"downloaded":88,"rating":50,"num_ratings":89,"last_updated":90,"tested_up_to":73,"requires_at_least":91,"requires_php":54,"tags":92,"homepage":18,"download_link":97,"security_score":98,"vuln_count":61,"unpatched_count":27,"last_vuln_date":99,"fetched_at":29},"bbpress-notify-nospam","bbPress Notify (No-Spam)","3.0.3","useStrict","https:\u002F\u002Fprofiles.wordpress.org\u002Fusestrict\u002F","\u003Cp>\u003Cstrong>bbPress Notify (No-Spam)\u003C\u002Fstrong> is the ultimate notification plugin for \u003Cstrong>bbPress\u003C\u002Fstrong> and \u003Cstrong>BuddyBoss\u003C\u002Fstrong> forums.\u003Cbr \u002F>\nIt replaces the limited default subscription system with a flexible, no-spam solution that gives your users \u003Cstrong>personalized, reliable email updates\u003C\u002Fstrong> about new topics and replies.\u003C\u002Fp>\n\u003Cp>Stop flooding inboxes. With bbpnns you control exactly who gets notified, when, and how. Perfect for community managers, membership sites, and anyone who wants professional-grade forum notifications.\u003C\u002Fp>\n\u003Ch4>Key Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>📧 \u003Cstrong>Send professional emails\u003C\u002Fstrong> — Choose HTML, plain text, or multipart with image support.\u003C\u002Fli>\n\u003Cli>🎯 \u003Cstrong>Target the right audience\u003C\u002Fstrong> — Notify by user roles (admins, moderators, members, etc.).\u003C\u002Fli>\n\u003Cli>🚀 \u003Cstrong>Faster performance\u003C\u002Fstrong> — Background notifications prevent post-submission timeouts.\u003C\u002Fli>\n\u003Cli>🧪 \u003Cstrong>Preview before sending\u003C\u002Fstrong> — Dry-run mode shows exactly who will receive notifications.\u003C\u002Fli>\n\u003Cli>🔌 \u003Cstrong>Developer-friendly\u003C\u002Fstrong> — Dozens of filters and actions for easy customization.\u003C\u002Fli>\n\u003Cli>✅ \u003Cstrong>BuddyBoss compatible\u003C\u002Fstrong> — Works out of the box with BuddyBoss forums.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fusestrict.net\u002Fbbpress-notify-no-spam-documentation\u002F\" rel=\"nofollow ugc\">📖 View the full documentation\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>💡 Looking for advanced features like digests, reply-by-email, and membership integrations? \u003Ca href=\"https:\u002F\u002Fusestrict.net\u002Fbbpress-notify-premium\u002F?utm_source=wporg-readme&utm_medium=plugin&utm_campaign=top\" rel=\"nofollow ugc\">See bbPress Notify Premium\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3>Premium Add-Ons\u003C\u002Fh3>\n\u003Cp>Take bbpnns to the next level with powerful extensions:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Reply by Email\u003C\u002Fstrong> – Post new topics or replies directly from your inbox.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Bulk Mailer\u003C\u002Fstrong> – Send notifications to thousands of users reliably — no timeouts, no dropped emails.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Digests\u003C\u002Fstrong> – Give users daily, weekly, or monthly summaries to reduce inbox noise.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Opt-Out\u003C\u002Fstrong> – One-click unsubscribe options for CAN-SPAM and CASL compliance.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Membership & LMS Bridges\u003C\u002Fstrong> – Running a membership or LMS site? Keep notifications in sync with your access control layer. Supports BuddyPress, MemberPress, LearnDash, AccessAlly, Private Groups, and more.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>👉 Browse all premium add-ons here: \u003Ca href=\"https:\u002F\u002Fusestrict.net\u002Fbbpress-notify-premium\u002F?utm_source=wporg-readme&utm_medium=plugin&utm_campaign=bbpnns\" rel=\"nofollow ugc\">bbPress Notify Premium\u003C\u002Fa>\u003C\u002Fp>\n","Powerful, customizable email notifications for bbPress and BuddyBoss forums — without the spam.",3000,291519,39,"2026-03-11T19:58:00.000Z","3.1",[20,93,94,95,96],"buddyboss","email-notification","forum-notifications","no-spam","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fbbpress-notify-nospam.3.0.3.zip",98,"2025-07-19 00:00:00",{"slug":101,"name":102,"version":103,"author":104,"author_profile":105,"description":106,"short_description":107,"active_installs":108,"downloaded":109,"rating":37,"num_ratings":110,"last_updated":111,"tested_up_to":73,"requires_at_least":112,"requires_php":113,"tags":114,"homepage":18,"download_link":119,"security_score":120,"vuln_count":77,"unpatched_count":77,"last_vuln_date":121,"fetched_at":29},"email-notification-on-login","Email Notification on Login","1.7.0","apasionados","https:\u002F\u002Fprofiles.wordpress.org\u002Fapasionados\u002F","\u003Cp>This plugin sends an email to the WordPress System email (Settings \u002F General \u002F Email Address) or any other configured email address each time somebody logs into WordPress. This is handy if there are not many logins each day or week to keep track of all of them and being able to detect non authorized logins.\u003C\u002Fp>\n\u003Cp>The email contains the username, the user id and the user role (administrator, editor, author or contributor). Other data included is the Date & Time and the IP Address.\u003C\u002Fp>\n\u003Cp>This plugin is an enhanced version of the plugin \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Femail-notification-on-admin-login\u002F\" rel=\"ugc\">Email notification on admin login\u003C\u002Fa>, that tracks all users, includes user role, translations and the lookup of the country of the IP from which the form is sent.\u003C\u002Fp>\n\u003Cp>We created this enhanced version of the plugin, because we needed a translation to Spanish and wanted to know the country from which the uses send the contact form, whithout having to lookup the IP address.\u003C\u002Fp>\n\u003Cp>In order to display the Country it needs the \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fgeoip-detect\u002F\" rel=\"ugc\">Geolocation IP Detection (until March 2020: GeoIP Detection) plugin\u003C\u002Fa> that can be found in the WordPress plugin repository. This plugin “provides geographic information detected by an IP adress”. \u003Cem>This plugin auto-updates the GeoIP database once a week. This product includes GeoLite data created by MaxMind, available from \u003Ca href=\"http:\u002F\u002Fwww.maxmind.com\" rel=\"nofollow ugc\">www.maxmind.com\u003C\u002Fa>.\u003C\u002Fem>\u003C\u002Fp>\n\u003Cp>If the \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fgeoip-detect\u002F\" rel=\"ugc\">Geolocation IP Detection (until March 2020: GeoIP Detection) plugin\u003C\u002Fa> is not installed and enabled, you will only see the IP address, without the country of the IP adress.\u003C\u002Fp>\n\u003Cp>We decided to use the Geolocation IP Detection (until March 2020: GeoIP Detection) plugin to handle the lookup of the country, because it’s a plugin that is actively developed and we saw no advantage in implementing all this functionality, when we could use an existing one.\u003C\u002Fp>\n\u003Ch4>What can I do with this plugin?\u003C\u002Fh4>\n\u003Cp>This plugin sends an email to the WordPress System email (Settings \u002F General \u002F Email Address) or any other configured email address each time somebody logs into WordPress. This is handy if there are not many logins each day or week to keep track of all of them and being able to detect non authorized logins.\u003C\u002Fp>\n\u003Ch4>What ideas is this plugin based on?\u003C\u002Fh4>\n\u003Cp>This plugin is an enhanced version of the plugin \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Femail-notification-on-admin-login\u002F\" rel=\"ugc\">Email notification on admin login\u003C\u002Fa>, that tracks all users, includes user role, translations and the lookup of the country of the IP from which the form is sent.\u003C\u002Fp>\n\u003Ch4>System requirements\u003C\u002Fh4>\n\u003Cp>PHP version 5.5 or greater.\u003C\u002Fp>\n\u003Ch4>Email notification on Login Plugin in your Language!\u003C\u002Fh4>\n\u003Cp>This first release is avaliable in English and Spanish. In the “languages” folder we have included the necessarry files to translate this plugin.\u003C\u002Fp>\n\u003Cp>If you would like the plugin in your language and you’re good at translating, please drop us a line at \u003Ca href=\"https:\u002F\u002Fapasionados.es\u002Fcontacto\u002Findex.php?desde=wordpress-org-email-notification-on-login-home\" rel=\"nofollow ugc\">Contact us\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch4>Further Reading\u003C\u002Fh4>\n\u003Cp>You can access the description of the plugin in Spanish at: \u003Ca href=\"https:\u002F\u002Fapasionados.es\u002Fblog\u002Fenviar-email-cuando-alguien-se-loguea-wordpress-plugin-7762\u002F\" rel=\"nofollow ugc\">Email notification on Login en espa&ntilde;ol\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch3>Contact\u003C\u002Fh3>\n\u003Cp>For further information please send us an \u003Ca href=\"https:\u002F\u002Fapasionados.es\u002Fcontacto\u002Findex.php?desde=wordpress-org-email-notification-on-login\" rel=\"nofollow ugc\">email\u003C\u002Fa>.\u003C\u002Fp>\n","Receive an email after each successful login with the user information",1000,19562,11,"2026-01-27T14:14:00.000Z","4.0.1","5.5",[115,94,116,117,118],"admin-login-notification","email-notify-on-admin-login","email-notify-on-login","login-notification","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Femail-notification-on-login.zip",78,"2025-05-07 00:00:00",{"slug":123,"name":124,"version":125,"author":126,"author_profile":127,"description":128,"short_description":129,"active_installs":108,"downloaded":130,"rating":13,"num_ratings":131,"last_updated":132,"tested_up_to":73,"requires_at_least":133,"requires_php":134,"tags":135,"homepage":136,"download_link":137,"security_score":13,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":29},"simple-login-notification","Simple Login Notification","2.2","Jeff Starr","https:\u002F\u002Fprofiles.wordpress.org\u002Fspecialk\u002F","\u003Cp>Sends a detailed notification email when admins and other users log in to your site. Choose the user levels\u002Froles for which you would like to receive login notifications. Optionally exclude users and\u002For IP addresses.\u003C\u002Fp>\n\u003Cp>This plugin is useful for keeping an eye on any unauthorized administrator or user logins. Each email alert includes the user name, IP address, user agent, and other details. Very useful for forensic investigations.\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>👁️ Keep an eye on things..\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>\u003Cstrong>Features\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Send email alerts for any user level\u002Frole\u003C\u002Fli>\n\u003Cli>Option to exclude alerts for any user ID\u003C\u002Fli>\n\u003Cli>Option to exclude alerts for any IP address\u003C\u002Fli>\n\u003Cli>Send alerts to additional email addresses\u003C\u002Fli>\n\u003Cli>Automatically send alerts to main Admin user\u003C\u002Fli>\n\u003Cli>Option to disable alerts for main Admin user\u003C\u002Fli>\n\u003Cli>Provides detailed information about each login\u003C\u002Fli>\n\u003Cli>Lightweight and fast: total plugin size \u003C 100KB\u003C\u002Fli>\n\u003Cli>Simple to use: configure a few options and done\u003C\u002Fli>\n\u003Cli>No permanent changes are made to anything\u003C\u002Fli>\n\u003Cli>Easy peasy mac and cheesy\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cblockquote>\n\u003Cp>👇 Check out the \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fsimple-login-notification\u002F#screenshots\" rel=\"ugc\">screenshots\u003C\u002Fa>\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>\u003Cstrong>Why is this useful?\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>I use this plugin to keep an eye on any unauthorized login attempts. Probably a bit paranoid but I don’t care, paranoid works well for me.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>How is this plugin different?\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>While researching for this plugin, I found four other “admin login notification” type plugins:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Femail-notification-on-login\u002F\" rel=\"ugc\">Email Notification on Login\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Femail-notification-on-admin-login\u002F\" rel=\"ugc\">Email notification on admin login\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fkaya-login-notification\u002F\" rel=\"ugc\">Kaya Login Notification\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fkolorweb-access-admin-notification\u002F\" rel=\"ugc\">KolorWeb Access Admin Notification\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Unfortunately none of these plugins suited my specific needs:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Lightweight, clean and simple\u003C\u002Fli>\n\u003Cli>Current with latest WordPress\u003C\u002Fli>\n\u003Cli>No requirement for PHP sessions\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>So I decided to build my own. Let me emphasize the utter simplicity of this plugin. It does one thing and does it well: sends an email whenever an admin-level user logs in to WordPress. No bells and whistles, no bloat. If you need more functionality, check out the above plugins should get you there.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Privacy\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>This plugin does not collect or store any user data. It does not set any cookies, and it does not connect to any third-party locations. The \u003Cem>only\u003C\u002Fem> thing this plugin does is send an email for each admin-level login. Each email includes information about the user, such as username, IP address, user agent, and other details.\u003C\u002Fp>\n\u003Cp>Simple Login Notification is developed and maintained by \u003Ca href=\"https:\u002F\u002Fx.com\u002Fperishable\" rel=\"nofollow ugc\">Jeff Starr\u003C\u002Fa>, 15-year \u003Ca href=\"https:\u002F\u002Fplugin-planet.com\u002F\" rel=\"nofollow ugc\">WordPress developer\u003C\u002Fa> and \u003Ca href=\"https:\u002F\u002Fbooks.perishablepress.com\u002F\" rel=\"nofollow ugc\">book author\u003C\u002Fa>.\u003C\u002Fp>\n","Sends a notification email when admins and other users log in to your site.",12427,7,"2026-02-02T15:42:00.000Z","5.3","5.6.20",[115,94,116,118],"https:\u002F\u002Fperishablepress.com\u002Fsimple-login-notification\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fsimple-login-notification.2.2.zip",{"attackSurface":139,"codeSignals":173,"taintFlows":541,"riskAssessment":590,"analyzedAt":606},{"hooks":140,"ajaxHandlers":169,"restRoutes":170,"shortcodes":171,"cronEvents":172,"entryPointCount":27,"unprotectedCount":27},[141,148,153,158,163,166],{"type":142,"name":143,"callback":144,"priority":145,"file":146,"line":147},"action","notification\u002Finit","elements",10,"compat\\register-hooks.php",13,{"type":142,"name":149,"callback":150,"priority":151,"file":146,"line":152},"notification\u002Fsettings\u002Fregister","registerTriggerSettings",20,14,{"type":154,"name":155,"callback":156,"priority":145,"file":146,"line":157},"filter","notification\u002Fsettings\u002Ftriggers\u002Fvalid_post_types","filterPostTypes",15,{"type":142,"name":159,"callback":160,"file":161,"line":162},"admin_notices","closure","dependencies\\micropackage\\requirements\\src\\Requirements.php",267,{"type":142,"name":143,"callback":160,"priority":77,"file":164,"line":165},"load.php",18,{"type":142,"name":143,"callback":160,"priority":61,"file":167,"line":168},"notification-bbpress.php",107,[],[],[],[],{"dangerousFunctions":174,"sqlUsage":518,"outputEscaping":521,"fileOperations":539,"externalRequests":61,"nonceChecks":77,"capabilityChecks":27,"bundledLibraries":540},[175,180,183,188,192,196,200,203,207,210,213,217,221,225,229,231,233,236,238,242,246,249,252,254,257,261,264,267,270,273,276,279,281,283,285,288,291,293,296,298,302,305,309,313,317,320,324,327,329,331,335,339,342,345,348,351,355,358,361,365,368,372,376,379,381,386,389,392,394,397,400,404,407,409,413,415,418,420,423,426,428,431,436,439,443,448,451,455,457,460,463,465,466,468,470,473,475,478,480,484,487,491,495,497,500,503,506,509,512,516],{"fn":176,"file":177,"line":178,"context":179},"assert","dependencies\\composer\\class-map-generator\\src\\PhpFileParser.php",84,"assert(is_string($name));",{"fn":176,"file":181,"line":168,"context":182},"dependencies\\composer\\composer\\src\\Composer\\Command\\BaseCommand.php","assert($this->composer instanceof Composer);",{"fn":184,"file":185,"line":186,"context":187},"exec","dependencies\\composer\\composer\\src\\Composer\\Command\\ConfigCommand.php",240,"if (exec('which '.$candidate)) {",{"fn":189,"file":185,"line":190,"context":191},"system",251,"system($editor . ' ' . $file . (Platform::isWindows() ? '' : ' > `tty`'));",{"fn":176,"file":193,"line":194,"context":195},"dependencies\\composer\\composer\\src\\Composer\\Command\\InitCommand.php",476,"assert(is_string($match['name']));",{"fn":184,"file":197,"line":198,"context":199},"dependencies\\composer\\composer\\src\\Composer\\Command\\SelfUpdateCommand.php",587,"exec('fltmc.exe filters', $output, $exitCode);",{"fn":184,"file":197,"line":201,"context":202},637,"exec('\"'.$script.'\"');",{"fn":176,"file":204,"line":205,"context":206},"dependencies\\composer\\composer\\src\\Composer\\Command\\ShowCommand.php",334,"assert(isset($versions));",{"fn":176,"file":204,"line":208,"context":209},1341,"assert(is_string($require['name']));",{"fn":176,"file":204,"line":211,"context":212},1342,"assert(is_string($require['version']));",{"fn":176,"file":214,"line":215,"context":216},"dependencies\\composer\\composer\\src\\Composer\\Config.php",537,"assert(is_string($match[1]));",{"fn":176,"file":218,"line":219,"context":220},"dependencies\\composer\\composer\\src\\Composer\\Console\\HtmlOutputFormatter.php",87,"assert(is_string($matches[1]));",{"fn":176,"file":222,"line":223,"context":224},"dependencies\\composer\\composer\\src\\Composer\\Downloader\\FileDownloader.php",155,"assert(count($urls) > 0);",{"fn":176,"file":226,"line":227,"context":228},"dependencies\\composer\\composer\\src\\Composer\\EventDispatcher\\EventDispatcher.php",134,"assert($this->composer instanceof Composer, new \\LogicException('This should only be reached with a ",{"fn":176,"file":226,"line":230,"context":228},153,{"fn":176,"file":226,"line":232,"context":228},171,{"fn":176,"file":226,"line":234,"context":235},392,"assert(is_string($path[0]));",{"fn":176,"file":226,"line":237,"context":228},580,{"fn":176,"file":239,"line":240,"context":241},"dependencies\\composer\\composer\\src\\Composer\\Installer\\LibraryInstaller.php",346,"assert($this->downloadManager instanceof DownloadManager, new \\LogicException(self::class.' should b",{"fn":176,"file":243,"line":244,"context":245},"dependencies\\composer\\composer\\src\\Composer\\Installer\\PluginInstaller.php",139,"assert($this->composer instanceof Composer, new \\LogicException(self::class.' should be initialized ",{"fn":176,"file":247,"line":248,"context":220},"dependencies\\composer\\composer\\src\\Composer\\IO\\BufferIO.php",60,{"fn":176,"file":247,"line":250,"context":251},61,"assert(is_string($matches[2]));",{"fn":176,"file":253,"line":37,"context":216},"dependencies\\composer\\composer\\src\\Composer\\Json\\JsonFormatter.php",{"fn":176,"file":253,"line":255,"context":256},77,"assert(is_string($match[2]));",{"fn":176,"file":258,"line":259,"context":260},"dependencies\\composer\\composer\\src\\Composer\\Json\\JsonManipulator.php",79,"assert(is_string($matches['start']));",{"fn":176,"file":258,"line":262,"context":263},80,"assert(is_string($matches['value']));",{"fn":176,"file":258,"line":265,"context":266},81,"assert(is_string($matches['end']));",{"fn":176,"file":258,"line":268,"context":269},89,"assert(is_string($packageMatches['package']));",{"fn":176,"file":258,"line":271,"context":272},271,"assert(is_string($match['start']));",{"fn":176,"file":258,"line":274,"context":275},272,"assert(is_string($match['content']));",{"fn":176,"file":258,"line":277,"context":278},273,"assert(is_string($match['end']));",{"fn":176,"file":258,"line":280,"context":272},368,{"fn":176,"file":258,"line":282,"context":275},369,{"fn":176,"file":258,"line":284,"context":278},370,{"fn":176,"file":258,"line":286,"context":287},396,"assert(is_string($match));",{"fn":176,"file":258,"line":289,"context":290},442,"assert(is_string($matches['content']));",{"fn":176,"file":258,"line":292,"context":260},513,{"fn":176,"file":258,"line":294,"context":295},514,"assert(is_string($matches['removal']));",{"fn":176,"file":258,"line":297,"context":266},515,{"fn":176,"file":299,"line":300,"context":301},"dependencies\\composer\\composer\\src\\Composer\\Package\\Version\\VersionBumper.php",102,"assert(is_string($match[0]));",{"fn":176,"file":303,"line":304,"context":220},"dependencies\\composer\\composer\\src\\Composer\\Package\\Version\\VersionGuesser.php",414,{"fn":176,"file":306,"line":307,"context":308},"dependencies\\composer\\composer\\src\\Composer\\Plugin\\PluginManager.php",566,"assert(null !== $this->globalComposer);",{"fn":176,"file":310,"line":311,"context":312},"dependencies\\composer\\composer\\src\\Composer\\Repository\\ComposerRepository.php",185,"assert($baseUrl !== '');",{"fn":176,"file":314,"line":315,"context":316},"dependencies\\composer\\composer\\src\\Composer\\Repository\\Vcs\\GitHubDriver.php",71,"assert(is_string($match[3]));",{"fn":176,"file":314,"line":318,"context":319},72,"assert(is_string($match[4]));",{"fn":176,"file":321,"line":322,"context":323},"dependencies\\composer\\composer\\src\\Composer\\Repository\\Vcs\\GitLabDriver.php",105,"assert(is_string($match['parts']));",{"fn":176,"file":321,"line":325,"context":326},106,"assert(is_string($match['repo']));",{"fn":176,"file":321,"line":328,"context":323},574,{"fn":176,"file":321,"line":330,"context":326},575,{"fn":176,"file":332,"line":333,"context":334},"dependencies\\composer\\composer\\src\\Composer\\Util\\ComposerMirror.php",48,"assert($url !== '');",{"fn":176,"file":336,"line":337,"context":338},"dependencies\\composer\\composer\\src\\Composer\\Util\\Filesystem.php",616,"assert(is_string($m[0]));",{"fn":176,"file":336,"line":340,"context":341},913,"assert($sourceHandle !== false, 'Could not open \"'.$source.'\" for reading.');",{"fn":176,"file":336,"line":343,"context":344},915,"assert($targetHandle !== false, 'Could not open \"'.$target.'\" for writing.');",{"fn":176,"file":336,"line":346,"context":347},938,"assert($aHandle !== false, 'Could not open \"'.$a.'\" for reading.');",{"fn":176,"file":336,"line":349,"context":350},940,"assert($bHandle !== false, 'Could not open \"'.$b.'\" for reading.');",{"fn":176,"file":352,"line":353,"context":354},"dependencies\\composer\\composer\\src\\Composer\\Util\\HttpDownloader.php",321,"assert(isset($job['resolve']));",{"fn":176,"file":352,"line":356,"context":357},322,"assert(isset($job['reject']));",{"fn":176,"file":352,"line":359,"context":360},426,"assert(isset($this->jobs[$index]['exception']));",{"fn":176,"file":362,"line":363,"context":364},"dependencies\\composer\\composer\\src\\Composer\\Util\\Platform.php",108,"assert(is_string($matches['var']));",{"fn":176,"file":362,"line":366,"context":367},109,"assert('' !== $matches['var']);",{"fn":176,"file":369,"line":370,"context":371},"dependencies\\composer\\composer\\src\\Composer\\Util\\ProcessExecutor.php",463,"assert(is_string($m['user']));",{"fn":176,"file":373,"line":374,"context":375},"dependencies\\composer\\composer\\src\\Composer\\Util\\SyncHelper.php",40,"assert($downloader instanceof DownloaderInterface || $downloader instanceof DownloadManager);",{"fn":176,"file":377,"line":378,"context":334},"dependencies\\composer\\composer\\src\\Composer\\Util\\Url.php",63,{"fn":176,"file":377,"line":380,"context":371},118,{"fn":382,"file":383,"line":384,"context":385},"proc_open","dependencies\\composer\\xdebug-handler\\src\\XdebugHandler.php",302,"$process = proc_open($cmd, [], $pipes);",{"fn":176,"file":387,"line":374,"context":388},"dependencies\\react\\promise\\src\\functions.php","assert(\\is_callable($canceller));",{"fn":176,"file":387,"line":390,"context":391},279,"assert($callback instanceof \\Closure || \\is_string($callback));",{"fn":176,"file":387,"line":353,"context":393},"assert($typeToMatch instanceof \\ReflectionNamedType);",{"fn":176,"file":387,"line":395,"context":396},327,"assert(isset($matches));",{"fn":176,"file":387,"line":398,"context":399},329,"assert($type instanceof \\ReflectionNamedType);",{"fn":176,"file":401,"line":402,"context":403},"dependencies\\react\\promise\\src\\Internal\\CancellationQueue.php",51,"assert(\\method_exists($cancellable, 'cancel'));",{"fn":176,"file":405,"line":11,"context":406},"dependencies\\react\\promise\\src\\Promise.php","assert($parent instanceof self);",{"fn":176,"file":405,"line":408,"context":391},269,{"fn":176,"file":410,"line":411,"context":412},"dependencies\\seld\\jsonlint\\src\\Seld\\JsonLint\\JsonParser.php",261,"assert(isset($symbol));",{"fn":176,"file":410,"line":414,"context":412},350,{"fn":176,"file":410,"line":416,"context":417},469,"assert(\\is_array($this->vstack[$len]));",{"fn":176,"file":410,"line":419,"context":417},484,{"fn":176,"file":410,"line":421,"context":422},486,"assert(\\is_array($this->vstack[$len-2]));",{"fn":176,"file":410,"line":424,"context":425},510,"assert($this->vstack[$len-2] instanceof stdClass);",{"fn":176,"file":410,"line":427,"context":422},549,{"fn":382,"file":429,"line":315,"context":430},"dependencies\\seld\\phar-utils\\src\\Linter.php","$process = proc_open($command, $descriptorspec, $pipes);",{"fn":432,"file":433,"line":434,"context":435},"unserialize","dependencies\\symfony\\cache\\Adapter\\ArrayAdapter.php",381,"$value = unserialize($value);",{"fn":432,"file":437,"line":300,"context":438},"dependencies\\symfony\\cache\\LockRegistry.php","self::$signalingException ?? self::$signalingException = unserialize(\"O:9:\\\"Exception\\\":1:{s:16:\\\"\\0",{"fn":432,"file":440,"line":441,"context":442},"dependencies\\symfony\\cache\\Marshaller\\DefaultMarshaller.php",82,"if (false !== $value = unserialize($value)) {",{"fn":444,"file":445,"line":446,"context":447},"shell_exec","dependencies\\symfony\\console\\Application.php",1009,"$sttyMode = shell_exec('stty -g');",{"fn":444,"file":445,"line":449,"context":450},1013,"shell_exec('stty '.$sttyMode);",{"fn":382,"file":452,"line":453,"context":454},"dependencies\\symfony\\console\\Cursor.php",189,"$isTtySupported = (bool) @proc_open('echo 1 >\u002Fdev\u002Fnull', [['file', '\u002Fdev\u002Ftty', 'r'], ['file', '\u002Fdev\u002F",{"fn":444,"file":452,"line":456,"context":447},196,{"fn":444,"file":452,"line":458,"context":459},197,"shell_exec('stty -icanon -echo');",{"fn":444,"file":452,"line":461,"context":462},203,"shell_exec(sprintf('stty %s', $sttyMode));",{"fn":444,"file":464,"line":162,"context":447},"dependencies\\symfony\\console\\Helper\\QuestionHelper.php",{"fn":444,"file":464,"line":277,"context":459},{"fn":444,"file":464,"line":467,"context":450},288,{"fn":444,"file":464,"line":469,"context":450},393,{"fn":444,"file":464,"line":471,"context":472},433,"$sExec = shell_exec('\"'.$exe.'\"');",{"fn":444,"file":464,"line":474,"context":447},445,{"fn":444,"file":464,"line":476,"context":477},446,"shell_exec('stty -echo');",{"fn":444,"file":464,"line":479,"context":450},454,{"fn":444,"file":481,"line":482,"context":483},"dependencies\\symfony\\console\\Terminal.php",74,"return self::$stty = (bool) shell_exec('stty 2> '.('\\\\' === \\DIRECTORY_SEPARATOR ? 'NUL' : '\u002Fdev\u002Fnul",{"fn":382,"file":481,"line":485,"context":486},163,"$process = proc_open($command, $descriptorspec, $pipes, null, null, ['suppress_errors' => true]);",{"fn":184,"file":488,"line":489,"context":490},"dependencies\\symfony\\process\\ExecutableFinder.php",97,"$execResult = exec('command -v -- '.escapeshellarg($name));",{"fn":382,"file":492,"line":493,"context":494},"dependencies\\symfony\\process\\Process.php",355,"$this->process = @proc_open($commandline, $descriptors, $this->processPipes->pipes, $this->cwd, $env",{"fn":382,"file":492,"line":496,"context":454},1263,{"fn":382,"file":492,"line":498,"context":499},1286,"return $result = (bool) @proc_open('echo 1 >\u002Fdev\u002Fnull', [['pty'], ['pty'], ['pty']], $pipes);",{"fn":184,"file":492,"line":501,"context":502},1526,"exec(sprintf('taskkill \u002FF \u002FT \u002FPID %d 2>&1', $pid), $output, $exitCode);",{"fn":382,"file":492,"line":504,"context":505},1539,"} elseif ($ok = proc_open(sprintf('kill -%d %d', $signal, $pid), [2 => ['pipe', 'w']], $pipes)) {",{"fn":432,"file":507,"line":315,"context":508},"dependencies\\symfony\\var-exporter\\Instantiator.php","$wrappedInstance = [unserialize('C:'.\\strlen($class).':\"'.$class.'\":0:{}')];",{"fn":432,"file":507,"line":510,"context":511},73,"$wrappedInstance = [unserialize('O:'.\\strlen($class).':\"'.$class.'\":0:{}')];",{"fn":432,"file":513,"line":514,"context":515},"dependencies\\symfony\\var-exporter\\Internal\\Registry.php",45,"$objects[$k] = unserialize($v);",{"fn":432,"file":513,"line":50,"context":517},"$proto = @unserialize($proto.\\strlen($class).':\"'.$class.'\":0:{}');",{"prepared":519,"raw":27,"locations":520},17,[],{"escaped":157,"rawEcho":522,"locations":523},6,[524,528,530,532,534,536],{"file":525,"line":526,"context":527},"dependencies\\brianhenryie\\strauss\\src\\Autoload.php",110,"raw output",{"file":525,"line":529,"context":527},116,{"file":525,"line":531,"context":527},145,{"file":525,"line":533,"context":527},157,{"file":369,"line":535,"context":527},277,{"file":537,"line":538,"context":527},"dependencies\\micropackage\\templates\\src\\Template.php",191,306,[],[542,561,569,582],{"entryPoint":543,"graph":544,"unsanitizedCount":77,"severity":560},"execute (dependencies\\composer\\composer\\src\\Composer\\Command\\SelfUpdateCommand.php:83)",{"nodes":545,"edges":557},[546,551],{"id":547,"type":548,"label":549,"file":197,"line":550},"n0","source","$_SERVER",126,{"id":552,"type":553,"label":554,"file":197,"line":555,"wp_function":556},"n1","sink","file_get_contents() [SSRF\u002FLFI]",333,"file_get_contents",[558],{"from":547,"to":552,"sanitized":559},false,"medium",{"entryPoint":562,"graph":563,"unsanitizedCount":77,"severity":560},"\u003CSelfUpdateCommand> (dependencies\\composer\\composer\\src\\Composer\\Command\\SelfUpdateCommand.php:0)",{"nodes":564,"edges":567},[565,566],{"id":547,"type":548,"label":549,"file":197,"line":550},{"id":552,"type":553,"label":554,"file":197,"line":555,"wp_function":556},[568],{"from":547,"to":552,"sanitized":559},{"entryPoint":570,"graph":571,"unsanitizedCount":77,"severity":560},"log (dependencies\\symfony\\console\\Command\\CompleteCommand.php:198)",{"nodes":572,"edges":580},[573,576],{"id":547,"type":548,"label":549,"file":574,"line":575},"dependencies\\symfony\\console\\Command\\CompleteCommand.php",204,{"id":552,"type":553,"label":577,"file":574,"line":578,"wp_function":579},"file_put_contents() [File Write]",205,"file_put_contents",[581],{"from":547,"to":552,"sanitized":559},{"entryPoint":583,"graph":584,"unsanitizedCount":77,"severity":560},"\u003CCompleteCommand> (dependencies\\symfony\\console\\Command\\CompleteCommand.php:0)",{"nodes":585,"edges":588},[586,587],{"id":547,"type":548,"label":549,"file":574,"line":575},{"id":552,"type":553,"label":577,"file":574,"line":578,"wp_function":579},[589],{"from":547,"to":552,"sanitized":559},{"summary":591,"deductions":592},"The \"notification-bbpress\" plugin, version 4.0.2, presents a mixed security profile. On the positive side, the plugin demonstrates good practices in handling SQL queries, utilizing prepared statements exclusively, which significantly mitigates SQL injection risks. The absence of known vulnerabilities in its history is also a strong indicator of past security diligence.\n\nHowever, the static analysis reveals several significant concerns. The presence of a large number of dangerous functions, including `assert`, `exec`, `system`, `proc_open`, and `shell_exec`, indicates a high potential for remote code execution if any of these functions are ever invoked with unsanitized user input. While taint analysis did not find critical or high severity flows, the fact that all four analyzed flows had unsanitized paths is a red flag. Furthermore, the plugin performs a substantial number of file operations, increasing the attack surface related to file manipulation, and the low percentage of properly escaped output leaves room for cross-site scripting vulnerabilities.\n\nIn conclusion, while the plugin has a clean vulnerability history and secure SQL practices, the presence of numerous dangerous functions and unsanitized taint flows creates a substantial latent risk. The significant number of file operations and potential for unescaped output also warrant attention. Developers should rigorously review and sanitize all user-controlled input that could potentially reach these dangerous functions or be used in file operations or output.",[593,595,597,600,602,604],{"reason":594,"points":157},"Dangerous functions (exec, system, etc.) present",{"reason":596,"points":145},"All analyzed taint flows have unsanitized paths",{"reason":598,"points":599},"Only 71% of outputs are properly escaped",5,{"reason":601,"points":599},"Substantial number of file operations",{"reason":603,"points":14},"Only one nonce check found",{"reason":605,"points":599},"No capability checks on entry points","2026-03-16T21:39:20.956Z",{"wat":608,"direct":613},{"assetPaths":609,"generatorPatterns":610,"scriptPaths":611,"versionParams":612},[],[],[],[],{"cssClasses":614,"htmlComments":615,"htmlAttributes":616,"restEndpoints":617,"jsGlobals":618,"shortcodeOutput":619},[],[],[],[],[],[]]