Generic Webhook

Send alerts to AlertFlow from any tool that can make an HTTPS POST request.

Overview

The generic webhook integration accepts JSON payloads and maps them to AlertFlow's standard alert format using configurable field mappings. If your tool isn't natively supported, this is your starting point.

Ingest URL

POST https://app.yourdomain.com/api/inbound/webhook/<your-token>
Content-Type: application/json

Your token is unique per integration. Create an integration in the dashboard to get yours.

Standard payload format

If your tool can send custom JSON, use this format for zero-configuration ingestion:

{
  "title": "High CPU usage on WEB-01",
  "severity": "high",
  "status": "firing",
  "source": "custom-monitor",
  "description": "CPU usage at 94% for 5 minutes",
  "fingerprint": "web01-cpu-high",
  "dedup_key": "web01-cpu",
  "labels": {
    "host": "WEB-01",
    "client": "Acme Corp",
    "region": "us-east-1",
    "env": "production"
  },
  "annotations": {
    "runbook": "https://wiki.example.com/runbooks/high-cpu",
    "dashboard": "https://grafana.example.com/d/abc123"
  }
}

Field reference

titlestringbodyrequired

Human-readable alert title. Shown prominently in the dashboard and notifications.

severitystringbodyrequired

One of: critical, high, medium, low, info. Case-insensitive.

statusstringbody

firing (default), resolved, acknowledged, or suppressed. Send resolved to auto-resolve an existing alert by fingerprint.

sourcestringbody

The originating system: nagios, custom-script, cloudwatch, etc.

descriptionstringbody

Full alert body / description. Displayed in the alert detail panel and included in email notifications.

fingerprintstringbody

Explicit deduplication key. Alerts with the same fingerprint and status firing are deduplicated. Omit to let AlertFlow auto-generate one from title + source.

dedup_keystringbody

Alternative to fingerprint. AlertFlow treats these as identical.

labelsobjectbody

Key-value metadata attached to the alert. Shown in the detail panel, available in workflow conditions. Common keys: host, client, region, env, service.

annotationsobjectbody

Key-value metadata, typically links — runbook, dashboard, ticket. Shown in the alert detail panel.

Custom field mappings

If you can't control the payload format, configure field mappings in the integration settings:

  1. Open the integration in the AlertFlow dashboard.
  2. Click Edit → Field Mappings.
  3. Map your payload's field paths to AlertFlow fields using dot-notation: data.alert.nametitle.
  4. Set up a severity map to translate your tool's priority values to AlertFlow levels.

Example — mapping a Nagios-style payload:

{ "host_name": "WEB-01", "state": "CRITICAL", "output": "CPU CRITICAL 94%" }
Source pathAlertFlow fieldNotes
outputtitleAlert title
stateseverityVia severity map
host_namelabels.hostAvailable as a label

Severity map:

Source valueAlertFlow severity
CRITICALcritical
WARNINGhigh
UNKNOWNmedium
OKinfo

Auto-resolve

AlertFlow can auto-resolve a firing alert when it receives a payload with status: "resolved" and a matching fingerprint or dedup_key:

curl -X POST https://app.yourdomain.com/api/inbound/webhook/YOUR_TOKEN \
  -H "Content-Type: application/json" \
  -d '{"fingerprint":"web01-cpu-high","status":"resolved","title":"High CPU on WEB-01"}'

Code examples

curl -X POST https://app.yourdomain.com/api/inbound/webhook/YOUR_TOKEN \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Disk space critical on DB-01",
    "severity": "critical",
    "source": "cron-monitor",
    "labels": {"host": "DB-01", "client": "Contoso"}
  }'

Response codes

CodeMeaning
200Alert received and queued
202Alert accepted (async processing)
400Malformed JSON or missing required fields
401Invalid or disabled ingest token
429Rate limit exceeded — retry after Retry-After seconds