WordPress "Missed Schedule": Scheduled Posts Not Publishing
You scheduled a post in WordPress, the time came and went, and the post list now says "Missed schedule" instead of published. The post is fine — WordPress's built-in task scheduler, WP-Cron, simply did not run on time.
Common signs of this issue
- The Posts list shows "Missed schedule" in red next to a post that should already be live.
- Scheduled posts publish late — sometimes hours after the set time, often only when someone visits the site.
- Newsletters, social sharing, or automatic emails tied to a publish time go out late or not at all.
- Backups, cleanup tasks, or plugin reports that should run nightly are missing or out of date.
- Site Health mentions "A scheduled event is late" or "A scheduled event has failed".
- It started after a move to new hosting, adding a caching or security layer, or someone editing wp-config.php.
Safe checks you can do yourself
None of these require sharing passwords with anyone.
- Publish the missed post now. Open it, find the publish date in the settings sidebar, set it to Immediately or a time just past, and click Publish. That gets the content live while you look at the cause.
- Check Settings, then General, then Timezone. Choose a city in your own time zone rather than a UTC offset. A wrong time zone makes posts go live at the wrong hour and looks a lot like a missed schedule.
- Think about traffic. WordPress only checks its task list when someone loads a page. If a post is scheduled for 6 a.m. and nobody visits until 9, it may not publish until 9 — or, if things go wrong at that moment, it gets marked missed.
- Open Tools, then Site Health and look for items about scheduled events or a loopback request. A failing loopback is one of the most common reasons WP-Cron never fires.
- Ask your developer or host whether DISABLE_WP_CRON is set to true in
wp-config.php. That line switches off WordPress's own scheduler. It is fine — and often better — if a real server cron job replaces it, but if nobody set one up, nothing scheduled will ever run. - If you want to see the scheduler itself, the free WP Crontrol plugin lists every scheduled event and when it last ran. Use it only to look; overdue events with times in the past confirm the scheduler is stuck.
- Consider what sits in front of the site. If Cloudflare, a CDN, or a static cache serves every page without WordPress running, or if the site is behind a password or maintenance screen, visitor traffic never reaches the code that triggers scheduled tasks.
- Check your hosting panel for a Cron Jobs section. If one exists for your site, note the command and schedule. If none exists and DISABLE_WP_CRON is on, you have found the problem.
What this usually means
WordPress does not have a real alarm clock. Its scheduler, WP-Cron, works by piggybacking on visits: each time someone loads a page, WordPress checks whether anything is due and, if so, fires off a background request to itself to run it. On a busy site that works well. On a quiet small business site it is unreliable, because at 6 a.m. on a Sunday there may be no visitor to trigger it. When the request does run but fails, or when too much time passes, the post is labeled Missed schedule.
The other common causes all stop that background request from happening. DISABLE_WP_CRON set in wp-config.php without a replacement server cron job. A loopback request blocked by a security plugin, host firewall, Cloudflare rule, or HTTP password protection, so WordPress cannot call itself. Full-page caching that answers every visitor without running WordPress at all. And sometimes a heavy or broken plugin task at the front of the queue that errors out and holds up everything behind it.
The reliable fix is to stop depending on visitors. A real server cron job — set up in your hosting panel to call WordPress's scheduler every five or fifteen minutes — runs on time regardless of traffic, and many hosts recommend it. The same scheduler handles WooCommerce emails, backups, and security scans, so fixing it often clears up several quiet problems at once. Plugins that promise to fix missed schedules usually just retry the publish; they help, but they treat the symptom.
What not to do
- Don't keep rescheduling the same post and hoping. If the scheduler is broken, the next one will miss too.
- Don't add DISABLE_WP_CRON to wp-config.php because a speed article recommended it unless a real server cron job is set up at the same time.
- Don't set a server cron job to run every minute on shared hosting. Every five to fifteen minutes is plenty and avoids hitting resource limits.
- Don't delete events in WP Crontrol unless you know exactly which plugin owns them. Removing the wrong one can stop backups or security scans silently.
- Don't switch off your security plugin or firewall to fix a blocked loopback. Allow the site's own requests instead.
- Don't assume missed posts are only a cosmetic issue. The same broken scheduler usually means backups and automated emails are not running either.
When to get help
If publishing manually works but scheduling keeps failing, and you are not comfortable editing wp-config.php or adding cron jobs in a hosting panel, this is a good small job to hand off. A misplaced line in wp-config.php can take the whole site down, and a badly configured cron job can quietly burn through your hosting resources. It is especially worth getting help if Site Health shows a failing loopback or events that are days overdue, because that usually means backups and automated emails have also stopped — something you want to know about before you need a backup. Someone experienced will check the scheduler, set up a proper server cron, and confirm that overdue tasks actually run.
Glenn, who runs WebsiteSelfHelp, sorts out missed schedules and stalled WP-Cron for small business sites, including the backups and emails that tend to break alongside them. Describe what is not running and when it started, and he will tell you straightforwardly what it will take to make scheduling reliable. Nothing sensitive is needed to begin.
Not sure what to do next?
Answer a few short questions and we'll point you to the safest next step — DIY, a freelancer, or a direct review. No passwords required.
Is this a business website? If this issue may be costing you leads, sales, or trust, you may want a direct review instead of trial and error.
Frequently asked questions
What does "Missed schedule" mean in WordPress?
It means the post reached its scheduled time but WordPress's task scheduler, WP-Cron, did not run to publish it. The post and its content are safe; it just never went live.
Why are my scheduled posts not publishing?
Usually because WP-Cron only runs when someone visits the site, and nobody did at the right time — or because it has been switched off, blocked by a firewall, or bypassed by caching. A real server cron job fixes most cases.
How do I publish a post that missed its schedule?
Open the post, change the publish date to now or a moment ago, and click Publish. It goes live immediately. Then fix the scheduler so the next one does not miss.
Is DISABLE_WP_CRON bad?
Not by itself. Many developers switch off WordPress's built-in scheduler on purpose and replace it with a server cron job, which is more reliable. It only causes problems when it is disabled and nothing replaces it.
Can caching cause missed scheduled posts?
Yes. If a CDN or static cache serves pages without WordPress running, visits never trigger the scheduler. Low-traffic sites with heavy caching are the most likely to see missed schedules.
Does a missed schedule mean other things are broken too?
Often. The same scheduler runs backups, security scans, update checks, and store emails. If posts are missing their schedule, check that those are still happening.
Can I fix WP-Cron myself?
If your hosting panel has a Cron Jobs section and your host has instructions for WordPress, many owners can. If it involves editing wp-config.php or tracing a blocked loopback, it is worth having someone do it once, correctly.