Grafana integration
Page your on-call engineer from Grafana Alerting
Add Oncallz as a webhook contact point in Grafana Alerting and firing alerts page whoever is on call. With one small change to the contact point title, Grafana's resolved notification also resolves the incident.
Set up Grafana → Oncallz in a few minutes
- 1 In Oncallz, open Integrations, pick the team, name the integration "Grafana", set Duplicate events to "Group by title" and click Create.
- 2 Copy the Inbound URL of the new integration.
- 3 In Grafana, go to Alerts & IRM → Alerting → Contact points, click + Add contact point, choose the Webhook integration and paste the Oncallz URL.
- 4 Under the optional webhook settings, set Title to a template that does not include the firing count, such as {{ .CommonLabels.alertname }} {{ .CommonLabels.instance }}. Save the contact point.
- 5 Point a notification policy (or the alert rule's contact point) at it and use the contact point's Test button to check the incident in Oncallz.
The Grafana fields Oncallz reads
{
"status": "firing",
"state": "alerting",
"title": "HighMemoryUsage db-1",
"message": "**Firing** ...",
"groupKey": "{}:{alertname=\"HighMemoryUsage\"}",
"alerts": [ ... ]
}
title becomes the incident title and status or state decides trigger versus resolve. Oncallz has no Grafana-specific parser; everything else, including every label and annotation, is kept on the incident as the raw payload.
Why change the contact point title?
Grafana's default title looks like "[FIRING:2] HighMemoryUsage" and becomes "[RESOLVED] HighMemoryUsage" when the alert clears.
Because Oncallz groups Grafana alerts by title, a title that changes with the state or the alert count opens a new incident each time and the resolved notification cannot find the incident to close. A title built only from labels stays the same from firing to resolved.
Does it auto-resolve?
Yes, once the title is stable. Grafana sends "status": "resolved" (and "state": "ok") when the alert group clears, and Oncallz resolves the open incident with the same title. Leave "Disable resolved message" off.
If you keep Grafana's default title, resolved notifications are rejected and incidents must be resolved by hand.
How is severity set?
The default Grafana payload has no top-level severity field, so every Grafana incident is paged as critical.
To control severity, route different severities to separate Oncallz integrations or, where available, use the webhook contact point's Custom Payload option to add a severity field from a label.
Grafana's documentation notes that Custom Payload is not yet generally available in Grafana Cloud (September 2026).
How are duplicates grouped?
By title. While an incident with that title is open, repeat notifications are added to its timeline and raise its occurrence count without paging again.
Put the labels that tell alerts apart, such as instance or cluster, into the title template; otherwise two different hosts share one incident and the first one to resolve closes it.
What does the on-call engineer receive?
A page on the channels set for critical (or your chosen severity), the incident title from your template, and the full Grafana payload with labels, annotations, values and links to the dashboard and silence page.
Grafana's message text is not copied into the description, so put anything essential in the title or read it from the payload.
Frequently asked questions
Does Oncallz have a Grafana plugin?
No plugin is needed. Grafana Alerting's built-in webhook contact point posts to the Oncallz inbound URL, and Oncallz reads the title and status fields from Grafana's standard payload.
Set a stable title template on the contact point and use "Group by title" on the Oncallz integration so resolved notifications can close incidents.
Why are my Grafana alerts not resolving in Oncallz?
Almost always because the contact point still uses Grafana's default title, which changes from "[FIRING:1] ..." to "[RESOLVED] ...". Oncallz matches Grafana alerts by title, so the resolved message cannot find the open incident.
Set the Title to a template built from labels only, such as the alert name and instance.
Why is every Grafana incident critical?
Grafana's default webhook body has no top-level severity, and Oncallz treats a missing severity as critical so nothing is under-paged.
Send warnings to a separate integration whose team or schedule you page more gently, or add a severity field with the contact point's Custom Payload option where your Grafana version offers it.
Can I use Grafana and Prometheus Alertmanager together?
Yes. They are separate integrations with separate URLs, and each can page the same team or different teams. If Grafana is only visualising Prometheus data and Alertmanager already sends the alerts, connect one of them so the same problem is not paged twice.
Related pages
- Prometheus Alertmanager Add Oncallz as an Alertmanager webhook receiver and page your on-call engineer for firing Prometheus alerts, with dedupe and escalation.
- Phone & SMS alerting Page on-call engineers by phone call, SMS, push and email by severity — and let them acknowledge or escalate from the phone keypad.
- Status page A public status page with components, 90-day uptime, incident updates and email or Slack subscribers. Alerts prepare drafts; people publish them.
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.