Fix WordPress cron jobs
once and for all.
WP-Cron only fires when someone visits your site. On low-traffic pages that means scheduled posts, emails, and WooCommerce tasks run late or not at all. Cronengine replaces it with a real, time-based scheduler that fires on a fixed interval regardless of traffic.
5 free jobs · No credit card · Setup in 5 minutes
The problem
Why WP-Cron is unreliable
WordPress ships with a built-in pseudo-cron system called WP-Cron. It sounds convenient, but the way it works causes real problems in production.
Traffic-dependent
WP-Cron hooks into page loads. If nobody visits your site at the scheduled time, the task simply does not run. Low-traffic sites are especially vulnerable.
Imprecise timing
Even on busy sites, WP-Cron does not guarantee exact timing. Tasks scheduled for 09:00 might fire at 09:07 or 09:23 depending on when the next page request happens to arrive.
Slows down page loads
When WP-Cron fires, it adds processing overhead to the request that triggered it. Visitors occasionally experience a slower page load because a background task hitched a ride on their request.
No visibility
WordPress gives you no dashboard to see when tasks ran, whether they succeeded, or how long they took. Diagnosing a missed scheduled post is a guessing game.
Duplicate task runs
On high-traffic sites the opposite problem occurs: multiple concurrent requests can trigger the same scheduled task more than once, leading to duplicate emails, double-processing, or worse.
Hard to debug
When something breaks in a WP-Cron task, the failure is invisible. There is no error log tied to individual runs, no HTTP response to inspect, and no way to replay or retry.
The solution
How to replace WP-Cron with Cronengine
The standard approach is to disable the built-in WP-Cron and then use an external scheduler to call WordPress's cron endpoint on a fixed interval. Two steps.
Disable WP-Cron in wp-config.php
Add the following line to your wp-config.php file, before the line that says /* That's all, stop editing! */.
This prevents WordPress from firing cron tasks on every page request.
/* Disable WP-Cron, we use an external scheduler instead. */ define( 'DISABLE_WP_CRON', true );
Schedule Cronengine to call wp-cron.php every 5 minutes
In your Cronengine dashboard, create a new job with the following URL and schedule. Every 5 minutes is the standard interval recommended by WordPress. Adjust to every minute if your site has tasks that need tighter timing.
Webhook URL
https://yourdomain.com/wp-cron.php?doing_wp_cron
Schedule
*/5 * * * *every 5 minutes
Replace yourdomain.com with your actual WordPress site URL.
Verify it is working
After the job has run a few times, open the run history in your Cronengine dashboard. You should see HTTP 200 responses from WordPress. If you see a 4xx or 5xx status, check that your URL is correct and that WP-Cron is accessible from an external IP.
What gets fixed
Every WP-Cron task now runs reliably
Scheduled posts
Posts and pages scheduled to publish at a specific time will now go live on the dot, not hours later when traffic picks up.
WooCommerce order processing
WooCommerce relies on WP-Cron for order status updates, stock sync, and cleanup. Missed cron runs lead to stuck orders and payment delays.
Email campaigns and newsletters
Plugins like MailPoet and Newsletter depend on WP-Cron to dispatch emails. With a real scheduler, sends go out exactly when you configured them.
Database and cache cleanup
Transient cleanup, post revision pruning, and expired session removal all happen on schedule, keeping your database lean.
Plugin maintenance tasks
Security plugins (Wordfence, iThemes), backup plugins (UpdraftPlus), and SEO plugins (Yoast, Rank Math) all register WP-Cron tasks that now fire reliably.
Analytics and aggregation
Stats plugins and custom reporting tasks that aggregate data overnight will now complete predictably without depending on whether anyone visited the site.
What you gain on top of reliability
Full run history
Every cron call is logged with HTTP status, response time, and the full WordPress response body. You will know immediately if something goes wrong.
Email alerts on failure
If WordPress returns an error or the request times out, you get an email immediately. No more discovering missed tasks days later.
Manage multiple WordPress sites
Use Maps to group jobs by site. Keep client1.com, client2.com, and your own staging environments neatly separated in one dashboard.
Response time charts
See how long each wp-cron.php call takes over time. Spot when a plugin update started making your cron run slower.
Firewall or security plugin blocking requests?
All Cronengine requests originate from IP 45.9.188.216.
If you run Wordfence, Cloudflare, or any WAF in front of your site, add this IP to your allowlist so the wp-cron.php request is not blocked.
The URL also accepts plain HTTP if HTTPS is not configured.
Common questions
Make your WordPress cron jobs reliable.
Set up in 5 minutes. Free plan. No credit card required.