Safe retries without publishing the same post twice
How target-level publishing, content revisions, and idempotency work together.
Every target is independent
When one piece of content is sent to several social accounts, every target produces its own result. A temporary provider failure does not stop successful targets; the parent post can become partially published when needed.
Revision-aware idempotency
PLANLISH uses a separate idempotency key for each publishing target and content revision. Replaying a completed job does not create a second provider post. If approved content changes, its revision increases, the old approval becomes invalid, and publishing is validated again for the new content.
An explicit rate-limit rejection can be retried with bounded delays. A timeout or server error after submission can mean the provider accepted the post; this result requires review before another submission. Permanent validation or authorization failures are not queued forever.
Following a queued publication
A post remains publishing while any platform is pending or running, even when another platform has already succeeded or failed. Automatic recovery keeps the same queued target and revision. Before contacting a provider, the worker checks the current account assignment, account status, and required workspace subscription again.
When the provider returns a successful post ID, PLANLISH records that evidence before updating the target and activity history. A later retry can finish those local updates without submitting the post again. If delivery evidence cannot be stored, the job requires reconciliation; this is not treated as a new publish request. Audit or onboarding milestone failures do not reverse a successful delivery.
Actions for one account
The publishing queue lets authorized editors cancel, reschedule or retry an individual target while preserving other accounts' successful results. Manual retry creates a new target revision after checking that the previous attempt has stopped. If delivery is uncertain, first confirm the actual provider result. An individual schedule appears at its own time in the calendar; moving the whole post resets individual dates.