Webhook payload
This page is for whoever builds the receiving side of a Webhook channel: your own service, a Power Automate flow or a Logic App. It describes what Capture sends there when an alert fires.
The basics
- Capture calls the connection's URL with its method and its authentication, so your endpoint can check the API key, token or header you configured on the connection.
- Answer with any
2xxwithin 10 seconds. Do the real work after answering. A slower answer counts as a timeout and the delivery is retried later. - Delivery is at-least-once: when an answer gets lost, the same delivery is sent again. Every call
carries an
X-Capture-Delivery-Idheader that stays the same across retries, so your endpoint can recognize a delivery it already handled and just answer2xxagain.
The alert event
When a linked alert fires, the webhook receives:
{
"schemaVersion": 1,
"event": "alert.triggered",
"notificationId": 55811,
"alert": {
"id": 1042,
"name": "Oven 3 high temp",
"message": "Temperature above 250 °C",
"status": "active",
"triggeredAt": "2026-09-24T08:14:00Z"
},
"company": { "id": 7, "name": "Contoso Field Service" },
"device": { "id": 77, "name": "PLC-Oven3" },
"conditions": [
{ "measurement": "oven", "variable": "temp", "value": 263.4 }
]
}
| Field | Meaning |
|---|---|
schemaVersion | 1. Check it. |
event | alert.triggered |
notificationId | The alert notification. The same on every retry and for every target of the same firing. |
alert | The alert: id, name, message, status (active or inactive) and triggeredAt (UTC) |
company | The alert's company |
device | The primary device, or null. One notification can group alerts of several devices, the payload then describes the primary one. |
conditions[] | The conditions that triggered: measurement, variable and the value |
Fields may be added within schemaVersion 1, so ignore fields you don't know. A field is only renamed
or removed under a new schemaVersion. There is no event for "resolved".
Test messages
The Send test button on a channel delivers a body with event: notification.test and an
X-Capture-Delivery-Id that starts with test-. Handle it by answering 2xx and doing nothing else.