{"id":371612,"date":"2026-10-02T13:11:49","date_gmt":"2026-10-02T13:11:49","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/crashalert\/"},"modified":"2026-10-02T13:11:37","modified_gmt":"2026-10-02T13:11:37","slug":"crashalert","status":"publish","type":"plugin","link":"https:\/\/sa.wordpress.org\/plugins\/crashalert\/","author":23566278,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.1.5","stable_tag":"0.1.5","tested":"7.1.2","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"CrashAlert","header_author":"Yodsira","header_description":"Fatal error alerts to Telegram, email and webhook \u2014 with plain-language explanations, culprit attribution and a recovery notice. Know about a crash before your clients do.","assets_banners_color":"182029","last_updated":"2026-10-02 13:11:37","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/crashalert\/","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":62,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.1.5":{"tag":"0.1.5","author":"yodsira","date":"2026-10-02 13:11:37","revision":3724846}},"upgrade_notice":{"0.1.1":"<p>External services (Telegram Bot API, email, webhook) are now explicitly\ndocumented in the readme; privacy wording corrected. No functional changes.<\/p>","0.1.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3724914,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3724914,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3724914,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.1.5"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[1110,2679,151479,22682,9171],"plugin_category":[59],"plugin_contributors":[281339],"plugin_business_model":[],"class_list":["post-371612","plugin","type-plugin","status-publish","hentry","plugin_tags-alerts","plugin_tags-debugging","plugin_tags-error-monitoring","plugin_tags-fatal-error","plugin_tags-telegram","plugin_category-utilities-and-tools","plugin_contributors-yodsira","plugin_committers-yodsira"],"banners":{"banner":"https:\/\/ps.w.org\/crashalert\/assets\/banner-772x250.png?rev=3724914","banner_2x":"https:\/\/ps.w.org\/crashalert\/assets\/banner-1544x500.png?rev=3724914","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/crashalert\/assets\/icon-128x128.png?rev=3724914","icon_2x":false,"generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Know about a crash before your clients do.<\/p>\n\n<p>When a plugin or theme throws a fatal error, WordPress emails the site owner \u2014\nhours later, easily lost in spam, and always in cryptic PHP jargon. CrashAlert\nmakes the same information instant, readable and actionable:<\/p>\n\n<ul>\n<li><strong>Instant alerts<\/strong> to Telegram, email and a custom webhook.<\/li>\n<li><strong>Culprit attribution<\/strong> \u2014 the alert names the plugin, mu-plugin or theme\nthat owns the failing file (with its version).<\/li>\n<li><strong>Plain-language explanations<\/strong> \u2014 \"Call to undefined function\" becomes\n\"Plugin versions diverged \u2014 roll back the last update\", in English or Russian.<\/li>\n<li><strong>Recovery notice<\/strong> \u2014 a green message when the site starts responding again.<\/li>\n<li><strong>Correlation with updates<\/strong> \u2014 \"what changed in the 24 h before the crash?\"\nis answered right in the event card.<\/li>\n<li><strong>Rate-limited<\/strong> \u2014 a flood of identical errors produces one alert with a\nrepeat counter, not a hundred messages.<\/li>\n<li><strong>Failure history<\/strong> with a filterable timeline, kept for your chosen\nretention period (default 60 days) and fully removed on uninstall.<\/li>\n<li><strong>Privacy-friendly by design<\/strong> \u2014 alerts go ONLY to the channels you\nconfigure yourself (your own Telegram bot, your site's email, your own\nwebhook endpoint). Nothing is ever sent to the developer. No IPs stored,\nstack traces sanitized (relative paths, no call arguments). See the\n\"External Services\" section below.<\/li>\n<\/ul>\n\n<p>CrashAlert never limits your site: the monitor itself is guarded so it can\nnever be the cause of a white screen, and healthy requests pay a microsecond\noverhead.<\/p>\n\n<p>Looking for more? The optional CrashAlert Pro companion adds a PHP\ndeprecation radar (warnings that will become fatals in future PHP versions),\nunlimited alert channels and a weekly health report: https:\/\/yodsira.com\/en\/product\/crashalert\/<\/p>\n\n<h4>Why not just rely on the WordPress core email?<\/h4>\n\n<p>Core recovery emails go to the site owner's address, are easy to miss, contain\na raw stack trace, say nothing about repeats, and never tell you the site is\nback. CrashAlert covers exactly those gaps \u2014 and delivers to Telegram, where\nsite owners actually live.<\/p>\n\n<h3>External Services<\/h3>\n\n<p>CrashAlert sends notifications ONLY to services you configure in its own\nsettings. It never contacts yodsira.com servers and includes no telemetry.<\/p>\n\n<p>-- Telegram notifications --\n* What the service is: Telegram Bot API (api.telegram.org), used to deliver\n  instant crash alerts to your own bot and chat.\n* What data is sent and when: your site hostname, the time of the crash, the\n  error message (truncated to 200 characters), the file path, the plugin or\n  theme name and version identified as the culprit, the affected page URL and\n  a repeat counter \u2014 sent only when a fatal error is caught, or when you\n  press \"Send test to Telegram\" in the settings.\n* Opt-in: the feature is fully disabled until you enter your own bot token\n  and chat id; you can clear them at any time to switch it off.\n* Terms: https:\/\/telegram.org\/tos\n* Privacy: https:\/\/telegram.org\/privacy<\/p>\n\n<p>-- Email notifications --\n* What the service is: your own site's email system (wp_mail), used to send\n  the same alert to the address you choose (site admin by default).\n* What data is sent and when: the same alert content as above, only when an\n  alert fires. Delivery depends on the mail configuration of YOUR site.<\/p>\n\n<p>-- Custom webhook --\n* What the service is: any HTTP endpoint you paste into the plugin settings\n  (for example, your own Slack\/Discord relay or log collector).\n* What data is sent and when: a JSON payload with the same alert content,\n  only when an alert fires or when you press the webhook test button.\n* The endpoint is yours; the plugin does not provide, host or proxy this\n  service.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/<\/code>, or install the zip via\nPlugins \u2192 Add New \u2192 Upload Plugin.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Open CrashAlert \u2192 Settings, paste your Telegram bot token and chat id,\npress \"Send test\" \u2014 done. Email alerts to the admin address are on by\ndefault.<\/li>\n<\/ol>\n\n<p>There is no easier setup. Alerts are delivered through the channels you\nconfigure: your own Telegram bot (api.telegram.org), your site's own email\n(wp_mail) and, optionally, your own webhook endpoint. The plugin never sends\nanything to the developer's servers.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"will%20it%20slow%20my%20site%20down%3F\"><h3>Will it slow my site down?<\/h3><\/dt>\n<dd><p>Healthy requests do not touch the database at all \u2014 the monitor checks the\nlast PHP error in the shutdown phase and exits. Fatal handling is capped\n(sanitized stack, queue) and alerts are sent by cron, not during the request.<\/p><\/dd>\n<dt id=\"wordpress%20already%20emails%20me%20about%20fatals.%20why%20this%20plugin%3F\"><h3>WordPress already emails me about fatals. Why this plugin?<\/h3><\/dt>\n<dd><p>Speed (Telegram beats email), attribution (named plugin and version), human\nexplanations, repeat counting, recovery notices and a searchable history.\nCore emails stop at \"something died, here is a stack\".<\/p><\/dd>\n<dt id=\"will%20i%20get%20spammed%20if%20a%20loop%20throws%20500%20fatals%20a%20minute%3F\"><h3>Will I get spammed if a loop throws 500 fatals a minute?<\/h3><\/dt>\n<dd><p>No. Identical errors share one signature; one alert goes out per signature\nper rate window (default 10 minutes) and repeats are counted (\"\u00d7500\").<\/p><\/dd>\n<dt id=\"does%20it%20send%20my%20data%20anywhere%3F\"><h3>Does it send my data anywhere?<\/h3><\/dt>\n<dd><p>Only to the delivery channels YOU configure in the plugin settings: your own\nTelegram bot (requests go from your server to api.telegram.org), your site's\nown email (wp_mail) and, if you enable it, your own webhook URL. The developer\nreceives nothing. See \"External Services\" below for the exact data sent. No\nIPs are stored, stack traces are sanitized, and uninstall removes everything.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.1.5<\/h4>\n\n<ul>\n<li>Review feedback: the admin menu no longer competes with core items\n(position moved to the bottom of the menu).<\/li>\n<li>All translation strings now use the plugin text domain \"crashalert\"\n(previously mixed \"yodsira-family\" and the default domain).<\/li>\n<li>Renamed the internal components to unique prefixes (WPCRASH_<em>\/wpcrash_<\/em>)\nto prevent name collisions with other plugins; removed a stray file from\nthe package.<\/li>\n<\/ul>\n\n<h4>0.1.4<\/h4>\n\n<ul>\n<li>New: optional HTTP proxy for Telegram delivery (hosts that block Telegram).<\/li>\n<\/ul>\n\n<h4>0.1.3<\/h4>\n\n<ul>\n<li>Code hardening for the Plugin Check review: table names now use the %i identifier placeholder in every query, settings input is sanitized with map_deep(). Minimum WordPress version raised to 6.2 (introduced in 6.2).<\/li>\n<li>Removed development artifacts from the package.<\/li>\n<li>The \"site is back online\" recovery notice now actually renders after a fatal episode (the recovery was detected but never shown).<\/li>\n<\/ul>\n\n<h4>0.1.2<\/h4>\n\n<ul>\n<li>Load the shared Yodsira family components (family status endpoint).<\/li>\n<\/ul>\n\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>Documented all external services (Telegram Bot API, email, custom webhook)\nin a dedicated \"External Services\" readme section, with the exact data sent\nand links to the service terms and privacy policy.<\/li>\n<li>Corrected privacy wording in Features\/FAQ: alerts go only to channels the\nsite admin configures; the developer receives nothing.<\/li>\n<li>Telegram alert texts are now in English (same as email alerts).<\/li>\n<li>\"Upgrade to Pro\" links now point to yodsira.com.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release: fatal capture, culprit attribution, plain-language\nexplanations (RU\/EN), Telegram\/email\/webhook alerts, rate limiting,\nrecovery notices, update correlation, event timeline, retention.<\/li>\n<\/ul>","raw_excerpt":"Fatal error alerts to Telegram, email and webhook \u2014 with plain-language explanations, culprit attribution and a recovery notice.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/sa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/371612","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/sa.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/sa.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=371612"}],"author":[{"embeddable":true,"href":"https:\/\/sa.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/yodsira"}],"wp:attachment":[{"href":"https:\/\/sa.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=371612"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/sa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=371612"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/sa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=371612"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/sa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=371612"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/sa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=371612"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/sa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=371612"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}