WordPress · WP-Cron

Monitor WordPress WP-Cron Events

WP-Cron is pseudo-cron — by default it only checks for due events on an actual page load, so a low-traffic site, or one behind aggressive page caching, can silently miss scheduled events for hours or days.

Setup

1

Create an incoming monitor

Add a heartbeat monitor in Pingtastic matching the event's expected frequency.

2

Ping inside the hooked function

Add the ping call after the scheduled event's real work completes.

add_action( 'my_nightly_sync_event', function () {
    // ...existing event logic...

    wp_remote_get( 'https://ping.pingtastic.net/ping/nightly-sync' );
} );
3

Switch to real system cron (strongly recommended)

Disable WP-Cron's page-load trigger and call wp-cron.php from a real cron entry instead — see the gotcha below.

Gotchas

  • ⚠By default, WP-Cron only checks for due events on an actual page load — a low-traffic, cached, or CDN-fronted site can go hours or days without WP-Cron firing. Add define('DISABLE_WP_CRON', true); to wp-config.php and trigger wp-cron.php from real system cron every few minutes instead — the single biggest reliability improvement available.
  • ⚠A plugin conflict or a fatal error in an unrelated scheduled hook can prevent WP-Cron from processing the rest of the queue for that run — a missed ping tells you your event didn't fire, not necessarily why.

Questions

Why would WP-Cron just stop firing?

The most common reason is low or cached traffic — WP-Cron's default trigger is a visitor's page load. Switching to real system cron (see the gotcha above) removes this failure mode entirely.

Does this work with WP-Cron management plugins?

Yes — the ping just needs to happen inside the hooked function for your scheduled event, regardless of what triggers WP-Cron to check for due events.

Start monitoring your WordPress wp-cron

Set up your first monitor in under five minutes.

Get started — $5/month