Skip to main content
Back

Scheduled posts fail to publish for one of five reasons: the account connection expired, the platform was down or throttling requests, the media broke a format or size rule, the post hit a publishing cap, or the content was held for review, and you can usually tell which one you are looking at from the shape of the failure alone, because a dead connection kills every post to that account at once while a rejected video kills exactly one.

The advice people give when this happens is to switch tools, and that only helps if the cause was the tool. Third-party schedulers use the platforms' official APIs and authorized connections, while native schedulers run inside the platform. Both still face media rules, account restrictions, service incidents, and publishing limits. What changes between tools is how well they validate, retry, and report failures.

The diagnosis sections are tool-agnostic and hold wherever you schedule; Maeve, a scheduler with a failed-post recovery feature, gets one section near the end, plainly labeled.

The Failure Pattern Tells You the Cause

Before you read an error message, look at the shape of what failed, because each cause leaves a different footprint. A connection problem takes out every scheduled post on that account at once. A platform outage takes out one platform across accounts while the others publish fine. A rejected video takes out exactly one post while its neighbors go through. Half a batch publishing already rules out the most common cause, a dead connection, before anyone opens a dashboard, because a dead connection does not publish half of anything.

What you seeLikely causeThe fix
Every post to one account failed at onceThe connection to that account expired or was revokedReconnect the account in the scheduler, then retry. Nothing else works until you do.
One platform failing across accounts, the others fineA platform API outage or slowdownWait and retry. A scheduler with automatic retries usually publishes late rather than never.
One post failed while its neighbors publishedThe platform rejected it, usually media format, size, or lengthRead the platform's error, fix the file or the caption, reschedule.
A bulk batch half-publishedRate limits or a publishing cap hit partway throughRetry the missing posts spread over a longer window instead of resending the whole batch.
The post published, then disappearedA moderation hold or removal on the platform sideCheck notifications in the native app; edit and repost, or appeal there.
Nothing is marked failed, the post just is not liveA native scheduler failed silently, or the tool never knew the publish was dueCheck the platform's own scheduled and drafts queues, then check the account connection.
What the failure pattern says about the cause

Failed Post Recovery

Maeve retries the temporary failures automatically, and anything that still cannot publish lands in a Failed Posts tab with a plain reason, the platform's actual error, and a Retry button that waits until the fix is in place.

See Failed Post Recovery

Plan, preview, and publish in one workflow

Expired Connections Cause Most of It

Third-party schedulers authenticate with access tokens or comparable credentials issued by each platform. Expiry and refresh behavior differs by platform and integration, so there is no useful universal reconnection clock. A healthy scheduler refreshes credentials where supported and warns when the platform requires the account owner to authorize again.

Connections can also be revoked before an advertised expiry. Common triggers include the account owner removing the app, a required Page or business role changing, a platform security action, or a permission being withdrawn. Password and two-factor changes do not have one universal effect across every platform, so use the error returned by the platform rather than assuming the trigger.

Repeated reconnection requests deserve investigation. Check whether the platform is revoking the authorization, the user's permissions are changing, or the scheduler is failing to refresh credentials. The same connection problem can break n8n workflows, and the third-party safety checklist explains how to review and revoke access.

Why Half a Batch Publishes and Half Does Not

A half-published batch means the connection was alive, so the failures happened per post. Possible causes include media validation, account-level publishing limits, and request throttling. Meta's current Instagram content-publishing documentation lists 100 API-published posts per account in a rolling 24-hour period. Other rate limits and app-level controls vary, so use the returned error rather than assuming every partial batch was throttled.

Seasonal timing makes it worse in a way that is easy to miss. Your batch is not alone: every other customer of your scheduler is publishing their holiday content through the same platform app at the same peak minutes, and platform-side limits apply at both the account and the app level. A tool that queues and retries drains the backlog a few minutes late and you never notice; a tool that fires once and gives up leaves the turned-away half dead in the calendar. Mixed batches can also half-fail on the media itself, since each file is checked separately: nine images sail through and three videos over a length or size limit do not.

What to do about the half that failed: retry only those posts, spread over a longer window rather than resent as one burst, and if the batch was large, keep it under the platform's daily cap. Next season, stagger the queue so posts to the same account sit minutes apart instead of sharing a slot. And the honest limit before blaming any vendor: no scheduler can raise a platform's cap or publish through an outage. What separates tools is whether the turned-away posts get queued, retried, and reported, or silently dropped.

When the Platform Says No

Uploading a file into a scheduler is not the platform's approval, because the platform enforces its media rules at publish time. Video length, file size, resolution, codec, and aspect ratio all get checked when the post actually ships, so a file that sat happily in the queue for three weeks can still be refused at the door. This is the one-post-fails-alone pattern, and the platform's error message, if your tool shows it to you, names the rule.

