Make Grafana alerts reach your phone.
When a Grafana alert rule fires, the alert name, severity, and status land on your phone in under a second. See trouble before the dashboard turns red, without keeping a screen open.
From firing panel to lock screen
Grafana already fires a webhook when an alert rule trips. PocketAlert turns it into a push you cannot miss.
A standard contact point
Add PocketAlert as a Webhook contact point in Grafana Alerting. No plugin, no agent, works on Cloud and self-hosted.
Map fields with GJSON
GJSON paths pull alertname, status, and the summary annotation straight out of the Grafana payload into your notification.
Severity and status inline
Show the severity label and firing/resolved status right in the push so a critical alert reads differently from a recovery.
A channel per team
Each application has its own webhook URL, so infra, app, and per-team alerts stay in separate channels.
Sub-second delivery
The firing alert hits your phone in under a second, well before anyone opens the dashboard.
Secret webhook URL
The webhook URL is your application secret over HTTPS. Rotate it whenever you need a fresh endpoint.
Three steps to Grafana alerts on your phone
Create a webhook
Create a PocketAlert webhook with a GJSON message template and copy its receive URL.
Wire up the contact point
Add the URL as a Webhook contact point in Grafana Alerting and attach it to a notification policy.
Map and ship
GJSON maps status, alertname, severity, and the summary into your push. The next firing alert buzzes your phone.
Send Grafana alerts to your phone
1. Create a PocketAlert webhook
On the Webhooks page create a webhook whose GJSON message template reads the Grafana payload. Grafana sends status, a commonLabels block, and an alerts array, so a good template is:
curl -X POST "https://api.pocketalert.app/v1/webhooks" \
-H "Token: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Grafana","default_level":"critical","message":"[%status%] %commonLabels.alertname% (%commonLabels.severity%)\n%alerts.0.annotations.summary%","application_id":"qm47b9pzxzxg"}'
You get an inbound URL like https://p4a.me/wh/1234abcd.
2. Add it as a Webhook contact point
In Grafana go to Alerting → Contact points → Add contact point, choose the Webhook integration, and paste the receive URL:
Integration: Webhook
URL: https://p4a.me/wh/1234abcd
Method: POST
Attach the contact point to a notification policy so matching alerts route to it. Grafana posts its standard JSON; the GJSON paths above pull status, commonLabels.alertname, commonLabels.severity, and alerts.0.annotations.summary into the push.
3. Fire a test
Use the contact point Test button. A firing alert arrives as [firing] HighCPU (critical); when it clears, status flips to resolved.
The webhook settings docs cover every GJSON path and webhook option.
Questions, answered
In Grafana go to Alerting → Contact points, add a Webhook contact point, and paste your PocketAlert application URL. Attach it to a notification policy and the next firing alert reaches your phone in under a second.
Grafana posts a JSON payload with status, a commonLabels block, and an alerts array. PocketAlert reads it with GJSON paths, so you map commonLabels.alertname to the title, alerts.0.annotations.summary to the body, and status to show firing or resolved.
Yes. The payload carries the severity label at commonLabels.severity and a status of firing or resolved. Reference both in your GJSON message template so a critical firing alert reads differently from a resolved one.
Give each Grafana folder or team its own application. Infra alerts and app alerts land in separate channels, and you can mute one without touching the other.
Nothing extra. PocketAlert receives the webhook Grafana already sends from its alerting engine, so there is no plugin or agent to install. Works with Grafana Cloud and self-hosted alike.
Yes. Every message accepts a level — silent, low, default, high, or critical. Include a "level" field in the payload, or set default_level on the webhook so everything routed to it arrives at that priority; an explicit level in the payload wins. A firing=critical, resolved=silent split works well: the firing alert breaks through Do Not Disturb, the recovery stays quiet in history. An invalid value falls back to default, never rejected.
See the alert before the dashboard turns red.
Spin up an application, copy its webhook URL, and add it as a Grafana contact point.