Send Vigil alerts to incident.io
incident.io can create alerts from any tool through an HTTP alert source. To connect Vigil by PuzariCloud, create an HTTP source in incident.io, paste its URL and secret into a Vigil Webhook channel and use the body template below. A failed check fires an alert, the recovery resolves it, and all events of one monitor update the same alert. It works on every Vigil plan, including Free.
Set it up
- In incident.io, create an HTTP alert source. Go to Alerts, add a new alert source and choose HTTP. incident.io shows a URL like https://api.incident.io/v2/alert_events/http/<source id> and a secret token. Keep the token private, like a password.
- In Vigil, add a Webhook channel. Go to Alerts → Channels, choose Webhook, paste the URL and keep the method on POST. Under custom headers add Authorization: Bearer <your secret token>. (incident.io also accepts the token in the URL as ?token=<token>.)
- Paste this body template into Body template:
{"title": "Vigil: {{monitor_name}}", "status": "{{alert_status}}", "deduplication_key": "{{dedup_key}}", "description": "{{message}}", "source_url": "{{link}}", "metadata": {"source": "vigil", "event": "{{event}}", "monitor": "{{monitor_name}}", "monitor_id": "{{monitor_id}}", "url": "{{monitor_url}}", "status_code": "{{status_code}}", "at": "{{at}}"}}{{alert_status}} becomes resolved on the recovery alert and firing on every other alert. {{dedup_key}} is vigil-monitor-<monitor id>, the same for every event of one monitor. - Send a test. Press Send test on the channel. An alert called "Vigil: Test monitor" should appear in incident.io; resolve it by hand, it was only the check.
- Route it. In incident.io, add the source to an alert route so alerts page the right on-call schedule or open an incident. The metadata fields (event, monitor, url, status code) can be used as alert attributes and in route conditions.
- Attach the channel to monitors in Vigil: on each monitor, or in a notification policy.
What incident.io receives
These are rendered by the same code that sends real alerts, for a monitor called "Checkout API":
{
"title": "Vigil: Checkout API",
"status": "firing",
"deduplication_key": "vigil-monitor-42",
"description": "HTTP 503 from https://shop.example.com/api/health",
"source_url": "https://puzaricloud.in/app/monitors/42",
"metadata": {
"source": "vigil",
"event": "down",
"monitor": "Checkout API",
"monitor_id": "42",
"url": "https://shop.example.com/api/health",
"status_code": "503",
"at": "2026-10-20T09:41:00+00:00"
}
}{
"title": "Vigil: Checkout API",
"status": "resolved",
"deduplication_key": "vigil-monitor-42",
"description": "Recovered after 7 minutes.",
"source_url": "https://puzaricloud.in/app/monitors/42",
"metadata": {
"source": "vigil",
"event": "up",
"monitor": "Checkout API",
"monitor_id": "42",
"url": "https://shop.example.com/api/health",
"status_code": "",
"at": "2026-10-20T09:41:00+00:00"
}
}incident.io requires title and status (firing or resolved), and new HTTP sources also require deduplication_key. description supports Markdown, and source_url links back to the check in Vigil.
Things to know
- Renaming a monitor changes the title but not the deduplication key, so the recovery still resolves the right alert.
- The integration is one way: resolving an alert in incident.io does not change anything in Vigil.
- Vigil checks run from one location in Germany (plus private locations you host). incident.io decides who is paged; Vigil only delivers the alert.
FAQ
Does the recovery resolve the alert in incident.io?
Yes. The recovery alert sends "status": "resolved" with the same deduplication_key as the failure, so incident.io resolves that alert.
Will repeated alerts create several alerts?
No. incident.io creates one alert per deduplication_key for a source. The template uses vigil-monitor-<monitor id>, so all events of one monitor update the same alert.
Do warnings fire too?
Yes. Every alert this channel sends that is not a recovery is sent as firing, including slow-response or SSL warnings. If you only want outages in incident.io, attach the channel to the monitors that matter, or route by the metadata event field in your alert route.
Is there a native Vigil alert source in incident.io?
Not today. The HTTP alert source is incident.io's own generic way in, and it supports everything this guide needs.
Which Vigil plan do I need?
Any plan, including Free. Webhook channels and body templates are on every plan.
Support
Questions about this setup: hello@puzaricloud.in or puzaricloud.in/contact.
Sources
- incident.io docs: alert sources (read 20 October 2026)
- incident.io API: create an alert event using an HTTP source (fields, firing and resolved, token) (read 20 October 2026)
incident.io is a trademark of its owner. Vigil by PuzariCloud is not affiliated with incident.io. See also: PagerDuty guide.