StatusGator Support

Webhook version 3.0

Open navigation

Webhook version 3.0

StatusGator’s webhook version 3.0 supports notifications for monitor status changes, Early Warning Signals, and confirmed outage reports submitted through your status page.

Each payload includes a type field that identifies the event. Use this field to determine how to process the request.

Event types

EventPayload typeWhen it’s sent
Status changesStatusChangeA monitor’s overall status or component status changes.
Early Warning SignalsEarlyWarningSignalStatusGator detects a possible outage before official provider acknowledgment.
User outage reportsOutageReportA report submitted through your board’s status page is confirmed.

New webhooks have all three events enabled by default. Existing webhooks continue receiving status changes and Early Warning Signals. To receive outage reports, enable User outage reports in the webhook’s settings.

Choose which events to receive

  1. Open the board where you want to configure the webhook.
  2. Go to Integrations → Webhook.
  3. Under Event types, select the events you want to receive.
  4. Save your settings.

For initial setup instructions, see Connect StatusGator to Webhooks.

Version compatibility: Outage report events always use the v3 payload format, regardless of the version selected in your webhook settings.

Early Warning Signal payload

An EarlyWarningSignal event notifies you of a possible outage detected by StatusGator.

{
  "type": "EarlyWarningSignal",
  "recorded_at": "2025-01-29T20:54:48Z",
  "service": {
    "id": "M1xKnyloHR",
    "name": "Resideo",
    "slug": "resideo",
    "home_page_url": "<https://resideo.com>",
    "status_page_url": "<https://status.resideo.com>",
    "icon_url": "<https://favicons.statusgator.com/resideo.png>",
    "landing_page_url": "<https://statusgator.com/services/resideo>"
  },
  "monitor": {
    "id": "uZoM2YK1rn",
    "type": "ServiceMonitor",
    "display_name": "Resideo",
    "icon_url": "<https://favicons.statusgator.com/resideo.png>"
  },
  "board": {
    "id": "X1iMbb5HTm",
    "name": "123"
  },
  "summary": "Service outage",
  "yes_vote_url": "<https://statusgator.com/signal_alerts/UkLWZg9DAJ/confirm>",
  "no_vote_url": "<https://statusgator.com/signal_alerts/UkLWZg9DAJ/deny>"
}

Status change payload

A StatusChange event includes the monitor’s current and previous status, incident information when available, and any reported component status changes.

{
  "type": "StatusChange",
  "recorded_at": "2025-07-17T02:20:45Z",
  "service": {
    "id": "OUQJLhNcSb",
    "name": "OpenAI",
    "slug": "openai",
    "home_page_url": "<https://openai.com>",
    "status_page_url": "<https://status.openai.com>",
    "icon_url": "<https://favicons.statusgator.com/openai.png>",
    "landing_page_url": "<https://statusgator.com/services/openai>"
  },
  "monitor": {
    "id": "UIMPLWZg9D",
    "type": "ServiceMonitor",
    "display_name": "OpenAI",
    "icon_url": "<https://favicons.statusgator.com/openai.png>"
  },
  "board": {
    "id": "Pwg0NMcnNF",
    "name": "Demo 2"
  },
  "status": "up",
  "previous_status": "down",
  "message": "Elevated Error Rate on ChatGPT",
  "details": "We have identified that users are experiencing elevated errors for the impacted services. We are working on implementing a mitigation.",
  "component_status_changes": [
    {
      "group_name": "APIs",
      "name": "Chat",
      "last_status": "up",
      "current_status": "down"
    },
    {
      "group_name": "APIs",
      "name": "Images",
      "last_status": "up",
      "current_status": "down"
    }
  ]
}

Status change and Early Warning Signal fields

The following fields apply to StatusChange and EarlyWarningSignal events. Availability depends on the event and monitor type.

Event fields

FieldDescription
typeIdentifies the event as StatusChange or EarlyWarningSignal.
recorded_atDetection time, expressed as an ISO 8601 UTC timestamp.
summaryFor Early Warning Signals, a short description based on received outage reports.
yes_vote_urlFor Early Warning Signals, the URL for reporting that you are experiencing the issue.
no_vote_urlFor Early Warning Signals, the URL for reporting that you are not experiencing the issue.

Service fields

The service object accompanies service monitor events.

FieldDescription
service.idIdentifier for the provider in StatusGator.
service.nameProvider name in the StatusGator directory.
service.slugURL-compatible identifier for the provider.
service.home_page_urlProvider website, when available.
service.status_page_urlProvider’s official status page, when available.
service.icon_urlDefault provider icon.
service.landing_page_urlProvider’s StatusGator page, where users can view status and report problems.

Board and monitor fields

FieldDescription
boardIdentifies the board associated with the notification.
board.idBoard identifier.
board.nameBoard name.
monitorIdentifies the monitor associated with the notification.
monitor.idMonitor identifier.
monitor.typeMonitor class, such as ServiceMonitor, WebsiteMonitor, or PingMonitor.
monitor.display_nameYour monitor’s display name, including any customization.
monitor.icon_urlYour monitor’s icon, including any customization.
monitor.urlMonitored URL, included for website monitors.
monitor.hostMonitored host, included for ping monitors.

Status change fields

FieldDescription
statusResulting monitor status: up, down, warn, or maintenance.
previous_statusMonitor status before the change.
messageBrief incident title supplied by the provider, when available.
detailsAdditional incident text supplied by the provider, when available.
component_status_changesComponent changes reported for a service monitor, when available.
component_status_changes[].group_nameAffected component’s group.
component_status_changes[].nameAffected component’s name.
component_status_changes[].last_statusComponent status before the change.
component_status_changes[].current_statusComponent status after the change.

