Workspace

Notifications

Email, in-app, and webhook alerts

Notifications tell you when something needs attention — a post failed to publish, an integration disconnected, a draft is awaiting approval. OpenPost ships four delivery channels: in-app, email, Slack, and webhooks.

Where to configure

Settings → Notifications. Each user sets their own preferences; the list of available events is per workspace.

Events

FieldTypeDescription
post.publishedinfoA post went out successfully. Off by default (it would be noisy).
post.failedcriticalA scheduled post failed to publish — token expired, rate limit, policy violation. On by default.
post.delayedwarningA post is still pending more than 10 min after its scheduled time. Indicates platform API trouble.
integration.disconnectedcriticalA channel lost its auth — token revoked, password changed, scope removed. On by default.
integration.expiringwarningA channel's token will expire in 7 days (Instagram, Facebook). Reconnect before it dies.
approval.requestedinfoA contributor submitted a post for approval. Sent to editors and admins.
approval.decidedinfoA submitted post was approved or rejected. Sent to the author.
comment.receivedinfoA follower commented on a published post. Off by default.
billing.payment_failedcriticalStripe payment failed. Sent to workspace owner and admins.

Delivery channels

In-app

The bell icon in the top nav. Badge count on unread; expands to a panel with the last 30 days of events. Infinite scroll after that.

Email

Goes to your account email. Batched: critical events arrive immediately, info/warning events batch into a once-per-hour digest so we don’t flood your inbox.

Slack

Install the Slack app (Settings → Notifications → Connect Slack). Pick a channel — workspace admins can set a default channel for every member to start from. Messages are compact cards with a deep-link back to OpenPost.

Route post.failed to a dedicated #social-alerts channel so the whole team sees publish failures, even if the author is offline.

Webhook

Send every event to an HTTP endpoint you control. See the webhooks reference for payload shapes, signing, and retry policy.

json
{
  "event": "post.failed",
  "timestamp": "2026-04-16T09:45:12Z",
  "data": {
    "post_id": "pst_7vQxW2",
    "channel": "instagram",
    "scheduled_at": "2026-04-16T09:45:00Z",
    "error": {
      "code": "media_format_rejected",
      "message": "Instagram requires square or 4:5 video for feed"
    }
  }
}

Do Not Disturb

Every user can set quiet hours. Events that arrive during quiet hours queue up and fire a single digest at the end of the window. Critical events (post.failed, integration.disconnected) always ignore DND so you never miss them.

Testing a webhook

From Settings → Notifications → Webhooks, click Send test event. You’ll receive a signed request with a synthetic payload so you can validate your handler before a real event fires.

Last updated April 2026 Edit this page