Browse the docs

Event reference

All thirteen event types, when each fires, and the shape of its data.

On this page
  1. incident.created
  2. incident.updated
  3. incident.resolved
  4. maintenance.scheduled
  5. maintenance.reminder
  6. maintenance.started
  7. maintenance.completed
  8. component.status_changed
  9. monitor.down
  10. monitor.up
  11. monitor.ssl_expiring
  12. subscriber.created
  13. page.published

Each event arrives in the standard envelope with type set to the name below and data holding the fields listed. Numbers are integers, times are ISO 8601 in UTC, and Markdown fields are the raw text as entered.

TypeFires when
incident.createdAn incident is created and visible, or a draft is published. Also fired when a monitor rule opens an incident.
incident.updatedAn update is posted to an open incident, including status changes that are not a resolution.
incident.resolvedAn update with status resolved is posted, by a person or by a monitor rule on recovery.
maintenance.scheduledA maintenance window is created.
maintenance.reminderA reminder offset is reached before the window starts (24 h and 1 h by default).
maintenance.startedThe window starts, either automatically at its scheduled time or when someone starts it early.
maintenance.completedThe window completes, or is cancelled. A cancellation carries canceled: true.
component.status_changedA component's status changes: a manual override, an incident's component override, or a monitor rule.
monitor.downA monitor reaches its failure threshold and is marked down.
monitor.upA down monitor reaches its recovery threshold and is marked up again.
monitor.ssl_expiringAn SSL monitor crosses the 30, 14, 7 or 1 day mark before its certificate expires. Once per threshold; re-armed after renewal.
subscriber.createdSomeone subscribes to a status page, or is imported. Destinations are never included.
page.publishedA status page is published for the first time (publishing again is a no-op).

incident.created

An incident is created and visible, or a draft is published. Also fired when a monitor rule opens an incident.

incident_idinteger
The incident. Fetch the full timeline with GET /user/incidents/:id.
titlestring
Incident title.
statusstring
investigating, identified, monitoring or resolved.
impactstring
none, minor, major or critical.
update_idinteger
The first update posted with the incident.
body_mdstring
Markdown body of that update.
data
{
  "incident_id": 91,
  "title": "Checkout errors",
  "status": "investigating",
  "impact": "major",
  "update_id": 240,
  "body_md": "We are seeing elevated error rates on checkout and are investigating."
}

incident.updated

An update is posted to an open incident, including status changes that are not a resolution.

incident_idinteger
The incident.
statusstring
The status after this update.
update_idinteger
The update that triggered the event.
body_mdstring
Markdown body of the update.
data
{
  "incident_id": 91,
  "title": "Checkout errors",
  "status": "identified",
  "impact": "major",
  "update_id": 241,
  "body_md": "A stuck queue consumer is the cause. A fix is rolling out."
}

incident.resolved

An update with status resolved is posted, by a person or by a monitor rule on recovery.

incident_idinteger
The incident.
update_idinteger
The resolving update.
body_mdstring
The resolution text.
data
{
  "incident_id": 91,
  "title": "Checkout errors",
  "status": "resolved",
  "impact": "major",
  "update_id": 244,
  "body_md": "Delivery is back to normal. The backlog has drained."
}

maintenance.scheduled

A maintenance window is created.

maintenance_idinteger
The window. Fetch details with GET /user/maintenances.
titlestring
Window title.
statusstring
scheduled at this point.
scheduled_startstring
ISO 8601 start.
scheduled_endstring
ISO 8601 end.
body_mdstring
Markdown description, if any.
data
{
  "maintenance_id": 17,
  "title": "Database upgrade",
  "status": "scheduled",
  "scheduled_start": "2026-09-20T02:00:00.000Z",
  "scheduled_end": "2026-09-20T03:00:00.000Z",
  "body_md": "Expect read-only mode for up to 20 minutes."
}

maintenance.reminder

A reminder offset is reached before the window starts (24 h and 1 h by default).

offset_minutesinteger
How many minutes before the start this reminder fired for.
data
{
  "maintenance_id": 17,
  "title": "Database upgrade",
  "status": "scheduled",
  "scheduled_start": "2026-09-20T02:00:00.000Z",
  "scheduled_end": "2026-09-20T03:00:00.000Z",
  "offset_minutes": 60
}

maintenance.started

The window starts, either automatically at its scheduled time or when someone starts it early.

statusstring
in_progress.
data
{
  "maintenance_id": 17,
  "title": "Database upgrade",
  "status": "in_progress",
  "scheduled_start": "2026-09-20T02:00:00.000Z",
  "scheduled_end": "2026-09-20T03:00:00.000Z"
}

maintenance.completed

The window completes, or is cancelled. A cancellation carries canceled: true.

statusstring
completed, or canceled when the window was called off.
canceledboolean
Present and true only for cancellations.
data
{
  "maintenance_id": 17,
  "title": "Database upgrade",
  "status": "completed",
  "scheduled_start": "2026-09-20T02:00:00.000Z",
  "scheduled_end": "2026-09-20T03:00:00.000Z"
}

component.status_changed

A component's status changes: a manual override, an incident's component override, or a monitor rule.

component_idinteger
The component.
namestring
Component name.
fromstring
Previous status.
tostring
New status: operational, degraded_performance, partial_outage, major_outage or under_maintenance.
sourcestring
manual, monitor or incident.
data
{
  "component_id": 21,
  "name": "REST API",
  "from": "operational",
  "to": "major_outage",
  "source": "monitor"
}

monitor.down

A monitor reaches its failure threshold and is marked down.

monitor_idinteger
The monitor.
namestring
Monitor name.
errorstring
The failing check's error, for example HTTP 503, TCP connect timeout or NXDOMAIN: shop.example.com does not exist.
data
{
  "monitor_id": 8,
  "name": "Checkout API",
  "error": "HTTP 503"
}

monitor.up

A down monitor reaches its recovery threshold and is marked up again.

monitor_idinteger
The monitor.
namestring
Monitor name.
errornull
Always null on recovery.
data
{
  "monitor_id": 8,
  "name": "Checkout API",
  "error": null
}

monitor.ssl_expiring

An SSL monitor crosses the 30, 14, 7 or 1 day mark before its certificate expires. Once per threshold; re-armed after renewal.

monitor_idinteger
The SSL monitor.
targetstring
The host that was checked.
days_leftinteger
Days until expiry at the time of the check.
valid_tostring
ISO 8601 expiry of the certificate.
threshold_daysinteger
Which reminder this is: 30, 14, 7 or 1.
data
{
  "monitor_id": 2,
  "name": "status.example.com certificate",
  "target": "https://status.example.com",
  "days_left": 13,
  "valid_to": "2026-09-27T23:59:59.000Z",
  "threshold_days": 14
}

subscriber.created

Someone subscribes to a status page, or is imported. Destinations are never included.

subscriber_idinteger
The subscriber.
channelstring
email, sms, telegram, slack, discord, teams or webhook.
data
{
  "subscriber_id": 1284,
  "channel": "email"
}

page.published

A status page is published for the first time (publishing again is a no-op).

page_idinteger
The page.
data
{
  "page_id": 4
}