A failed post is rarely a mystery once you know which of three families it belongs to. The fix for each is different, and picking the wrong one is how people end up retrying a post that was never going to work, or worse, posting the same thing twice.
This is a triage guide. It assumes you have already had the alert or spotted the red status in your calendar, and you want to know what to do next. For the full list of notifications and where to switch them on, see the Failed-post alerts feature page.
Start with the reason, not the retry button
Every failure carries the reason the platform gave. Open the post and read it before you do anything else. Nearly every message falls into one of these families:
| What the message looks like | Family | What to do |
|---|---|---|
| Mentions an invalid, expired or revoked token, “unauthorized” or “please reconnect” | The connection is dead | Reconnect the channel, then retry |
| Mentions rate limits, “try again later”, a server error or media still processing | The platform had a bad moment | Usually nothing, we already retried; retry once more if it stays failed |
| Mentions length, format, permissions or a policy rule | The post itself | Edit the post, then publish again |
| Says we could not confirm the post was published | Unknown outcome | Check the account first, do not retry blindly |
Family one: the connection is dead
This is the most common cause of a post that fails for no visible reason. Platforms expire access, users change a password, or an admin removes the app, and the connection stops working between one post and the next.
How you will know: the channel’s status on the Channels page reads Reconnect, and any other post aimed at it fails immediately with the same reason instead of trying again. That is deliberate. One broken connection should give you one clear problem, not a pile of identical failures.
What to do:
- Open Channels and reconnect the account. Sign in to the platform with the account that manages that page or profile.
- Go back to the failed post and choose Retry Failed.
- Look at the channel’s other posts. Any that already failed while it was broken need the same retry.
Retrying before you reconnect only produces the same failure. Reconnecting first is the whole fix.
You will often get a warning before it comes to this. When a connection is within three days of expiring and we cannot renew it ourselves, you are told in the app, and by email if you have turned that on. Treat that as a task for today, not for next week.
Family two: the platform had a bad moment
Rate limits, brief outages and “something went wrong on our end” errors say nothing about your post. We treat them accordingly: a few quick retries, then a delayed one a few minutes later, and up to two of those. You are only alerted if all of that fails, which is why a post can show a temporary error for a while and then publish on its own.
If a post is still marked failed after that, give the platform a little time and press Retry Failed. If the same error keeps coming back, check the platform’s own status page, because that is probably where the problem is. Only the channels that failed are tried again.
Family three: the post itself
Some failures are the platform telling you it will not accept what you sent. Typical causes:
- A caption over the limit. Limits differ a lot between networks, so a caption that is fine on one can be too long on another. Shorten it or write a version for that network.
- Media the platform rejects. Wrong format, too large, too long, or the wrong shape for that post type. Swap the file.
- A permission you did not grant. The connection works but cannot do this particular thing, for example post to a page you no longer have a role on. Reconnecting and ticking every permission on the consent screen is the usual answer.
- A policy rule. Duplicate content, restricted links or a blocked word. The platform’s message usually says which.
A retry will not change any of these. Open the post, fix the cause, and publish again. If one network is failing and the rest went out, the post is marked partial and only the failed network is attempted again.
The awkward one: “we could not confirm”
Sometimes we send a post and then lose the answer, because the connection dropped or a video was still being processed when we stopped waiting. The post may well be live. We cannot tell, and neither can a retry.
These are marked unconfirmed, and the alert says so. Before you do anything:
- Open the account on the platform itself and look at the latest posts.
- If it is there, you are done. Nothing needs retrying.
- If it is not, retry. Only now is it safe.
This is the one case where acting quickly is the wrong instinct. A duplicate post on a client’s page is harder to explain than a late one.
A worked example
A social media manager schedules twelve posts for the week across Instagram, LinkedIn and Facebook. On Tuesday morning the Facebook post shows an alert: the reason mentions an expired token. The Channels page shows the Facebook page as Reconnect. Two more Facebook posts are due on Wednesday and Thursday, and both would fail straight away for the same reason.
She reconnects the page, then retries Tuesday’s post. Wednesday’s and Thursday’s go out normally now that the connection works. Instagram and LinkedIn were never affected. Total time: about two minutes, and no duplicates, because only the failed channel is tried again.
Had she retried first, it would have failed again with the same reason. Had the alert said “could not confirm” instead, she would have opened Facebook before touching the post.
A short checklist
- Read the reason on the post before pressing anything.
- Dead connection: reconnect first, then retry the failed post. Posts already marked failed for that channel need the same retry.
- Platform trouble: wait, retry once, check the platform’s status page.
- Post problem: edit, then publish again. Retrying changes nothing.
- Unconfirmed: look at the account, retry only if the post is missing.
- Batch scheduling a lot at once, for example from a spreadsheet? Look at the calendar the morning after the first run to catch anything systematic.
Make it someone’s job
Alerts go to individuals, so a failure only gets fixed if somebody knows it is theirs. On a team, agree who owns failures in a given week, in the same way you would agree who approves posts. A shared workflow with a named owner removes the “I assumed you saw it” problem. If a script of your own should watch for failures, the notification list is available through the API.
For the basics of getting posts into the queue, see how to schedule posts on social media, and for content that repeats on a rule, recurring social media posts.
Try it
Switch on Email on post failure and Email on token expiry in Settings under Notification Preferences, then schedule a few posts. Start free.
BulkPublish supports 15 platforms: Facebook, Instagram, TikTok, YouTube, X, Threads, Bluesky, Pinterest, Google Business Profile, LinkedIn, Mastodon, Discord, Telegram, Tumblr and Snapchat.
- Alerts: in-app and email notifications are included on every plan, including Free.
- Channels: Free: 3 (1 per platform). Pro: 30 (2 per platform). Business: 75 (5 per platform).
- Posts: Free: 3/day. Pro: 30/day. Business: unlimited.