Chat & Webhooks
Besides the subscribers on your public page, you usually want your own team to know immediately — where they are already looking. Integrations push incidents and maintenances into a chat channel or to any HTTP endpoint.
The difference from subscribers: you set integrations up, not your customers. They belong to the status page, not to a person.
Supported targets
| Type | What you need |
|---|---|
| Slack | An incoming webhook URL from your Slack workspace |
| Microsoft Teams | The channel's incoming webhook URL |
| Discord | The channel's webhook URL |
| Google Chat | The space's webhook URL |
| Generic | Your own URL — you receive JSON and handle it yourself |
For the four chat services we format the message to fit, with title, severity, affected components and a link to the status page. The generic type gets the raw data.
Integrations, generic webhooks and chat services alike, come with the Basic plan and up. Move to a plan without them and they stay saved, but nothing is sent any more. You can then switch them off or delete them, not change or test them. After an upgrade they run again.
Setting one up
- Status Pages → your page → Integrations → New
- Pick the type, give it a name, paste the webhook URL
- Choose the events (see below)
- Save — then use Test to send a sample message
The test sends immediately and shows you the response status code. If something does not arrive, you find out here rather than during the next outage.
Events
Per integration you choose what it reports:
incident.created— an incident was openedincident.updated— an update was writtenincident.resolved— the incident is resolvedmaintenance.scheduled— a maintenance was announcedmaintenance.started— it has begunmaintenance.completed— it is over
All are on by default. An alert channel may want only incident.created and incident.resolved; a team channel wants everything.
Security
https:// only. We do not deliver to unencrypted addresses.
No internal addresses. URLs pointing into private, loopback or reserved ranges are refused when you save them — and checked again before every delivery, in case the DNS record changed in the meantime.
No redirects. If your endpoint answers with a redirect, we do not follow it.
Signature. Generic webhooks are signed so your endpoint can verify the message really came from us. The secret is shown once, when you create the integration: in the dashboard as a notice, through the API in the response. Lost it? New signing secret in the list of integrations makes a new one; the old one stops working at once.
When something does not arrive
The integration list shows the time of the last delivery and the last status code. A permanently empty field means it was never delivered — usually an expired webhook URL the chat service quietly dropped.
Through the API
curl -X POST https://statuswerk.eu/api/v1/integrations \
-H "Authorization: Bearer $STATUSWERK_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"type": "slack",
"name": "#alerts",
"url": "https://hooks.slack.com/services/...",
"events": ["incident.created", "incident.resolved"]
}'
Full detail in the API reference.