{"id":375944,"date":"2026-09-29T05:33:17","date_gmt":"2026-09-29T05:33:17","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/queue-health-monitor\/"},"modified":"2026-09-29T05:32:50","modified_gmt":"2026-09-29T05:32:50","slug":"schedsense-fast-diagnostics-for-action-scheduler","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/schedsense-fast-diagnostics-for-action-scheduler\/","author":14232506,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.4","stable_tag":"1.0.4","tested":"7.1.2","requires":"6.8","requires_php":"7.4","requires_plugins":null,"header_name":"SchedSense: Fast Diagnostics for Action Scheduler","header_author":"Shahid Irfan","header_description":"Diagnose overdue, failed, and stuck Action Scheduler jobs, WP-Cron issues, loopback failures, and queue health.","assets_banners_color":"132a48","last_updated":"2026-09-29 05:32:50","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/shahidirfan100\/schedsense-fast-diagnostics-for-action-scheduler","header_author_uri":"https:\/\/profiles.wordpress.org\/shahidirfan100\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":53,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.4":{"tag":"1.0.4","author":"shahidirfan100","date":"2026-09-29 05:32:50","revision":3718291}},"upgrade_notice":{"1.0.4":"<p>Makes view-filter nonce checks explicit for security review and documents the canonical WordPress loopback endpoint.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3718291,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3718291,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3718291,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3718291,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.4"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3718291,"resolution":"1","location":"assets","locale":"","width":1600,"height":1380},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3718291,"resolution":"2","location":"assets","locale":"","width":1398,"height":707},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3718291,"resolution":"3","location":"assets","locale":"","width":1600,"height":1200},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3718291,"resolution":"4","location":"assets","locale":"","width":1600,"height":1200},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3718291,"resolution":"5","location":"assets","locale":"","width":1600,"height":1200}},"screenshots":{"1":"SchedSense overview with queue totals, overdue-age filters, environment checks, and the current diagnosis.","2":"Environment checks for Action Scheduler, WP-Cron, loopback, and REST API health.","3":"Bounded action list filtered by status, overdue age, exact hook, or exact group, with delete controls only for failed records.","4":"Likely source plugins ranked by sampled failed, overdue, and potentially stuck actions.","5":"Copyable diagnostic report with queue data availability and privacy details."}},"plugin_section":[],"plugin_tags":[4567,23519,4645,151481,8541],"plugin_category":[59],"plugin_contributors":[276921],"plugin_business_model":[],"class_list":["post-375944","plugin","type-plugin","status-publish","hentry","plugin_tags-cron","plugin_tags-diagnostics","plugin_tags-queue","plugin_tags-site-health","plugin_tags-troubleshooting","plugin_category-utilities-and-tools","plugin_contributors-shahidirfan100","plugin_committers-shahidirfan100"],"banners":{"banner":"https:\/\/ps.w.org\/schedsense-fast-diagnostics-for-action-scheduler\/assets\/banner-772x250.png?rev=3718291","banner_2x":"https:\/\/ps.w.org\/schedsense-fast-diagnostics-for-action-scheduler\/assets\/banner-1544x500.png?rev=3718291","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/schedsense-fast-diagnostics-for-action-scheduler\/assets\/icon-128x128.png?rev=3718291","icon_2x":"https:\/\/ps.w.org\/schedsense-fast-diagnostics-for-action-scheduler\/assets\/icon-256x256.png?rev=3718291","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/schedsense-fast-diagnostics-for-action-scheduler\/assets\/screenshot-1.png?rev=3718291","caption":"SchedSense overview with queue totals, overdue-age filters, environment checks, and the current diagnosis."},{"src":"https:\/\/ps.w.org\/schedsense-fast-diagnostics-for-action-scheduler\/assets\/screenshot-2.png?rev=3718291","caption":"Environment checks for Action Scheduler, WP-Cron, loopback, and REST API health."},{"src":"https:\/\/ps.w.org\/schedsense-fast-diagnostics-for-action-scheduler\/assets\/screenshot-3.png?rev=3718291","caption":"Bounded action list filtered by status, overdue age, exact hook, or exact group, with delete controls only for failed records."},{"src":"https:\/\/ps.w.org\/schedsense-fast-diagnostics-for-action-scheduler\/assets\/screenshot-4.png?rev=3718291","caption":"Likely source plugins ranked by sampled failed, overdue, and potentially stuck actions."},{"src":"https:\/\/ps.w.org\/schedsense-fast-diagnostics-for-action-scheduler\/assets\/screenshot-5.png?rev=3718291","caption":"Copyable diagnostic report with queue data availability and privacy details."}],"raw_content":"<!--section=description-->\n<p>SchedSense: Fast Diagnostics for Action Scheduler helps administrators investigate delayed or failing scheduled work. It reads Action Scheduler through its public APIs and reports queue totals, overdue pending actions, potentially stuck in-progress actions, failed actions, and relevant site health checks. Counts and source attribution are clearly identified as bounded samples where applicable.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>Queue totals for pending, overdue, failed, in-progress, and completed actions.<\/li>\n<li>Overdue-age buckets from one hour to seven days, with links to matching action lists.<\/li>\n<li>Flags in-progress actions with no recorded update for over one hour as potentially stuck; long callbacks can be intentional.<\/li>\n<li>Checks WP-Cron configuration, the local WordPress loopback, and the local REST API.<\/li>\n<li>Attributes registered callbacks to likely source plugins using callback file metadata; uncertain matches are labelled.<\/li>\n<li>Bounded, filterable action lists by status, age range, exact hook, and exact group. Action arguments are never displayed.<\/li>\n<li>A confirmed, per-action delete control only for actions that are still failed. Deleting an entry does not repair or retry its callback.<\/li>\n<li>A copyable support report that excludes action arguments, credentials, cookies, customer records, and complete server paths.<\/li>\n<li>No telemetry, advertising, review nags, external account, analytics, remote service, or frontend assets.<\/li>\n<\/ul>\n\n<p>Diagnostics run on the current WordPress site. The loopback check follows WordPress Site Health behavior: it posts a test marker to this site's <code>wp-cron.php<\/code>, includes the site's current login cookies and optional HTTP Basic Authentication for that same request, and honors the <code>https_local_ssl_verify<\/code> filter. The marker makes <code>wp-cron.php<\/code> finish without starting cron jobs. The REST API check also requests this site's own REST endpoint. No diagnostic data is sent to a third-party service.<\/p>\n\n<p>SchedSense does not bundle, replace, reset, retry, reschedule, or directly execute Action Scheduler actions. An authorized administrator can explicitly delete a selected failed action record after confirmation; the server checks that its status is still failed. Deleting a record does not fix or retry its callback. An administrator can also request WordPress's normal cron spawner; due callbacks may then run, including callbacks that process Action Scheduler actions.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>schedsense-fast-diagnostics-for-action-scheduler<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install the ZIP through Plugins &gt; Add New &gt; Upload Plugin.<\/li>\n<li>Activate SchedSense through the Plugins screen.<\/li>\n<li>Open Tools &gt; SchedSense.<\/li>\n<li>Select Refresh diagnostics when you want a fresh snapshot.<\/li>\n<\/ol>\n\n<p>On Multisite, SchedSense reports the current site's scheduler context. Network-wide aggregate diagnostics are not supported.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20schedsense%20require%20woocommerce%3F\"><h3>Does SchedSense require WooCommerce?<\/h3><\/dt>\n<dd><p>No. It works with Action Scheduler when a compatible plugin provides and initializes it.<\/p><\/dd>\n<dt id=\"does%20schedsense%20modify%20scheduled%20actions%3F\"><h3>Does SchedSense modify scheduled actions?<\/h3><\/dt>\n<dd><p>It can delete an individual action only when Action Scheduler reports that it is failed, and only after an administrator confirms the request. This removes the failed entry; it does not fix or retry the callback. SchedSense does not delete pending, in-progress, or completed actions, and it does not retry, reschedule, or directly execute actions. The optional cron control asks WordPress to run its normal due cron events; those events may include Action Scheduler processing.<\/p><\/dd>\n<dt id=\"does%20schedsense%20send%20data%20to%20another%20service%3F\"><h3>Does SchedSense send data to another service?<\/h3><\/dt>\n<dd><p>No. Checks and reports stay on this WordPress site. The loopback test sends its test marker and, when present, this site's login cookies or HTTP Basic Authentication only to this site's own <code>wp-cron.php<\/code> endpoint. The report is shared only if an administrator chooses to copy it.<\/p><\/dd>\n<dt id=\"why%20is%20wp-cron%20shown%20as%20disabled%3F\"><h3>Why is WP-Cron shown as disabled?<\/h3><\/dt>\n<dd><p>DISABLE_WP_CRON can be intentional on production sites using a server-level cron or WP-CLI. SchedSense reports that configuration as informational unless queue evidence suggests processing is inactive. PHP cannot prove that every external scheduler exists.<\/p><\/dd>\n<dt id=\"does%20every%20overdue%20action%20indicate%20a%20problem%3F\"><h3>Does every overdue action indicate a problem?<\/h3><\/dt>\n<dd><p>No. Normal WP-Cron depends on site traffic, and long-running callbacks can be intentional. SchedSense uses age thresholds and labels in-progress actions without an update for over one hour as potentially stuck, not as confirmed failures.<\/p><\/dd>\n<dt id=\"can%20schedsense%20fix%20a%20firewall%20or%20server%20configuration%3F\"><h3>Can SchedSense fix a firewall or server configuration?<\/h3><\/dt>\n<dd><p>No. It can report symptoms such as HTTP errors or timeouts, but it does not modify a CDN, firewall, security plugin, server configuration, <code>.htaccess<\/code>, or <code>wp-config.php<\/code>.<\/p><\/dd>\n<dt id=\"what%20appears%20in%20the%20diagnostic%20report%3F\"><h3>What appears in the diagnostic report?<\/h3><\/dt>\n<dd><p>The report contains WordPress, PHP, database, Action Scheduler, and WooCommerce versions; queue counts; check summaries; bounded source totals; and the current diagnosis. It excludes action arguments, credentials, cookies, authorization data, customer records, and complete server paths.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Make nonce verification explicit in each read-only GET filter handler.<\/li>\n<li>Document the WordPress core API used for the local wp-cron.php endpoint.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Hardened diagnostic request context and nonce-protected queue filters.<\/li>\n<li>Updated plugin identifiers and WordPress path resolution for the SchedSense brand.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Rebranded the plugin as SchedSense: Fast Diagnostics for Action Scheduler and aligned the plugin slug and text domain.<\/li>\n<li>Removed a redundant WordPress core cron include before calling the normal cron spawner.<\/li>\n<li>Updated the plugin icon, banner, and screenshots for the new name.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Added Action Scheduler queue health and overdue-age diagnostics.<\/li>\n<li>Added potentially stuck in-progress action checks.<\/li>\n<li>Added WP-Cron, loopback, and REST API diagnostics.<\/li>\n<li>Added callback source attribution and a privacy-conscious report.<\/li>\n<li>Added links from queue totals and overdue-age buckets to matching action lists.<\/li>\n<li>Added confirmed deletion for individual failed actions and clearer failure-specific guidance.<\/li>\n<\/ul>","raw_excerpt":"Fast diagnostics for Action Scheduler queues: review overdue and failed actions, likely sources, WP-Cron, loopback, and REST API health.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/375944","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=375944"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/shahidirfan100"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=375944"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=375944"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=375944"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=375944"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=375944"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=375944"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}