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 permission to configure notifications (Operator, Approver or Owner) to add and test the channel.
Set it up
- In incident.io, create a custom HTTP alert source and copy its URL and token.
- In the downpipes console, open Notifications, choose Add a channel and pick Webhook (generic HTTPS POST). Adding a channel needs permission to configure notifications, so an Operator, Approver or Owner can add one.
- 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.
- In incident.io, write the transform that maps downpipes’
downpipe-event-v1body (the event name, severity, downpipe id and name, and a one-line detail) to the alert fields. - Set the dedup key to a dot-pointer path at the
dedupKeyfield, so repeated events for one downpipe and event land on the same alert. An account-level event has one key for each event name, so repeated alerts of one account-level event group onto one open alert, and no recovery closes it. Before engine 0.3.6, the body has nodedupKey, so point the dedup key at a stable field such as the downpipe id. - Choose Test on the channel to confirm delivery without sending real alert content, then check the alert arrived in incident.io.
Good to know
- Resolve on the
recoveredfield. From engine 0.3.6, a recovery carriesrecovered: trueand the samededupKeyas the trigger it clears, so set the transform’s status toresolvedwhenrecoveredistrueand tofiringin all other cases. Do not key the status oneventorseverity. A recovery reuses the sameeventname and the sameseverityas the trigger: a cleared backup failure arrives as anotherbackup-failureatcritical, so a transform keyed on those fields reads it as another firing. Before engine 0.3.6, the body has norecoveredordedupKeyfield, and only thedetailwording tells a recovery from a trigger. The canary stream names its recovery in the event field ascanary-recoveredon every version. That event carries norecoveredfield, and itsdedupKeyisaccount:canary-recovered, not the key of thecanary-deadalert. So this mapping does not close acanary-deadalert. Close it by hand. When you do not want to maintain a transform, route to the PagerDuty, Jira Service Management / Opsgenie or ServiceNow channel alongside incident.io: each of those sends a real resolve, close-by-alias or severity-0 clear on recovery with no mapping from you. - The webhook channel sends only the JSON body. downpipes posts the
downpipe-event-v1body 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 .