Prometheus Alertmanager integration
Page your on-call engineer from Prometheus Alertmanager
Add Oncallz as an Alertmanager webhook receiver and firing alert groups page whoever is on call. With Alertmanager's custom webhook payload you get a real title and severity, one incident per alert group, and automatic resolution when the group resolves.
Set up Alertmanager → Oncallz in a few minutes
- 1 In Oncallz, open Integrations, pick the team, name the integration "Alertmanager" and click Create. The payload below sends its own dedup_key, so the Duplicate events setting does not matter.
- 2 Copy the Inbound URL of the new integration.
- 3 Add a receiver with a webhook_configs entry to alertmanager.yml, as below. The payload option needs Alertmanager 0.32.0 or newer (released April 2026).
- 4 Route the alerts that should page to that receiver, for example with a matcher on severity or team.
- 5 Reload Alertmanager and fire a test alert, for example with amtool, to check the incident in Oncallz.
alertmanager.yml
receivers:
- name: oncallz
webhook_configs:
- url: https://oncallz.com/api/ingest/YOUR_ROUTING_KEY
send_resolved: true
payload:
summary: '{{ .CommonLabels.alertname }}: {{ .CommonAnnotations.summary }}'
description: '{{ .CommonAnnotations.description }}'
severity: '{{ .CommonLabels.severity }}'
source: '{{ .CommonLabels.instance }}'
status: '{{ .Status }}'
dedup_key: '{{ .Receiver }}/{{ .GroupLabels.SortedPairs.Values | join "/" }}'
Alertmanager documents the payload option as advanced and unsupported by its team. The dedup_key is built from the group labels, so it is the same for firing and resolved notifications of one alert group.
How is severity set?
From your severity label. critical, error, warning and info map directly; high, medium, low and similar synonyms are translated; any other value, or a missing label, becomes critical.
The label must be common to the whole group to appear in .CommonLabels, so grouping by severity (or routing each severity to its own receiver) gives the most accurate result.
How are duplicates grouped?
One Alertmanager group is one Oncallz incident. Repeat notifications, and notifications where the set of firing alerts changes, carry the same dedup_key and are added to the open incident's timeline, raising its occurrence count, without paging again.
Does it auto-resolve?
Yes. With send_resolved on (the default for webhooks), Alertmanager sends "status": "resolved" once every alert in the group has resolved. Oncallz reads that as a resolve and closes the incident with the same dedup_key.
While any alert in the group is still firing, the status stays "firing" and the incident stays open.
What about older Alertmanager versions?
Before 0.32.0, Alertmanager sends a fixed body that Oncallz cannot map well: it has no top-level title or severity, so every incident is titled "Incident" and paged as critical.
The "status": "resolved" message is understood, but it can only find an incident if the integration groups by title, and then every alert shares the one "Incident".
If you cannot upgrade, give each receiver its own URL with fixed fields in the query string, for example ?summary=Database%20alerts&severity=warning, and set the integration to "Group by title". You then get one incident per receiver that resolves when a group resolves.
The full Alertmanager body, with every label and annotation, is still kept on the incident.
Frequently asked questions
Does Oncallz have a native Prometheus integration?
Oncallz receives Prometheus alerts through Alertmanager's webhook receiver; there is no Prometheus-specific parser. With Alertmanager 0.32.0 or newer you use the payload option to send summary, severity, status and dedup_key, which Oncallz reads directly.
That gives accurate titles and severities, one incident per alert group, and automatic resolution.
Will resolved alerts close the Oncallz incident?
Yes. Alertmanager sends status "resolved" when all alerts in a group have resolved, and Oncallz resolves the incident with the matching dedup_key. Keep send_resolved enabled; it is the default for webhook receivers.
If only some alerts in the group recover, the group is still firing, so the incident stays open until the last one clears.
Which label controls severity?
Whatever you put in the payload's severity field; the example uses the severity label. Oncallz understands critical, error, warning and info, plus synonyms such as high, medium, low, warn and fatal. Unknown values are treated as critical so nothing is under-paged.
Each severity then follows your channel settings for push, SMS, phone call and email.
Can different Prometheus alerts page different teams?
Yes. Each Oncallz integration belongs to one team and has its own URL. Create an integration per team, add one Alertmanager receiver per URL, and use your routing tree to send each team's alerts to its receiver.
The same approach separates production from staging if only production should wake people up.
Related pages
- Grafana Point a Grafana Alerting webhook contact point at Oncallz and turn alert rules into on-call pages by phone, SMS or push.
- On-call scheduling Build daily, weekly or custom on-call rotations with automatic handoffs and overrides, so every alert reaches whoever is on call right now.
- Escalation policies Multi-step escalation that climbs from the on-call engineer to the team and then leads, paging until someone acknowledges or the policy runs out.
Ready when the pager goes off.
Create your workspace in minutes. Free to start, no credit card — $4 per user a month when you’re ready.