Skip to main content

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 2xx within 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-Id header that stays the same across retries, so your endpoint can recognize a delivery it already handled and just answer 2xx again.

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 }
]
}
FieldMeaning
schemaVersion1. Check it.
eventalert.triggered
notificationIdThe alert notification. The same on every retry and for every target of the same firing.
alertThe alert: id, name, message, status (active or inactive) and triggeredAt (UTC)
companyThe alert's company
deviceThe 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.