Webhook Notifications
Webhooks allow you to build custom integrations that react instantly when Pinger detects an issue. Instead of constantly polling the API, Pinger will send a POST request to your configured endpoint as soon as an incident begins or resolves.
Supported Events
Pinger dispatches webhook events for two primary scenarios:
- Incident Created: A monitor failed continuously and exceeded its failure threshold (or missed a heartbeat).
- Incident Resolved: A monitor successfully recovered.
Payload Structure
When a webhook is triggered, Pinger sends a JSON payload containing details about the incident and the monitor.
{
"event": "incident_created",
"monitor": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "Production Database",
"target": "tcp://db.pingr.site:5432"
},
"incident": {
"id": "11223344-5566-7788-9900-aabbccddeeff",
"startedAt": "2026-09-20T12:00:00Z",
"cause": "Connection Refused (ECONNREFUSED)"
}
}When the incident resolves, the same structure is dispatched but the event will be incident_resolvedand the incident block will contain a resolvedAt timestamp.
Security & SSRF Mitigation
Pinger employs strict Server-Side Request Forgery (SSRF) mitigations on all webhook dispatchers. When configuring a webhook URL, ensure it is a public endpoint.
Blocked Destinations: Webhooks targeting localhost, 127.0.0.1, internal network CIDRs, or Cloud Metadata IPs (e.g. 169.254.169.254) will be blocked at the network level and silently dropped.
Timeouts & Retries
Webhook dispatches have a strict 5-second timeout. If your server takes longer than 5 seconds to respond, the delivery is considered failed. Pinger currently operates a best-effort delivery mechanism and does not implement exponential backoff retries for failed webhooks. It is recommended to acknowledge the webhook with a 200 OK immediately and process the payload asynchronously.