Skip to main content
Fires when an operator cancels a queued scheduled post via DELETE /v1/posts/:id. The BullMQ job is removed and the row transitions to status: "canceled" before this event dispatches. The event does not fire for posts that reached rejected or failed through the normal publish path — those carry their own events. post.canceled is specifically the operator-initiated cancellation signal.

Payload

post.canceled.json
scheduledAt is the time the post would have fired if it hadn’t been canceled. canceledAt is when the cancellation was accepted.

Use it for

  • Reverting any pre-publish work you queued in anticipation (CMS draft state, scheduled announcements, attribution links).
  • Notifying upstream tools that the planned post won’t go out.
  • Audit trail: pair with post.queued to reconstruct the full lifecycle of any scheduled item.

Cancellation race

If you receive post.canceled before the platform-side post would have fired, that’s the expected path. If you receive it after a post.published event for the same post.id, ignore the cancel — the worker had already finalized the publish and the cancellation arrived too late to stop it. The API’s window gate (status=queued AND scheduledAt > now) makes this race vanishingly rare, but consumers should still handle it idempotently.