Outbound webhooks for alert eventsOutbound webhooks

Receipts answer when you ask. Outbound webhooks tell you as it happens: someone acknowledged, an escalation ran out, or push reached none of the recipient's devices. Add your endpoint on the dashboard and Acciti posts these events to it.

alert.acknowledgedAcknowledged
Someone acknowledged an alert on one of their devices.
alert.resolvedResolved by the sender
The sender reported that the condition cleared, and the alert ended.
alert.undeliveredReached no device
Push reached none of the recipient's devices.
escalation.exhaustedEscalation ran out
Every step of an escalation policy ran without an acknowledgement.
POST to your endpoint
{  "event": "alert.acknowledged",  "sentAt": "2027-01-15T03:14:09Z",  "alert": {    "id": "0198e3...",    "title": "griffin is down",    "message": "No response for 90 seconds",    "priority": 2,    "sender": "nightwatch",    "dedupKey": "monitor:griffin",    "createdAt": "2027-01-15T03:11:44Z"  },  "acknowledgedAt": "2027-01-15T03:14:07Z",  "acknowledgedBy": { "accountId": "0198e1...", "name": "Jacob" }}

acknowledgedBy appears only when the person who acknowledged it is a member of the sending team. Anyone's user key can receive an alert, and their identity isn't shared with a team they don't belong to.

Verify the signature

Every request carries X-Acciti-Signature: sha256= followed by the hex HMAC-SHA256 of the body, keyed with the secret shown when you added the endpoint. Compute it over the raw bytes you received, before any parsing. X-Acciti-Event names the event, and X-Acciti-Delivery identifies the attempt so you can tell a retry from a new event.

Respond quickly

Answer with any 2xx within ten seconds. Anything else is retried with backoff. After twenty consecutive failures the endpoint is switched off, and the dashboard shows why.

The dashboard keeps a log of each request: what it carried, how many attempts it took and what your endpoint answered. It's kept as long as your plan keeps delivery receipts.

The URL must use https and be reachable from the public internet. Private network addresses are refused when you save the endpoint, and checked again against the resolved address before every request.