Skip to content

11.2What we send

For each alert, obsrvly sends one POST request to each attached webhook channel. Several alerts at once still mean one request per alert. The request has Content-Type: application/json, plus any headers you added.

The payload (the JSON body of one request) is a single flat object with these fields:

FieldTypeSent withMeaning
eventtextbothalert.fire or alert.resolved (11.3).
alert_idtextbothThe incident: one stretch of time a monitor is failing. It is the same on the first alert, reminders and the recovery.
monitor_idtextbothThe monitor. Always sent. On a test it is an empty string.
monitor_nametextbothThe monitor's name.
monitor_urltextbothWhat the monitor checks: its URL, host or domain.
statustextfiredown or degraded.
consecutive_failuresnumberfireHow many checks had failed in a row when the alert fired.
locationtextfireThe region the failing check ran from, such as us-west or eu-west. Heartbeats show inbound.
last_errortextfireThe check's error message.
fired_attimefireWhen the incident opened. The same on reminders.
reminder_numbernumberfireOnly on a reminder: 1, 2, and so on. Missing on the first alert.fire.
resolved_attimeresolvedWhen the monitor recovered.
downtime_secondsnumberresolved, remindersOn alert.resolved: how long the monitor was down. On a reminder: how long so far.
fire_suppressedtrue/falseresolvedtrue when no alert.fire was sent for this incident, because the monitor was muted or in a maintenance window.
  • Times are in UTC, in RFC 3339 format, such as 2026-09-08T14:27:23Z.
  • Apart from monitor_id, obsrvly leaves out a field when it has no value. A missing field is not an error. For example, fire_suppressed is missing unless it is true.
  • obsrvly may add new fields. Ignore fields you do not know.

Last updated