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

  1. Status Pages → your page → Integrations → New
  2. Pick the type, give it a name, paste the webhook URL
  3. Choose the events (see below)
  4. 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 opened
  • incident.updated — an update was written
  • incident.resolved — the incident is resolved
  • maintenance.scheduled — a maintenance was announced
  • maintenance.started — it has begun
  • maintenance.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.