User outage report payload

An OutageReport event is sent when an outage report submitted through your board’s status page is confirmed.

The payload includes the affected service, selected components, the reporter’s comment and email address if provided, and their approximate location. The reporter’s IP address is never included.

Outage reports use the same signing secret, custom headers, delivery logs, and retries as your other webhook events.

{
  "type": "OutageReport",
  "recorded_at": "2026-10-15T14:22:09Z",
  "board": {
    "id": "X1iMbb5HTm",
    "name": "Production"
  },
  "id": "lpZ4nQy7Hk",
  "service": {
    "id": "OUQJLhNcSb",
    "name": "OpenAI",
    "icon_url": "<https://favicons.statusgator.com/openai.png>",
    "official": true
  },
  "monitor": {
    "id": "UIMPLWZg9D",
    "name": "OpenAI",
    "monitor_type": "ServiceMonitor",
    "icon_url": "<https://favicons.statusgator.com/openai.png>"
  },
  "summary": {
    "id": "5rX2kQ",
    "description": "Service down"
  },
  "comment": "I can't reach ChatGPT.",
  "email": "reporter@example.com",
  "components": [
    {
      "id": "9aB3cD1eFg",
      "name": "Chat",
      "group_name": "APIs"
    }
  ],
  "location": {
    "city": "Seattle",
    "region": "Washington",
    "country": "United States",
    "country_code": "US"
  },
  "confirmed_at": "2026-10-15T14:22:09.123Z",
  "created_at": "2026-10-15T14:20:51.880Z"
}

User outage report fields

Report fields appear directly in the JSON body, without a separate report wrapper. A nullable field can contain null.

FieldTypeDescription
typestringAlways "OutageReport".
recorded_atstringWhen the report was confirmed, in ISO 8601 UTC format.
boardobjectThe board whose status page received the report.
board.idstringPublic ID of the board.
board.namestringName of the board.
idstringPublic ID of the outage report.
serviceobjectThe service being reported.
service.idstringPublic ID of the service.
service.namestringName of the service.
service.icon_urlstring, nullableURL of the service icon.
service.officialbooleanWhether this is an official StatusGator service.
monitorobject, nullableThe monitor on your board for this service. null if the board no longer has it.
monitor.idstringPublic ID of the monitor.
monitor.namestringDisplay name of the monitor.
monitor.monitor_typestringOne of ServiceMonitor, WebsiteMonitor, PingMonitor, or CustomMonitor.
monitor.icon_urlstring, nullableURL of the monitor icon.
summaryobject, nullableThe problem category, selected by the reporter or derived from their comment.
summary.idstringID of the category.
summary.descriptionstringName of the category, such as "Service down".
commentstring, nullableThe reporter’s description of the problem.
emailstring, nullableThe reporter’s email address, or null if none was provided.
componentsarrayComponents the reporter marked as affected. May be empty.
components[].idstringPublic ID of the component.
components[].namestringName of the component.
components[].group_namestring, nullableThe component’s group.
locationobjectThe reporter’s approximate location, determined from their IP address.
location.citystring, nullableCity.
location.regionstring, nullableRegion or state.
location.countrystring, nullableCountry name.
location.country_codestring, nullableISO 3166-1 alpha-2 country code, such as "US".
confirmed_atstringWhen the report was confirmed, in ISO 8601 format.
created_atstringWhen the report was submitted, in ISO 8601 format.

Differences between event payloads

Check type before reading event-specific fields.

FieldStatus changes and Early Warning SignalsUser outage reports
Monitor namemonitor.display_namemonitor.name
Monitor typemonitor.typemonitor.monitor_type
summaryA string for Early Warning Signals.An object containing id and description, or null.
recorded_atWhen StatusGator detected the event.When the report was confirmed.
monitorDescribes the monitor associated with the event.Can be null if the board no longer has the monitor.

Verify the request signature

Every request includes an X-Signature header containing a hex-encoded HMAC-SHA256 signature. The signature is generated from the raw request body using your webhook’s signing secret.

Verify the signature before processing the payload. Use the raw request body before JSON parsing.

Node.js example

const crypto = require("crypto");

function verify(rawBody, signature, secret) {
  if (
    typeof signature !== "string" ||
    !/^[a-f0-9]{64}$/i.test(signature)
  ) {
    return false;
  }

  const expected = crypto
    .createHmac("sha256", secret)
    .update(rawBody)
    .digest();

  const received = Buffer.from(signature, "hex");

  return crypto.timingSafeEqual(received, expected);
}

Outage report requests also include these headers:

Content-Type: application/json
X-Webhook-Version: 3.0

Retrieve outage reports through the API

You can also fetch confirmed outage reports through API v3:

GET /api/v3/boards/{board_id}/outage_reports?since=2026-10-15T00:00:00Z

The endpoint returns confirmed reports from the board’s status pages, newest first, with 25 reports per page.

The optional since parameter accepts an ISO 8601 timestamp and includes reports confirmed at or after that time. Follow pagination to retrieve all matching reports.

Each report has the same report fields as the webhook payload, without type, recorded_at, and board.

See the API documentation for authentication and request details.

If you have any questions or problems, please email us or submit a ticket.

Did you find it helpful? Yes No

Send feedback
Sorry we couldn't be helpful. Help us improve this article with your feedback.