Guide
What happens when WordPress cron stops
WordPress relies on a pseudo-cron system (wp-cron.php) that triggers scheduled tasks on page load. When traffic is low or the system is misconfigured, these tasks simply don’t run. There’s no error. No warning. No log entry saying “cron has stopped.”
The consequences accumulate silently:
- Scheduled posts stay in draft. Content meant to publish at a specific time never goes live.
- Plugin updates don’t check. Security patches sit unnoticed.
- Transient cleanup stops. The
wp_optionstable grows until the database slows down. - Email queues stall. Messages queue up but never send.
- Backup plugins stop backing up. You find out when you need a restore.
Why WordPress cron not running is so hard to detect
The site still loads. Pages render normally. Uptime monitors report 100%. There is no built-in mechanism in WordPress to alert you when cron stops executing.
This is why WordPress cron not running is one of the most common silent failures in production WordPress sites. It doesn’t break the site - it breaks everything the site does in the background.
Common causes:
DISABLE_WP_CRONset totruewithout a system cron replacement- Server migration where the cron job was not migrated
- Managed hosting that silently disables
wp-cron.php - Low-traffic sites where no page loads trigger the pseudo-cron
- Security plugins blocking
wp-cron.phprequests
How to check if WordPress cron is running
There are several ways to check, from manual to automated:
1. Check manually with WP-CLI
wp cron event list
If the “Next Run” timestamps are all in the past, cron is not executing. But this only tells you the current state - not when it stopped or why.
2. Check the database directly
SELECT option_value FROM wp_options WHERE option_name = 'cron';
This shows all scheduled events and their timestamps. Overdue events are a strong indicator that WordPress cron is not running.
3. Monitor cron execution as a metric
The most reliable approach: track every cron execution as a log event, derive a metric from it, and alert when the metric goes to zero. This is what Logystera does.
Detecting WordPress cron not running - automatically
Instead of manually checking WP-CLI or scanning database tables, Logystera’s WordPress plugin captures every cron execution as a structured log event. The processor derives metrics from these events: total runs, execution duration, which hooks fired, and which didn’t.
A rule monitors the time since the last successful cron execution. If WordPress cron has not run in 24 hours, you get an alert - with the exact timestamp of the last execution and which hooks were expected.
What Logystera tracks for WordPress cron:
- Total cron runs per day, per site
- Average execution time - spikes indicate resource strain
- Which hooks executed and which were skipped
- Time since last successful execution
- Alerts when cron stops - before anything visibly breaks
Real example: 422 days without cron
A managed WordPress site was migrated to new infrastructure. The migration disabled wp-cron.php and added DISABLE_WP_CRON to wp-config.php, expecting a system cron to replace it. The system cron was never configured.
For 422 days, scheduled posts stayed in draft. Plugin update checks never ran. The wp_options table grew to 1.8 GB from accumulated transients. The site loaded fine. Uptime was 99.99%.
With Logystera, this would have been detected within 24 hours of the migration.
How to fix WordPress cron not running
Option 1: Use a real system cron
Add this to your server’s crontab:
*/5 * * * * wget -q -O /dev/null https://yoursite.com/wp-cron.php?doing_wp_cron
And add this to wp-config.php:
define('DISABLE_WP_CRON', true);
Option 2: Use an external cron service
Services like cron-job.org or EasyCron can ping your wp-cron.php on a schedule. This is useful for shared hosting where you don’t have crontab access.
Option 3: Monitor it (the real fix)
Fixing cron once doesn’t prevent it from breaking again. The next migration, the next plugin update, the next hosting change can silently disable it. The only reliable solution is continuous monitoring of cron execution - which is what Logystera provides out of the box.
Your logs already know
WordPress cron not running is one of the most common and most damaging silent failures in WordPress. It doesn’t produce errors. It doesn’t show warnings. It just quietly stops doing the work your site depends on.
The information is already in your logs. The question is whether anyone is reading them.
Logystera doesn’t guess. It derives truth from logs.
Related Logystera content
WordPress Emails Not Sending
Cron stops, mail queues stall — the failure modes are linked.
Uptime vs Health
Why uptime green doesn't mean cron is running.
WordPress Log Monitoring
The full framework: cron is one signal of many.
Drupal Cron Not Running
Same problem shape on Drupal.
Silent PHP Errors
A failed cron hook is often a silent fatal.
Frequently asked questions
How often should WordPress cron run?
WordPress cron is event-driven, not interval-driven — it runs whenever someone visits the site, then dispatches whatever scheduled events are due. On a low-traffic site this means cron may go hours without running. The fix is a real system cron pinging wp-cron.php every 5 minutes regardless of traffic.
Why does DISABLE_WP_CRON exist?
It exists so you can replace the pseudo-cron (which depends on visitor traffic) with a real cron job that runs predictably. The constant only disables the trigger on every request — you still need to call wp-cron.php yourself, typically via a server-side cron job or external pinger.
Can I just install a cron-monitoring plugin?
Plugins like WP Crontrol show you cron state in the admin, which is useful for inspection. They don't alert when cron silently stops — for that you need an external monitoring system that reads cron events as a metric and watches for the metric going to zero.
How do I run wp cron event run --due-now in production?
You can wire it into a system cron: */5 * * * * /usr/local/bin/wp --path=/var/www/html cron event run --due-now. This skips the HTTP overhead of pinging wp-cron.php and runs cron events directly via WP-CLI. It's the fastest, most reliable approach if you have shell access.
See what's actually happening in your WordPress system
Connect your site. Logystera starts monitoring within minutes.