WordPress
WP-Cron vs a real scheduled job
Understand traffic-triggered WP-Cron and when a system scheduler gives more predictable WordPress background execution.
By AppLaunch Editorial · Reviewed 2026-08-25
Direct answer
WP-Cron checks scheduled work during requests, so low-traffic sites can run late and busy sites can trigger unnecessary checks. A real scheduler calling WordPress cron at a controlled interval is more predictable, provided overlap, logging and failure are managed.
What this means in plain English
WP-Cron checks scheduled work when somebody visits the site. On a quiet site, a job can run late because nobody visits. On a busy site, many requests may keep checking for work. A real scheduler calls the cron runner at known times.
Do not disable WP-Cron until the replacement is working. Monitor important jobs such as order actions, email, backups and cleanup, and prevent long jobs from overlapping unsafely.
Can the site rely on visitor traffic to trigger jobs?
| WP-Cron | Triggered by web requests |
|---|---|
| System schedule | Time-driven external invocation |
| Reliability | Observed completion of important jobs |
A simple example
A low-traffic membership site should send a reminder at 8 a.m., but nobody visits until 11 a.m., so WP-Cron starts it three hours late. A server scheduler running every five minutes makes the timing predictable.
What to do, step by step
1. Inventory critical scheduled events.
Start here before buying anything or changing several settings at once. It gives you a clear starting point based on wp-cron: triggered by web requests. Write the result down so you can compare it later.
2. Measure delays and runtime.
Use the same files, versions and settings that the real project will use. A quick test with an empty or different setup can look successful while completely missing the problem you are trying to solve.
3. Configure a controlled scheduler if needed.
Try the busiest realistic situation, not the easiest one. Include the people, data, traffic or background work you genuinely expect, then watch for slowdowns and errors rather than relying on a single headline number.
4. Alert on missing mail, backups or queue progress.
Finish by checking the result against reliability: observed completion of important jobs. Keep the old setting or release available until you know the change works and can be reversed safely.
One more useful tip
Use a lock or queue for jobs that may last longer than the schedule interval. Starting another copy every minute does not make a ten-minute job faster.
Common mistakes and how to avoid them
Disabling WP-Cron before adding a replacement.
This gives a misleading or unsafe result because it leaves out wp-cron. A better approach is to inventory critical scheduled events, then check the result before making the change permanent.
Running overlapping long jobs.
This gives a misleading or unsafe result because it leaves out system schedule. A better approach is to measure delays and runtime, then check the result before making the change permanent.
Ignoring plugin-created schedules.
This gives a misleading or unsafe result because it leaves out reliability. A better approach is to configure a controlled scheduler if needed, then check the result before making the change permanent.
Words explained
- WordPress
- A content management system that lets people edit pages and posts through an administration screen.
- plugin
- An add-on that gives WordPress extra features. Every plugin also adds code that must be updated and checked.
- WP-Cron
- WordPress’s built-in system for scheduled jobs. It normally checks for work when somebody visits the site.
Quick checklist
- Inventory critical scheduled events.
- Measure delays and runtime.
- Configure a controlled scheduler if needed.
- Alert on missing mail, backups or queue progress.
Common questions
What is the simple answer?
WP-Cron checks scheduled work during requests, so low-traffic sites can run late and busy sites can trigger unnecessary checks. A real scheduler calling WordPress cron at a controlled interval is more predictable, provided overlap, logging and failure are managed.
What should I check first?
Start with wp-cron: triggered by web requests. That is usually more useful than choosing from a marketing label or copying somebody else’s setting.
How can I make the change safely?
Inventory critical scheduled events. Then change one thing at a time, keep a backup or old version, and use the same real-world test after each change.
What is the easiest mistake to avoid?
Disabling WP-Cron before adding a replacement. Avoiding that one mistake makes the rest of the comparison much more trustworthy.