Skip to content
downpipes docs

Send downpipes alerts to incident.io

incident.io takes alerts through a custom HTTP alert source. There is no dedicated incident.io channel here; you add a generic webhook channel pointed at the alert source, and map downpipes’ event JSON with incident.io’s transform.

What you need

  • An incident.io account where you can create a custom HTTP alert source and read its URL and token.
  • Access to the downpipes console with the notify-config capability (Operator, Approver or Owner) to add and test the channel.

Set it up

  1. In incident.io, create a custom HTTP alert source and copy its URL and token.
  2. In the downpipes console, open Notifications, choose Add a channel and pick Webhook (generic HTTPS POST). Adding a channel needs the notify-config capability, so an Operator, Approver or Owner can add one.
  3. Paste the alert source URL into the HTTPS URL field. It must be https and carry no embedded credentials. Name the channel and save it, then a rule routes events to it.
  4. In incident.io, write the transform that maps downpipes’ downpipe-event-v1 body (the event name, severity, downpipe id and name, and a one-line detail) to the alert fields.
  5. Set the dedup key to a dot-pointer path at a stable field such as the downpipe id, so repeated events for one downpipe land on the same alert.
  6. Choose Test on the channel to confirm delivery without sending real alert content, then check the alert arrived in incident.io.

Good to know

  • The dedup key path drives correlation and resolve. incident.io correlates on the dedup key you point at a stable field, and resolves the alert when it later sees a status of resolved on that same key. Point the key at the downpipe id and derive the status in your transform, because a recovery arrives as an ordinary event on the generic webhook rather than a dedicated resolve. The resolve payload has no dedicated status field: a recovery event has the same downpipe-event-v1 shape as any other event (kind, at, event, severity, an optional downpipe, detail); downpipes does not add a status field. The event name itself carries the recovery signal, for example canary-recovered, or a later backup-success following a backup-failure, so your transform reads the event field and sets incident.io’s resolved status from it rather than looking for a status value in the payload.
  • The webhook channel sends only the JSON body. downpipes posts the downpipe-event-v1 body to the URL and adds no auth header of its own, so give incident.io the token in a form its HTTP alert source accepts, and confirm the exact URL and token placement in the incident.io console rather than assuming it here.

Last updated .