Skip to content

wp_cron_overdue

Severity: Warning Signal: wp.cronpayload.type = overdue_jobs

What this signal means

WordPress has background cron jobs that were due to run but haven't executed yet. Overdue jobs accumulate when WP-Cron is not firing reliably.

What surprise this prevents

Background features silently stopping — emails not sending, orders not processing, transients not clearing — while the site appears to be working normally.

Why it matters

WordPress cron jobs handle essential background work: sending emails, processing WooCommerce orders, publishing scheduled posts, cleaning up expired transients, and running plugin tasks. Stuck cron queues cause silent failures across many features.

Investigate

View entity alerts in Logystera →

Check:

  • payload.overdue_count — how many jobs are stuck?
  • How long has this been happening? Check alert history.
  • Correlate with wp_missed_scheduled_post — related cron issues often appear together.

In WordPress admin, install WP Crontrol (wp-cron-control) to see all scheduled events and which are overdue.

  1. Run due cron jobs immediately via WP-CLI: bash wp cron run --due-now

  2. Check whether cron is being triggered. WP-Cron runs when visitors load pages. On low-traffic sites or maintenance pages, there may be no traffic to trigger it.

Add a real cron job that calls WordPress cron directly: bash # crontab -e * * * * * php /var/www/html/wp-cron.php # or via curl: * * * * * curl -s https://yoursite.com/wp-cron.php?doing_wp_cron > /dev/null

  1. Check for DISABLE_WP_CRON. If cron is disabled and no external trigger is configured, all jobs queue up indefinitely.

  2. Check for slow cron jobs blocking the queue. One long-running cron job can prevent others from running during the same cycle. Use WP Crontrol to check recent execution times.

  3. Look for errors in cron runs — check cron.run signals in Logystera for had_error: true around the same time period.

When to safely ignore

A small number of overdue jobs (1–2) on a low-traffic site is normal WP-Cron behavior. WP-Cron fires on page load, so periods without traffic mean cron doesn't run.

If payload.overdue_count is consistently growing rather than clearing, that indicates a structural problem with how cron is triggered and requires attention.

Signal reference

{
  "event_type": "wp.cron",
  "payload": {
    "type": "overdue_jobs",
    "overdue_count": 12
  }
}