Skip to main content

Overview

The generic webhook accepts simple JSON from any system that can POST — scripts, CI/CD, internal jobs, tools with no dedicated integration.
The generic webhook does not resolve incidents automatically. It always opens or aggregates. If your tool has a dedicated source type (Grafana, Prometheus, Datadog, CloudWatch, Zabbix, New Relic), use that instead — you get auto-resolution and much better field mapping.

1. Create the alert source

Under Alert sources, create a source of type Generic. Copy the URL and the token.

2. Send the alert

Expected response: 202 Accepted.

Accepted fields

If status is absent, the alert is treated as a trigger. If it is present with a value other than firing or alerting, the alert is accepted with 202 but no incident is created — including for resolved.

Grouping

Repeated sends with the same externalId for the same service are aggregated into the open incident instead of creating duplicates. Use a stable externalId per problem — the job name, the check identifier, the rule key.
If you omit externalId, correlation falls back to a signature computed from the content. Changes to the title or description then produce separate incidents. Send an externalId whenever you can.

Examples

Troubleshooting

The status field probably has a value other than firing or alerting — in which case the alert is accepted and discarded. Send firing or omit the field.
The externalId is changing between sends (for example, by including a timestamp). Use a stable identifier per problem.
The service field does not match any service in the organization, or the service has no responsible team with an active schedule.
From the dashboard or the app. The generic webhook does not auto-resolve.

Full payload reference