Integrations

Webhooks

Send custom HTTP requests when service status changes

Webhooks let you send HTTP requests to any endpoint when a monitored service changes status. Use them to trigger automations, update dashboards, create tickets, or integrate with any tool that accepts HTTP requests.

Paid Plan Required

Webhooks are available on the Hobby, Startup, and Pro plans. Upgrade your plan to get started.

Quick Start

1

Add a Webhook

  1. Go to statusfield.com/integrations
  2. Click the Webhooks card
  3. Click Add Webhook
  4. Enter a name (e.g., "PagerDuty", "Jira Automation")
  5. Enter the webhook URL (must be HTTPS)
  6. Select the HTTP method (POST, GET, PUT, PATCH, or DELETE)
  7. Optionally configure authentication and custom headers
  8. Click Add Webhook

HTTPS Required

Webhook URLs must use HTTPS. HTTP URLs are not accepted for security reasons.

2

Configure Authentication (Optional)

If your endpoint requires authentication, select one:

  • None — No authentication header sent
  • Bearer Token — Sends Authorization: Bearer <your-token> header
  • Basic Auth — Sends Authorization: Basic <your-credentials> header

Your authentication credentials are encrypted and stored securely.

3

Add Custom Headers (Optional)

You can add custom HTTP headers in JSON format:

{
  "X-Custom-Header": "value",
  "X-Source": "statusfield"
}
4

Test It Out

  1. Click the menu (⋮) next to your webhook integration
  2. Select Test Webhook
  3. Verify that your endpoint received the test request
5

Configure Notifications

When adding a monitor for a service:

  1. Go to statusfield.com/notifications
  2. Find the service in the list
  3. Configure when you want to receive notifications (status by column)
  • On any status change
  • On maintenance status
  • On degraded status
  • On major outage status
  • On partial outage status

All statuses will notify you when the component went back to operational status.

Webhook Payload

When a status change occurs, Statusfield sends a JSON payload to your endpoint. Here's the full structure:

{
  "id": "unique-delivery-id",
  "event": "status_change",
  "level": "component",
  "service": {
    "name": "GitHub",
    "slug": "github",
    "lastCheckedAt": "2026-01-30T10:15:30Z"
  },
  "component": {
    "id": "component-id",
    "name": "API Requests",
    "status": "Degraded",
    "statusCode": "DEGRADED",
    "previousStatus": "Operational",
    "previousStatusCode": "OPERATIONAL"
  },
  "affectedComponents": [
    {
      "id": "child-id",
      "name": "REST API",
      "status": "Degraded",
      "statusCode": "DEGRADED",
      "previousStatus": "Operational",
      "previousStatusCode": "OPERATIONAL"
    }
  ],
  "statusChange": {
    "from": "Operational",
    "fromCode": "OPERATIONAL",
    "to": "Degraded",
    "toCode": "DEGRADED",
    "direction": "worsening",
    "timestamp": "2026-01-30T10:15:35Z"
  },
  "url": "https://statusfield.com/services/github"
}

Payload Fields

FieldDescription
idUnique delivery identifier
eventAlways "status_change"
level"service" for top-level changes, "component" for component changes
serviceService name, slug, and last check time
componentAffected component with current and previous status
affectedComponentsArray of child components that changed
statusChange.direction"worsening", "improving", or "unchanged"
statusChange.timestampISO 8601 timestamp of the change
urlLink to the service page on Statusfield

Status Codes

Status CodeHuman-Readable
OPERATIONALOperational
DEGRADEDDegraded
PARTIAL_OUTAGEPartial Outage
MAJOR_OUTAGEMajor Outage
MAINTENANCEMaintenance
UNKNOWNUnknown

HTTP Methods

Choose the HTTP method that matches your endpoint:

  • POST (default) — Standard for webhook receivers. Payload sent as JSON body.
  • PUT — Payload sent as JSON body.
  • PATCH — Payload sent as JSON body.
  • GET — No request body sent. Use for simple ping-style endpoints.
  • DELETE — No request body sent.

Content-Type

For POST, PUT, and PATCH requests, the payload is sent as application/json.

Delivery & Retries

  • Notifications are sent within seconds of a status change
  • Failed deliveries are retried up to 3 times with increasing delays
  • Your endpoint should respond with a 2xx status code to confirm receipt
  • Requests time out after 10 seconds
  • HTTP redirects are not followed for security reasons

Use Cases

Webhooks are flexible enough for many integrations:

  • Incident management — Create tickets in PagerDuty, Opsgenie, or ServiceNow
  • Project management — Post to Jira, Linear, or Asana when services go down
  • Custom dashboards — Feed status data into Grafana or Datadog
  • Automation — Trigger Zapier, Make, or n8n workflows
  • Internal tools — Update your own systems with real-time status data
  • Chat tools — Send to Microsoft Teams, Telegram, or any chat with an incoming webhook

Managing Webhooks

Edit or Remove

  1. Open statusfield.com/integrations > Webhooks
  2. Click the menu (⋮) next to the integration
  3. Select Edit to update the URL, method, authentication, or headers
  4. Select Delete to remove the integration

Warning

Deleting a webhook integration removes all associated notification rules. This cannot be undone.

Troubleshooting

Not Receiving Webhook Notifications?

Common issues and solutions:

1. Endpoint Returns Non-2xx Status

  • Your endpoint must return a 2xx status code (e.g., 200, 201, 204)
  • Check your server logs for errors
  • Verify the endpoint is accessible from the internet

2. HTTPS Certificate Issues

  • Ensure your SSL certificate is valid and not expired
  • Self-signed certificates may cause delivery failures

3. Authentication Errors

  • Verify your Bearer token or Basic Auth credentials are correct
  • Check that the authentication method matches what your endpoint expects

4. Timeout

  • Webhook requests time out after 10 seconds
  • Make sure your endpoint responds quickly — process the payload asynchronously if needed

5. Firewall or IP Restrictions

  • Ensure your endpoint accepts requests from external sources
  • Webhook requests originate from Cloudflare's IP ranges

Security

  • All webhook URLs must use HTTPS
  • Authentication credentials are encrypted in our database
  • Custom headers are encrypted in our database
  • HTTP redirects are rejected to prevent URL hijacking
  • Each delivery has a unique id for deduplication

Need Help?

Contact our support team at [email protected]