Operate
Ops Alerts
In-product notification feeds (badge + list + mark-read) shared across web and native. Server-driven, real-time delivery.
Features
- **Rule-based routing** — match on event type + properties + module; multiple matchers per rule with AND/OR composition.
- **Slack channels** — incoming webhook URL per channel; payload formatted for Slack's `attachments` shape with module-tinted colour bars.
- **Generic HTTPS webhooks** — for ops platforms that aren't Slack (Discord, MS Teams via custom adapter, internal incident systems).
- **Retry worker** — transient 5xx + network errors retried with exponential backoff; `notifications_logs` row tracks every attempt with status code + error body.
- **Per-channel dispatch log** — every alert routed is recorded so on-call can audit "did we get pinged for X" without grepping Slack.
- **Test channel button** — verifies your Slack webhook URL is live before you trust a 3am page to it.
- **Same event source as Automation + Webhooks** — your platform event taxonomy fires alerts, runs workflows, AND notifies subscribed webhook endpoints out of one stream. No second event pipeline.
Common use cases
- Replace PagerDuty alert routing for ops events you already track in Sendora (delivery failures, anomaly detections, signin storms).
- Slack channel for every module — `#sendora-email` for bounces, `#sendora-auth` for signin alerts, `#sendora-ops` for everything else.
- Custom incident integration — POST event payloads to your in-house on-call system from the same rule engine that drives Slack pings.
Notifications
Configure notification channels
FREEPer-org channel registry. Each channel has a kind (email/push/sms/in_app) + provider config + frequency-cap defaults. Workflow steps reference channels by id.
# Create
curl -X POST https://api.sendoracloud.com/api/v1/orgs/<ORG_UUID>/notifications/channels \
-H "x-api-key: pk_prod_…" \
-d '{ "kind": "push", "name": "transactional-push", "frequencyCap": { "perUser": 5, "windowHours": 24 } }'
# List
curl https://api.sendoracloud.com/api/v1/orgs/<ORG_UUID>/notifications/channels \
-H "x-api-key: pk_prod_…"
# Test (sends a synthetic message through the channel to a test recipient)
curl -X POST https://api.sendoracloud.com/api/v1/orgs/<ORG_UUID>/notifications/channels/<CHANNEL_UUID>/test \
-H "x-api-key: pk_prod_…" \
-d '{ "to": "alice@example.com" }'Create a notification rule
STARTER+Rules describe trigger event + channel(s) + frequency caps. Workflow engine evaluates on event ingest.
curl -X POST https://api.sendoracloud.com/api/v1/orgs/<ORG_UUID>/notifications/rules \
-H "x-api-key: pk_prod_…" \
-d '{
"key": "welcome",
"channelIds": ["<CHANNEL_UUID>"],
"frequencyCap": { "perUser": 1, "windowHours": 24 },
"quietHoursTz": "America/New_York"
}'Read delivery logs
FREEPer-recipient × channel × rule attempt trail with delivery / open / click events when supported by the channel.
curl "https://api.sendoracloud.com/api/v1/orgs/<ORG_UUID>/notifications/logs?ruleKey=welcome&from=2026-05-01" \
-H "x-api-key: pk_prod_…"
# Aggregate stats
curl https://api.sendoracloud.com/api/v1/orgs/<ORG_UUID>/notifications/logs/stats \
-H "x-api-key: pk_prod_…"