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
| Field | Type | Description |
|---|---|---|
| post.published | info | A post went out successfully. Off by default (it would be noisy). |
| post.failed | critical | A scheduled post failed to publish — token expired, rate limit, policy violation. On by default. |
| post.delayed | warning | A post is still pending more than 10 min after its scheduled time. Indicates platform API trouble. |
| integration.disconnected | critical | A channel lost its auth — token revoked, password changed, scope removed. On by default. |
| integration.expiring | warning | A channel's token will expire in 7 days (Instagram, Facebook). Reconnect before it dies. |
| approval.requested | info | A contributor submitted a post for approval. Sent to editors and admins. |
| approval.decided | info | A submitted post was approved or rejected. Sent to the author. |
| comment.received | info | A follower commented on a published post. Off by default. |
| billing.payment_failed | critical | Stripe 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.
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.
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.
{
"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.