Which state is it in
Every post is in exactly one of four states.Two of those look like trouble and are not.
- A post sitting in
DRAFTwas never queued, so there was no run to miss. The date on it is only where the card sits on your calendar. - A post still in
QUEUEwith its time behind it has not failed either. She has simply not reached it yet, and the hourly sweep usually picks it up within the hour.
What the calendar shows when publishing fails
Open the week the post belonged to. A failed post is unmissable: the whole card gets a red outline, and a small red! badge sits on its top left corner. Hover the badge and a tooltip
appears.
Most of the time that tooltip reads An error occurred while publishing this post. That is the
fallback. The calendar payload is trimmed hard to keep the grid fast, and the stored error text is
not one of the fields it carries, so the badge tells you that something failed without telling you
what. The real message is kept elsewhere, and the next section is where to find it.
How many times she tries
Two layers of retry sit under one red card. Know them before you retry by hand.
Two failures skip the passes and stop at once:
- The platform rejected the content itself. She stops, marks the post failed, and sends you a notification with the platform’s own words in it.
- The channel token could not be refreshed. She stops and marks the post failed, and the channel disconnects itself. That one has its own section below.
The hourly sweep
Once an hour she looks for posts that are:- still in
QUEUE - carrying a publish time in the last two days
- on channels that are connected and enabled
The sweep only picks up posts still in
QUEUE. A post already marked ERROR is never swept, and
neither is anything on a channel that needs reconnecting. Past those two days, nothing is picked up
automatically.Where the platform’s message is kept
She keeps the failure in two places when a publish attempt comes back badly.That third column stores her own post rows, the content and settings as she held them, not the
payload she put on the wire. Nothing anywhere keeps a copy of the outbound request body, so if you
came here looking for the exact JSON a platform rejected, it is not saved.
Anything else came from the network you were posting to.
Reading it
Three routes, depending on who you are and what failed.Notifications
Notifications
When a channel needs reconnecting, when a channel is disabled, and when the platform rejected
the content, she writes a notification and emails it. The rejection notice carries the
platform’s own message on the end of the line.A plain network failure gets no notification, only the red card.
The Debug JSON, for super admins
The Debug JSON, for super admins
An account marked super admin gets one extra icon on the strip across the top of a post card.
It opens a small dialog with Copy post id and Copy Debug JSON.The JSON carries the post content, the media and the platform settings, plus a
_debug block
with the state, the error and every errors row for that post, each with its message, its
platform and the stored post records from the moment it failed.The database, if you run her yourself
The database, if you run her yourself
You have both the
error column on the post and the errors table. Query them directly.The channel disconnected itself
Nobody searches for this one, because it does not look like a posting problem at all. Networks that expire their tokens get a small workflow of their own per channel, which sleeps until the expiry and then refreshes. Tokens also get rejected mid-flight, and when that happens during a publish she tries the refresh right there and posts again. When the refresh comes back empty, three things happen together:- She flags the channel as needing a refresh.
- She disconnects it.
- She writes a notice that names the network: Could not refresh your linkedin channel. It lands in your notifications and in your inbox, and it tells you to go back and connect the channel again.
That notice is sent twice, once with the cause and once without. Two copies in your inbox mean one
broken channel rather than two.
- Any post reaching its time on that channel goes straight to failed with
Refresh channel needed, and you get a notification saying she could not post because you need to reconnect it. - The hourly sweep skips that channel entirely.
- The token refresh workflow returns immediately instead of sleeping until the next expiry.
1
Find the channel in the left sidebar
Its avatar carries the same red
!, with a tooltip reading Channel disconnected, click to
reconnect.2
Start the reconnect
Click the avatar, or open the three dots menu next to the channel and pick Reconnect
channel. Then walk the connect flow again.
3
Reschedule each post that failed
The posts do not resume on their own.
Getting the post out
Pick whichever surface you are already in. All three do the same thing underneath: put the post back in the queue, terminate any publishing workflow still running for it, and start a fresh one.- From the calendar
- From the CLI
- From the API
Drag the card onto a cell in the future. Nothing asks you to confirm. A failed post drops
straight through: she writes the new date, flips the post back to the queue, drops the stored
release link and starts the publishing workflow again for the time you chose.The What do you want to do? prompt you may have seen on other cards does not appear here.
That one is for a post that already went out, or one still sitting in the queue with its moment
behind it. A failed post is neither, so the drag is the whole interaction.
The API response comes back as
{ "id": "...", "state": "QUEUE" }. The post is back in the queue.When it is the platform saying no
Retrying an unchanged post against a platform that rejected it gets you the same rejection three times. Read the message first. Length limits, media rules and required settings are all network-specific, and each provider page carries that network’s real error strings alongside the settings she sends. Reddit wants a subreddit and sometimes a flair. YouTube and TikTok have their own upload rules. Start on the page for your network, fix the post, then retry it.Still stuck
Put these four things in the message:- The post id, from the Preview URL or from
posts:list. - The channel and the exact time the post was meant to go out.
- What the badge tooltip said, word for word.
- The Debug JSON, when your account can copy it.
Next steps
Your provider's page
Platform-specific rejections, settings and limits, network by network
Reconnecting a channel
Invalid state, invalid_grant and fetch failed during the connect flow
Notifications
The bell and the inbox, and which emails you can turn off
Support
How to write a report that gets a fast answer