Blog · WordPress

WordPress cron, scheduled tasks and wp-cron fixes

wp-cron isn't really cron, it's a hook that fires on visitor traffic. These posts cover why scheduled WordPress work goes late and how to put a real clock behind it.

About this topic

WordPress

2 itemsBlog

If a scheduled post went live four hours late, a WooCommerce renewal email landed Tuesday instead of Monday, or a daily backup quietly skipped a day, the prime suspect is the same: wp-cron. WordPress's built-in scheduler is a hook in wp-cron.php that fires when a page request happens to land within sixty seconds of when the task was due. That works on a high-traffic blog. It misses everywhere else, and managed hosts (Kinsta, WP Engine) plus shared hosts (Bluehost, SiteGround) usually lock you out of real crontab so you can't even paper over it locally.

The fix is small. Set DISABLE_WP_CRON in wp-config.php, point Crontap at /wp-cron.php every 5 minutes (or every 1 minute on Pro), with a per-site IANA timezone so the 5am Monday digest fires at 5am Monday in Europe/London and not whenever the first staff member opens the admin tab. Failure alerts to Slack, Discord, Telegram, email or a webhook land the moment wp-cron.php returns a 500. The posts below cover wp-cron, WooCommerce Action Scheduler, and the variants for hobbyist sites versus high-volume stores.

Blog on WordPress

2 items

Related on Crontap

The same WordPress topic, from other angles.

FAQ

Common questions on WordPress

Does Crontap replace wp-cron entirely?
It replaces the trigger, not the queue. Set define('DISABLE_WP_CRON', true) in wp-config.php to stop WordPress from firing wp-cron on page loads, then point Crontap at https://yoursite.com/wp-cron.php?doing_wp_cron=1. WordPress's event queue still runs the same way; only the visitor-tied tick is gone.
What cadence is sensible for a WordPress site?
Every 5 minutes is the safe default. For real-time imports, polling tasks, or per-minute WooCommerce work, drop to every 1 minute on Crontap Pro. Hourly is fine for content-only sites where you just need scheduled posts to publish on time.
Will this conflict with the host's built-in cron?
No. wp-cron events are idempotent, so if both Crontap and the host hit wp-cron.php in the same window, whichever lands first drains the queue and the other request finds it empty. There is no double-firing.
I'm on managed WordPress with a 15-minute floor. Can I get tighter cadence?
Yes. The 15-minute floor is the host's own crontab limit. An external HTTP scheduler doesn't care about that. Crontap can hit wp-cron.php as often as 1 minute on Pro, regardless of what the host's internal cron is doing.

More from Crontap

Topics across the site.

Every topic Crontap covers, in one row. Each one has its own page on the blog surface.

Ready to fix it?

Point Crontap at any URL. Pick any cron. Done.

WordPress, Shopify, Railway, Cloud Run, Vercel, HubSpot, Ghost, your own box. If it answers HTTP, Crontap can drive it on a clock you can read, in the timezone that actually matters, and page you when something breaks.

Free forever tier ・ No credit card required

GET

/wp-cron.php?doing_wp_cron=1

Running
Your next schedule

Schedule

"every 5 minutes"

Next

in 23s