{"id":280999,"date":"2026-06-02T00:15:18","date_gmt":"2026-06-02T00:15:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/cron-guard\/"},"modified":"2026-06-02T15:12:49","modified_gmt":"2026-06-02T15:12:49","slug":"cron-guard","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/cron-guard\/","author":17939705,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.6","stable_tag":"1.0.6","tested":"7.0","requires":"5.0","requires_php":"7.4","requires_plugins":null,"header_name":"Cron Guard","header_author":"ChilliChalli","header_description":"Monitor WP Cron health, detect stalled or missed cron jobs, and get actionable guidance to fix issues.","assets_banners_color":"0f1a2d","last_updated":"2026-06-02 15:12:49","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/cron-guard\/","header_author_uri":"https:\/\/github.com\/cdgraham","rating":0,"author_block_rating":0,"active_installs":0,"downloads":61,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.5":{"tag":"1.0.5","author":"chillichalli","date":"2026-06-02 00:14:47"},"1.0.6":{"tag":"1.0.6","author":"chillichalli","date":"2026-06-02 15:12:49"}},"upgrade_notice":{"1.0.6":"<p>Confirmed compatible with WordPress 7.0, plus clearer timezone display across all screens and alerts.<\/p>","1.0.0":"<p>Initial release of Cron Guard.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3557349,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3557349,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3557349,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3557349,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.5","1.0.6"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3557349,"resolution":"1","location":"assets","locale":"","width":2560,"height":2732},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3557349,"resolution":"2","location":"assets","locale":"","width":2560,"height":3562},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3557349,"resolution":"3","location":"assets","locale":"","width":2560,"height":4316},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3557349,"resolution":"4","location":"assets","locale":"","width":2560,"height":3484},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3557349,"resolution":"5","location":"assets","locale":"","width":2560,"height":4080}},"screenshots":{"1":"Dashboard - Overall cron health status and quick stats","2":"Scheduled Events - Complete list of all cron events with status indicators","3":"Fix Assistant - Host-specific setup instructions","4":"Logs - Filterable log viewer with event details","5":"Settings - Configuration options and premium features"}},"plugin_section":[],"plugin_tags":[4567,17727,5603,255120,4568],"plugin_category":[54,59],"plugin_contributors":[185845],"plugin_business_model":[],"class_list":["post-280999","plugin","type-plugin","status-publish","hentry","plugin_tags-cron","plugin_tags-cron-jobs","plugin_tags-monitoring","plugin_tags-scheduled-tasks","plugin_tags-wp-cron","plugin_category-security-and-spam-protection","plugin_category-utilities-and-tools","plugin_contributors-chillichalli","plugin_committers-chillichalli"],"banners":{"banner":"https:\/\/ps.w.org\/cron-guard\/assets\/banner-772x250.png?rev=3557349","banner_2x":"https:\/\/ps.w.org\/cron-guard\/assets\/banner-1544x500.png?rev=3557349","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/cron-guard\/assets\/icon-128x128.png?rev=3557349","icon_2x":"https:\/\/ps.w.org\/cron-guard\/assets\/icon-256x256.png?rev=3557349","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/cron-guard\/assets\/screenshot-1.png?rev=3557349","caption":"Dashboard - Overall cron health status and quick stats"},{"src":"https:\/\/ps.w.org\/cron-guard\/assets\/screenshot-2.png?rev=3557349","caption":"Scheduled Events - Complete list of all cron events with status indicators"},{"src":"https:\/\/ps.w.org\/cron-guard\/assets\/screenshot-3.png?rev=3557349","caption":"Fix Assistant - Host-specific setup instructions"},{"src":"https:\/\/ps.w.org\/cron-guard\/assets\/screenshot-4.png?rev=3557349","caption":"Logs - Filterable log viewer with event details"},{"src":"https:\/\/ps.w.org\/cron-guard\/assets\/screenshot-5.png?rev=3557349","caption":"Settings - Configuration options and premium features"}],"raw_content":"<!--section=description-->\n<p>Cron Guard is a comprehensive monitoring solution for WordPress cron jobs. It helps you detect when cron jobs are failing, identify stalled or missed scheduled tasks, and provides host-specific instructions to fix common issues.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li><strong>Health Monitoring<\/strong> - Detect if WP Cron has executed within a configurable time threshold<\/li>\n<li><strong>Scheduled Events List<\/strong> - View all scheduled cron hooks with last run time, next run time, and interval<\/li>\n<li><strong>Overdue Detection<\/strong> - Flag overdue or stalled hooks with clear visual indicators<\/li>\n<li><strong>Rolling Log<\/strong> - Lightweight logging of cron execution events<\/li>\n<li><strong>Admin Dashboard<\/strong> - Clear, non-technical UI showing overall health status and detailed hook information<\/li>\n<li><strong>Fix Assistant<\/strong> - Host-specific instructions for setting up real cron jobs<\/li>\n<li><strong>Admin Bar Indicator<\/strong> - Quick status indicator in the WordPress admin bar<\/li>\n<\/ul>\n\n<h4>Premium Features<\/h4>\n\n<ul>\n<li><strong>Email Alerts<\/strong> - Receive notifications when cron is stalled or repeatedly missing schedules<\/li>\n<li><strong>Webhook Alerts<\/strong> - Send alerts to any webhook endpoint<\/li>\n<li><strong>Slack Integration<\/strong> - Formatted Slack notifications with action buttons<\/li>\n<li><strong>Discord Integration<\/strong> - Formatted Discord notifications with embeds<\/li>\n<li><strong>Verification System<\/strong> - Test and confirm real cron execution<\/li>\n<li><strong>Advanced Diagnostics<\/strong> - Deep system analysis and troubleshooting<\/li>\n<\/ul>\n\n<h4>Why You Need This<\/h4>\n\n<p>WordPress relies on WP-Cron for critical tasks like:<\/p>\n\n<ul>\n<li>Publishing scheduled posts<\/li>\n<li>Sending emails<\/li>\n<li>Running backups<\/li>\n<li>Processing orders (WooCommerce)<\/li>\n<li>Updating plugins and themes<\/li>\n<\/ul>\n\n<p>When WP-Cron fails silently, these tasks stop working. Cron Guard gives you visibility into your cron health and alerts you before problems become critical.<\/p>\n\n<h4>Supported Hosts<\/h4>\n\n<p>The Fix Assistant provides specific setup instructions for:<\/p>\n\n<ul>\n<li>WP Engine<\/li>\n<li>Kinsta<\/li>\n<li>SiteGround<\/li>\n<li>Bluehost<\/li>\n<li>GoDaddy<\/li>\n<li>DreamHost<\/li>\n<li>Cloudways<\/li>\n<li>Flywheel<\/li>\n<li>Pantheon<\/li>\n<li>Pressable<\/li>\n<li>cPanel hosts<\/li>\n<li>Plesk hosts<\/li>\n<li>Generic VPS\/Dedicated servers<\/li>\n<\/ul>\n\n<h3>External Services<\/h3>\n\n<p>This plugin optionally connects to the following third-party services when configured by the user:<\/p>\n\n<h4>Slack API<\/h4>\n\n<p>When Slack alerts are enabled, the plugin sends notification messages to a user-configured Slack Incoming Webhook URL. Data sent includes: site name, site URL, cron health status, and alert details. No personal data is transmitted. Slack is operated by Salesforce, Inc.<\/p>\n\n<ul>\n<li><a href=\"https:\/\/api.slack.com\/messaging\/webhooks\">Slack API documentation<\/a><\/li>\n<li><a href=\"https:\/\/slack.com\/trust\/privacy\/privacy-policy\">Slack Privacy Policy<\/a><\/li>\n<\/ul>\n\n<h4>Discord API<\/h4>\n\n<p>When Discord alerts are enabled, the plugin sends notification messages to a user-configured Discord Webhook URL. Data sent includes: site name, site URL, cron health status, and alert details. No personal data is transmitted.<\/p>\n\n<ul>\n<li><a href=\"https:\/\/discord.com\/developers\/docs\/resources\/webhook\">Discord Developer documentation<\/a><\/li>\n<li><a href=\"https:\/\/discord.com\/privacy\">Discord Privacy Policy<\/a><\/li>\n<\/ul>\n\n<h4>Generic Webhooks<\/h4>\n\n<p>When webhook alerts are enabled, the plugin sends a JSON POST request to any user-configured URL. Data sent includes: site name, site URL, cron health status, and alert details. The webhook URL is entirely user-controlled.<\/p>\n\n<h4>Freemius SDK<\/h4>\n\n<p>This plugin uses the Freemius SDK for optional usage analytics and future licensing. No data is collected unless the user opts in during activation. Freemius is operated by Freemius, Inc.<\/p>\n\n<ul>\n<li><a href=\"https:\/\/freemius.com\/privacy\/\">Freemius Privacy Policy<\/a><\/li>\n<li><a href=\"https:\/\/freemius.com\/terms\/\">Freemius Terms of Service<\/a><\/li>\n<\/ul>\n\n<h4>External Cron Services (Referenced Only)<\/h4>\n\n<p>The Fix Assistant page references third-party cron services (EasyCron, cron-job.org, UptimeRobot) as alternatives for setting up server-side cron. The plugin does not connect to or transmit data to these services. Users who choose to use these services do so independently.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>cron-guard<\/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>Navigate to <strong>Cron Guard<\/strong> in the admin menu to view your cron health<\/li>\n<\/ol>\n\n<h4>Setting Up Real Cron (Recommended)<\/h4>\n\n<p>For best reliability, disable WordPress's built-in cron and use a real server cron job:<\/p>\n\n<ol>\n<li><p>Add to your <code>wp-config.php<\/code>:<\/p>\n\n<p>define('DISABLE_WP_CRON', true);<\/p><\/li>\n<li><p>Set up a server cron job (every 5 minutes recommended):<\/p>\n\n<p>*\/5 * * * * wget -q -O \/dev\/null \"https:\/\/yoursite.com\/wp-cron.php\" &gt;\/dev\/null 2&gt;&amp;1<\/p><\/li>\n<\/ol>\n\n<p>The <strong>Fix Assistant<\/strong> page provides detailed, host-specific instructions for your hosting environment.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20is%20wp-cron%3F\"><h3>What is WP-Cron?<\/h3><\/dt>\n<dd><p>WP-Cron is WordPress's built-in task scheduler. Unlike a real server cron, WP-Cron only runs when someone visits your site. This means on low-traffic sites, scheduled tasks may be delayed or missed entirely.<\/p><\/dd>\n<dt id=\"why%20are%20my%20cron%20jobs%20not%20running%3F\"><h3>Why are my cron jobs not running?<\/h3><\/dt>\n<dd><p>Common causes include:<\/p>\n\n<ul>\n<li>Low site traffic (WP-Cron needs page visits to trigger)<\/li>\n<li>DISABLE_WP_CRON is set but no real cron is configured<\/li>\n<li>Hosting blocking loopback requests<\/li>\n<li>Server resource limits<\/li>\n<li>Plugin conflicts<\/li>\n<li>SSL certificate issues<\/li>\n<\/ul>\n\n<p>Use the Fix Assistant to diagnose your specific issue.<\/p><\/dd>\n<dt id=\"how%20do%20i%20set%20up%20a%20real%20cron%20job%3F\"><h3>How do I set up a real cron job?<\/h3><\/dt>\n<dd><p>The Fix Assistant provides step-by-step instructions for your specific hosting provider. Generally, you need to:<\/p>\n\n<ol>\n<li>Add <code>define('DISABLE_WP_CRON', true);<\/code> to wp-config.php<\/li>\n<li>Set up a server cron job to hit wp-cron.php every 5 minutes<\/li>\n<\/ol><\/dd>\n<dt id=\"what%27s%20the%20difference%20between%20warning%20and%20critical%20status%3F\"><h3>What's the difference between Warning and Critical status?<\/h3><\/dt>\n<dd><ul>\n<li><strong>Warning<\/strong> - Cron hasn't run within your configured threshold (default: 15 minutes)<\/li>\n<li><strong>Critical<\/strong> - Cron hasn't run for more than double your threshold (default: 30 minutes)<\/li>\n<\/ul><\/dd>\n<dt id=\"can%20i%20use%20external%20cron%20services%3F\"><h3>Can I use external cron services?<\/h3><\/dt>\n<dd><p>Yes! If your host doesn't support real cron, you can use external services like:<\/p>\n\n<ul>\n<li>EasyCron<\/li>\n<li>cron-job.org<\/li>\n<li>UptimeRobot<\/li>\n<\/ul>\n\n<p>The Fix Assistant includes setup instructions for these services.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20slow%20down%20my%20site%3F\"><h3>Does this plugin slow down my site?<\/h3><\/dt>\n<dd><p>No. Cron Guard is designed to be lightweight:<\/p>\n\n<ul>\n<li>Logs are stored in WordPress options (no custom database tables)<\/li>\n<li>Rolling log with maximum 500 entries<\/li>\n<li>Automatic cleanup of old logs<\/li>\n<li>Cron profiling only runs during cron execution<\/li>\n<\/ul><\/dd>\n<dt id=\"how%20is%20this%20different%20from%20wp%20crontrol%3F\"><h3>How is this different from WP Crontrol?<\/h3><\/dt>\n<dd><p>They solve different problems and work well side by side. WP Crontrol is a cron <em>management<\/em> tool for editing, adding, deleting, pausing, and manually running individual cron events. Cron Guard is a cron <em>monitoring and alerting<\/em> tool that watches your cron health and tells you the moment something breaks.<\/p>\n\n<p>Cron Guard focuses on things WP Crontrol does not do:<\/p>\n\n<ul>\n<li>Proactive alerts (email, webhook, Slack, Discord) when cron stalls or repeatedly misses its schedule<\/li>\n<li>A historical rolling log of cron execution events<\/li>\n<li>A plain-language health dashboard with Warning\/Critical status, built for site owners and agency clients rather than developers<\/li>\n<li>An in-dashboard Fix Assistant with host-specific instructions for setting up real cron<\/li>\n<li>Verification that real server cron is actually executing<\/li>\n<\/ul>\n\n<p>If you need to hand-edit, pause, or create individual cron events, WP Crontrol is the right tool. If you need to know when cron fails and how to fix it, that's Cron Guard. Many sites happily run both.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>Confirmed compatible with WordPress 7.0 (tested on WP 7.0 \/ PHP 8.2).<\/li>\n<li>Timezone clarity: every displayed time now shows the site's timezone, with an \"All times shown in \u2026\" note on the Dashboard, Scheduled Events, and Logs screens.<\/li>\n<li>Times are now formatted with <code>wp_date()<\/code> for correct, DST-aware display of named timezones; alert emails and Slack\/Discord notifications now include the timezone too.<\/li>\n<li>Added a \"How is this different from WP Crontrol?\" FAQ entry.<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>WordPress.org compliance: restructure premium-only code so the Freemius deploy script physically strips it from the free build (suffixed <code>__premium_only<\/code> methods and <code>__premium_only.php<\/code> files).<\/li>\n<li>Free build no longer contains the license\/plan class, the premium settings UI, the verification flow, or the alert\/webhook\/Slack\/Discord implementations.<\/li>\n<li>Removed the upgrade CTA from the Settings page.<\/li>\n<li>Bumped Freemius SDK to 2.13.1.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>Core health monitoring functionality<\/li>\n<li>Admin dashboard with status indicators<\/li>\n<li>Scheduled events list with performance metrics<\/li>\n<li>Rolling event log with filtering<\/li>\n<li>Fix Assistant with host-specific instructions<\/li>\n<li>Email alerts (Premium)<\/li>\n<li>Webhook alerts (Premium)<\/li>\n<li>Slack integration (Premium)<\/li>\n<li>Discord integration (Premium)<\/li>\n<li>Verification system (Premium)<\/li>\n<\/ul>","raw_excerpt":"Monitor WP Cron health, detect stalled or missed cron jobs, and get actionable guidance to fix issues.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/280999","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=280999"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/chillichalli"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=280999"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=280999"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=280999"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=280999"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=280999"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=280999"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}