Docs › Reference › Post statuses

Post statuses: every status and which are final

Every status a result for one channel can have, every status of a whole post, which are final, and how the post's status is worked out.

Updated

There are two levels of status. A result is what happened on one channel (the API calls it a target). A post is the whole thing you sent to several channels (the API calls it a group). The API returns the values below in lower case, in status.

Results (one channel)

API status Shown in the app as Meaning Final?
pending Waiting to send Saved, not yet picked up. No
preflight Checking the post OmniPosts is checking text, media and the channel before sending. No
queued Scheduled Ready, waiting for its time. Also where a retry waits. No
publishing Sending now OmniPosts has started handing the post to the platform. No
awaiting_platform Waiting for the platform to finish The platform took the post and is still processing it. No
unknown Checking whether this posted Sent, but the platform did not confirm. OmniPosts is looking it up and will not resend. No
published Posted Live. The result has a link. Yes. It never changes again.
failed Not posted Did not go out. Has a reason and one action. Usually. It can go back to queued when a retry is allowed.
cancelled Cancelled Cancelled before sending started. Yes

How a result moves:

  • pending to preflight to queued to publishing.
  • From publishing it ends at published, failed, awaiting_platform or unknown.
  • awaiting_platform ends at published, failed or unknown.
  • unknown ends at published or failed, and only after OmniPosts has looked the post up. It is never resolved by sending again.
  • pending, preflight and queued can also go straight to failed (the checks rejected the post, so nothing was sent) or to cancelled.
  • publishing can return to queued when the failure happened strictly before the post reached the platform and is safe to try again, such as a refused connection.
  • failed can return to queued when a retry is allowed. See Failure classes.
  • A failed result can become published in one case: OmniPosts's look-up said the post had not gone out, and a later, real answer from the platform shows that it had.

You can cancel a result only while it is pending, preflight or queued. After that it may already be on the platform.

The statuses publishing, awaiting_platform and unknown mean a send may have reached the platform. That is why they cannot be cancelled and why OmniPosts never resends them.

Posts (the whole thing)

API status Shown in the app as Meaning Final?
draft Draft No channels yet. No
scheduled Scheduled Every channel is still waiting to send. No
publishing Sending At least one channel is being sent or checked, or some channels are done while others still wait. No
published Posted everywhere Every channel that was not cancelled has posted. Yes
partial Posted to some channels At least one channel posted and at least one did not. Mostly. A retry can change it.
failed Not posted No channel posted, and at least one failed. Mostly. A retry can change it.
cancelled Cancelled Every channel was cancelled. Yes

Status of the whole post

OmniPosts works the post's status out from its results. These rules are checked in this order:

  1. A post with no results is a draft.
  2. If every result is cancelled, the post is cancelled.
  3. If any result is publishing, awaiting_platform or unknown, the post is publishing. OmniPosts never shows a final verdict while a send might still be in flight.
  4. Otherwise, if any result is still pending, preflight or queued: the post is publishing when some other result is already published or failed, and scheduled when none is.
  5. Otherwise nothing is waiting or in flight. If no result failed, the post is published. If some failed, it is partial when at least one published, and failed when none did.

Cancelled results are ignored in rules 4 and 5, so cancelling one channel of three leaves a post that can still become published.

Where you see them

The Inbox lists results, one row per channel. The Calendar and the post detail page show the post. The API reads them with GET /v1/groups/{id} for a post and GET /v1/targets for results. The whole story of a result is in Posts and results.