Two more platform-side causes are worth recognizing because no scheduler setting fixes them. Moderation: TikTok in particular screens content at upload and can hold or remove a video the moment it goes live, which from the calendar's point of view looks like a failure even though the pipeline worked, and the notice lives in the native app. And account standing: a platform that has restricted or flagged an account will refuse API publishes from it too, so when failures make no sense, open the native app and check for warnings before touching the scheduler. There is also the stale-post case: if a post missed its moment because the connection was dead and you fix things a day later, a decent tool refuses to fire it automatically, because yesterday's launch post going out tomorrow morning is usually worse than it not going out at all.

Native Schedulers Fail More Quietly, Not Less Often

It is tempting to assume the third-party layer is the fragile part and the platforms' own schedulers are solid. The record does not support it. Meta Business Suite posts occasionally fail with no notification at all, a recurring complaint among people managing multiple Pages, and the wider constraints are in Meta Business Suite's scheduling limits. The silence can start before the queue: during some Business Suite update waves the Planner drops Story uploads with no error, covered in why did my Business Suite Story upload disappear. Pinterest's native scheduler holds ten queued Pins and reaches 30 days out, covered in how far ahead Pinterest lets you schedule. TikTok Studio publishes reliably enough but says almost nothing when a scheduled video fails to appear.

Publishing through an API fails sometimes wherever you do it, so the fair way to compare tools, native ones included, is time-to-knowing: whether you find out in a minute from a notification, on Friday from the feed, or from a client asking why the launch post never went up.

The Five-Minute Response When It Happens

When you find a post that did not go out, this order gets you to the fix fastest.

Read the real error first. Open your tool's failed queue and read the message the platform sent back, because the fix is different for each cause and the error names it. If your tool shows no reason at all, that silence is information too, about the tool.
Match the pattern before touching anything. Whole account failed: it is the connection. One post failed: it is the post. Half a batch failed: it is throttling or media checks. Nothing marked failed but the post is not live: check the platform's own scheduled and drafts queues.
Reconnect before you retry. If the reason is an expired or revoked connection, every retry fails until the account is reconnected. Reconnect in the scheduler, confirm the connection shows healthy, then retry, and the post usually goes straight out.
Retry batches with spacing. Fix any per-post validation errors first. When the platform reports throttling or a publishing cap, retry only the missing posts with spacing. Instagram's current API documentation lists 100 API-published posts per rolling 24 hours.
Check the account in the native app. A scheduler may receive only a generic rejection for moderation or account-standing problems. Check the platform's native notifications and account-status screens when the API error does not explain the decision.
Repeated failures need a traceable cause. No tool prevents every platform failure. Repeated reconnections or late discovery can point to the platform revoking access, changing user permissions, weak credential refresh, or poor alerting. Use the returned errors and connection logs to separate them.

The Reliability Screen for the Next Tool

If a run of failures has you shopping, screen for how a tool behaves in the sixty seconds after a failure, because that is where schedulers genuinely differ. All of it is checkable in a trial week, and failure handling belongs beside price and platform coverage on the shortlist, as argued in how to choose a scheduler.

It tells you immediately, somewhere you already look. A notification the minute a post fails, not a badge inside a dashboard you visit weekly. Time-to-knowing decides how bad a failure gets.
It shows the platform's error, not a shrug. Connection expired and video exceeds length limit point at different fixes. A tool that only says failed makes you diagnose blind.
It retries the temporary and refuses the pointless. An outage or a rate limit deserves automatic retries so the post lands minutes late instead of never. A dead connection deserves a blocked retry button until you reconnect.
Batches hold together. A carousel or story chain should retry as a unit. Slide one published with slides two through five stuck in failed is worse than the whole thing waiting.
It stops firing after the window passes. A post still unpublished a day later should be marked missed and held for a human, because time-sensitive content publishing a day late is its own failure.

How Maeve Handles a Failed Post

A failing post gets retried automatically for the first few minutes, which clears most platform blips before anyone notices, and a background sweep keeps looking for posts that should have gone out and did not. Whatever still cannot publish lands in a Failed Posts tab grouped under five plain reasons, connection expired, rejected by the platform, missed the window, a service blip, or failed to publish, with the exact message the platform sent back attached to each row, and the calendar shows the post in red on the day it was due. A dead connection blocks the Retry button until the account is reconnected, carousels and story chains retry as a unit, a post more than 24 hours past its slot is marked as having missed the window rather than fired late, and every retry is logged with who ran it. The full walkthrough is on the failed post recovery page, and the minute-by-minute sequence is in what happens when a scheduled post fails.

The limits, stated plainly: Maeve cannot raise a platform's publishing cap, publish through an outage, or overrule a moderation decision, and neither can any other scheduler. What it commits to is that you know the same hour, with the reason attached and the fix one click away, instead of finding out from the feed that half the week showed up.

So: a token expired, a platform throttled or went down, a file broke a rule, a cap was hit, or a moderator said no, and the shape of the failure tells you which. None of these are cured by switching schedulers, because every tool publishes through the same APIs. What switching can fix is how often the avoidable ones happen and how fast you hear about the rest. Nothing works in the sense of a scheduler that never fails, so the useful question is which tool turns a failure into a notification with a reason and a retry button instead of a discovery. Judge your current tool against the screen above during its next bad week.