Email, text and voice
A webhook is for your systems. These are for people, and people should not be woken for everything, so each channel has a floor.
Three severities
Every alert type has a fixed severity. A channel's floor says which it carries.
| Severity | Means | For example |
|---|---|---|
| info | Worth knowing, no action. | A spike ended. A payment failed. |
| threat | Something is off; look when you can. | A repeat caller. A long call. A prefix cluster. |
| critical | It is happening now. | Rotating numbers. A volume spike. A suspicious live call. Spend past its ceiling. |
The full list, type by type, is on the webhooks page.
The channels
- Webhookany plan
- Every alert, signed, to one URL. See webhooks. No floor: your code filters.
- Emailany plan · floor: threat
- Up to twenty addresses. On from the start, to the address the account was opened with. One email per alert: a heading, the number that matters, the facts, one button into the dashboard.
- TextGuard · floor: critical
- Up to ten phones, North America. A masked one-line version of the alert: the caller's middle digits are hidden in a text, in full in the dashboard.
- Phone callGuard · floor: critical · 3 a day
- Up to ten phones. We ring and read the alert out once. Capped per day so a bad night is a few calls, not a hundred; the cap is yours to set, up to twenty.
Floors can be lowered to threats or all, or raised to critical, per channel, under Settings → Alerts. Any member of the account may change them.
Proving a phone
Texts and calls go only to a phone the account has proved it holds. Settings → Alerts → add a phone → a six-digit code arrives by text → type it. Once proved, the phone can be used for texts, calls, or both. A number that has not been proved is refused with 403 phone_unverified wherever it is set.
One alert, not a thousand
Every channel is behind the same cooldown: one alert per type per subject per fifteen minutes. The subject is the caller, the pattern, the number or the call, whichever the alert is about. A flood of five hundred calls from one run of numbers is one caller.rotating_numbers on every channel, with count in it, not five hundred texts.
If Guard ended the call, the alert says so: hung_up: true on the webhook, "Call ended." in the text. The person reading it at three in the morning knows whether there is anything left to do.
Where they land
GET /v1/alerts shows every alert with delivered.email, .sms and .call: true it went, false it was tried and failed, null the channel was off, below its floor, or not on the plan. See alerts.