{"id":249923,"date":"2025-09-04T09:20:54","date_gmt":"2025-09-04T09:20:54","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/wonderful-webhook-alerts\/"},"modified":"2026-08-04T14:43:45","modified_gmt":"2026-08-04T14:43:45","slug":"wonderful-webhook-alerts","status":"publish","type":"plugin","link":"https:\/\/sk.wordpress.org\/plugins\/wonderful-webhook-alerts\/","author":23357214,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.2.0","stable_tag":"1.2.0","tested":"7.0.2","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"Wonderful Webhook Alerts","header_author":"Wonderful Plugins","header_description":"Sends PHP fatal errors automatically to a specified webhook URL (e.g., Slack, Discord).","assets_banners_color":"","last_updated":"2026-08-04 14:43:45","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wonderfulplugins.eu\/wonderful-webhook-alerts","header_author_uri":"https:\/\/wonderfulplugins.eu","rating":0,"author_block_rating":0,"active_installs":60,"downloads":817,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"wonderfulplugins","date":"2025-12-03 08:34:30"},"1.1.0":{"tag":"1.1.0","author":"wonderfulplugins","date":"2026-06-29 10:25:37"},"1.1.1":{"tag":"1.1.1","author":"wonderfulplugins","date":"2026-06-30 14:04:52"},"1.2.0":{"tag":"1.2.0","author":"wonderfulplugins","date":"2026-08-04 14:43:45"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3355927,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3355927,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.1.0","1.1.1","1.2.0"],"block_files":[],"assets_screenshots":{"screenshot-1-de.jpg":{"filename":"screenshot-1-de.jpg","revision":3589869,"resolution":"1","location":"assets","locale":"de","width":2302,"height":910},"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":3589869,"resolution":"1","location":"assets","locale":"","width":2304,"height":804}},"screenshots":{"1":"The simple settings page to configure your webhook URL."}},"plugin_section":[],"plugin_tags":[94,22682,5603,1159,15439],"plugin_category":[54,59],"plugin_contributors":[247385],"plugin_business_model":[],"class_list":["post-249923","plugin","type-plugin","status-publish","hentry","plugin_tags-debug","plugin_tags-fatal-error","plugin_tags-monitoring","plugin_tags-notification","plugin_tags-webhook","plugin_category-security-and-spam-protection","plugin_category-utilities-and-tools","plugin_contributors-wonderfulplugins","plugin_committers-wonderfulplugins"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/wonderful-webhook-alerts\/assets\/icon-128x128.png?rev=3355927","icon_2x":"https:\/\/ps.w.org\/wonderful-webhook-alerts\/assets\/icon-256x256.png?rev=3355927","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/wonderful-webhook-alerts\/assets\/screenshot-1.jpg?rev=3589869","caption":"The simple settings page to configure your webhook URL."}],"raw_content":"<!--section=description-->\n<p>This plugin provides a simple but powerful function for developers and site administrators. It automatically captures critical PHP errors (fatal errors, parse errors, etc.) that would otherwise take your site down silently.<\/p>\n\n<p>Instead of having to check server logs, you receive an instant notification via a webhook to a service of your choice, like <strong>Slack<\/strong> or <strong>Discord<\/strong>. This allows for immediate action and faster debugging.<\/p>\n\n<p>The setup is minimal: just add your webhook URL on the settings page, and the plugin takes care of the rest.<\/p>\n\n<h3>External services<\/h3>\n\n<p>The plugin has no service of its own. It sends data only to the webhook URL you enter on its settings page \u2014 Slack, Discord, n8n or whatever you choose \u2014 and contacts nothing else. The terms and privacy policy of the service you point it at apply.<\/p>\n\n<p>Nothing is sent until you save a URL. After that:<\/p>\n\n<ol>\n<li>The \"Send test message\" button sends a fixed message plus your site address.<\/li>\n<li>A PHP fatal error sends: site address, error type, file, line, message, the method and path of the crashed request, and peak memory against the configured limit.<\/li>\n<\/ol>\n\n<p>No visitor data is included \u2014 no IP addresses, cookies, form contents or accounts. The crashed request's path does travel along, so a query string holding personal data would be included.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>wonderful-webhook-alerts<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory.<\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress.<\/li>\n<li>Go to <strong>Settings &gt; Webhook Alerts<\/strong> in your admin dashboard.<\/li>\n<li>Enter your webhook URL and save the settings.<\/li>\n<li>Use the <strong>Send test message<\/strong> button to verify the connection. That's it!<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20is%20a%20webhook%20url%3F\"><h3>What is a webhook URL?<\/h3><\/dt>\n<dd><p>A webhook URL is a special web address provided by services like Slack, Discord, or Zapier. When your WordPress site sends a message to this URL, the service receives it and can post it, for example, in a specific chat channel. You can get this URL from the settings of your chosen service.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20affect%20my%20site%27s%20performance%3F\"><h3>Does this plugin affect my site's performance?<\/h3><\/dt>\n<dd><p>It reads its settings once per request and holds back half a megabyte of memory, so it can still report if the request runs out. Beyond that it does nothing until a fatal error happens.<\/p><\/dd>\n<dt id=\"which%20error%20types%20are%20reported%3F\"><h3>Which error types are reported?<\/h3><\/dt>\n<dd><p>The plugin reports <code>E_ERROR<\/code>, <code>E_PARSE<\/code>, <code>E_CORE_ERROR<\/code>, <code>E_COMPILE_ERROR<\/code>, <code>E_USER_ERROR<\/code>, and <code>E_RECOVERABLE_ERROR<\/code> \u2014 the same set WordPress itself treats as fatal.<\/p><\/dd>\n<dt id=\"does%20it%20also%20report%20%22allowed%20memory%20size%20exhausted%22%3F\"><h3>Does it also report \"Allowed memory size exhausted\"?<\/h3><\/dt>\n<dd><p>Yes, labelled separately. On an out-of-memory crash the file and line PHP reports are wherever the last allocation landed, not the cause \u2014 so the notification also carries peak memory, the configured limit and the crashed request.<\/p><\/dd>\n<dt id=\"the%20same%20error%20keeps%20happening.%20will%20i%20get%20flooded%3F\"><h3>The same error keeps happening. Will I get flooded?<\/h3><\/dt>\n<dd><p>No. An identical error \u2014 same message, file and line \u2014 is reported at most once every five minutes, so a fault that hits many requests at once still produces one notification.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20add%20a%20file%20to%20wp-content%3F\"><h3>Does the plugin add a file to wp-content?<\/h3><\/dt>\n<dd><p>Yes: <code>wp-content\/fatal-error-handler.php<\/code>, WordPress' official drop-in. It has to run first \u2014 WordPress registers its own shutdown handler before plugins load, and by then the error can already have been replaced by a later one.<\/p>\n\n<p>If another plugin already owns that file, it stays untouched and the settings page says so. Alerts keep working either way. The file is removed when you deactivate or delete the plugin.<\/p><\/dd>\n<dt id=\"can%20i%20intercept%20the%20notification%3F\"><h3>Can I intercept the notification?<\/h3><\/dt>\n<dd><p>Yes. The filter <code>wonderful_webhook_alerts_pre_crash_dispatch<\/code> receives <code>( null, $url, $body )<\/code> and replaces the built-in transport when it returns anything but null.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Memory exhaustion is now reported: a small reserve is held back and the limit raised before sending, so a request with nothing left still gets a notification out.<\/li>\n<li>Notifications carry the crashed request and peak memory against the limit, and label memory exhaustion separately from a code defect.<\/li>\n<li><code>E_USER_ERROR<\/code> and <code>E_RECOVERABLE_ERROR<\/code> are reported too \u2014 the set WordPress itself treats as fatal.<\/li>\n<li>Identical errors are throttled to one notification per five minutes.<\/li>\n<li>Installs WordPress' fatal error handler drop-in, so the error is read before anything can overwrite it. An existing drop-in is never overwritten.<\/li>\n<li>New filter <code>wonderful_webhook_alerts_pre_crash_dispatch<\/code>.<\/li>\n<li>Full plugin prefix on the transient and error codes, per the WordPress.org review guidelines.<\/li>\n<li>Uninstall removes the drop-in and the throttling markers.<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Tested up to WordPress 7.0.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Enable\/disable switch to turn fatal error alerts on or off without deactivating the plugin.<\/li>\n<li>\"Send test message\" button to verify the webhook connection from the settings page.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Get real-time notifications for PHP fatal errors sent to your webhook (Slack, Discord, etc.). Never miss a critical site issue again.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/sk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/249923","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/sk.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/sk.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=249923"}],"author":[{"embeddable":true,"href":"https:\/\/sk.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/wonderfulplugins"}],"wp:attachment":[{"href":"https:\/\/sk.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=249923"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/sk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=249923"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/sk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=249923"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/sk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=249923"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/sk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=249923"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/sk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=249923"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}