Alert channels are account-level destinations for every alert Nevision produces: monitor down/recovery, SSL expiry, usage thresholds, and server metrics. Configure them under Settings → Alerts. Monitors notify all channels by default; each monitor can narrow its selection in the monitor form. If no channels are configured, alerts fall back to email exactly as before.
Slack
Create an incoming webhook (Slack App → Incoming Webhooks → Add New Webhook to Workspace) and paste the https://hooks.slack.com/… URL.
Discord
Server Settings → Integrations → Webhooks → New Webhook, then paste the webhook URL.
Microsoft Teams (Pro and up)
Create a Workflows incoming webhook (Workflows → "Post to a channel when a webhook request is received") and paste its URL. Alerts arrive as Adaptive Cards.
PagerDuty (Pro and up)
Add an Events API v2 integration to a PagerDuty service and paste the routing key. Down alerts open an incident; recovery alerts resolve the same incident automatically.
Generic webhook
Nevision POSTs a JSON envelope to your HTTPS endpoint and signs the raw body with a per-channel secret (shown once at creation):
POST <your-url>
content-type: application/json
x-nevision-event: monitor.down
x-nevision-signature: sha256=<hmac>
{
"id": "5f2a…",
"type": "monitor.down",
"timestamp": "2026-08-03T12:00:00.000Z",
"data": {
"title": "Checkout API is DOWN",
"status": "critical",
"summary": "https://shop.example.com is failing health checks.",
"fields": [{ "label": "Status code", "value": "503" }],
"url": "https://www.nevision.app/uptime/…"
}
}Verify the signature by recomputing it over the exact raw body:
import { createHmac, timingSafeEqual } from "crypto";
function verify(rawBody, signatureHeader, secret) {
const expected =
"sha256=" + createHmac("sha256", secret).update(rawBody).digest("hex");
const expectedBuf = Buffer.from(expected);
const actualBuf = Buffer.from(signatureHeader);
if (expectedBuf.length !== actualBuf.length) return false;
return timingSafeEqual(expectedBuf, actualBuf);
}Event types: monitor.down, monitor.recovered, monitor.ssl_expiry, usage.alert, server.alert. Deliveries time out after 5 seconds with one retry on network errors and 5xx responses.
Testing
Every channel has a Test button in Settings → Alerts that sends a sample down alert so you can verify wiring before an incident does it for you.