Grafana integration

Escalate Grafana alerts to phone calls, Telegram and on-call rotation

Add WardenPoint as a webhook contact point in Grafana. Route alerts by labels, run an escalation chain and acknowledge from the channel that received the call. Setup takes about three minutes.

Setup
~3 min
Contract
Default webhook
Resolve hook
Auto-cancel

Anatomy of a Grafana alert

LIVE
Grafana → contact point
p99 checkout latency above SLO
WardenPoint
parse labels · pick policy · fan out
Telegram
Voice call
Email

Setup

Wire Grafana to WardenPoint in three steps

All three steps live inside Grafana Alerting. No SDK, no deploy, no custom service in between.

  1. 1Step 1

    Create a contact point

    In Grafana, open Alerting → Contact points → New. Pick Webhook and name it wardenpoint.

    $ Alerting › Contact points › + New
  2. 2Step 2

    Paste the WardenPoint URL

    Copy your webhook URL from the WardenPoint dashboard (Settings → Integrations → Grafana) and paste it into the contact-point URL field.

    $ https://api.wardenpoint.com/hooks/{key}
  3. 3Step 3

    Attach to a notification policy

    In Alerting → Notification policies, create or edit a policy that matches the labels you care about and route it to wardenpoint.

    $ matcher: severity=critical → wardenpoint

Wire format

What Grafana sends and what WardenPoint returns

Grafana posts its standard webhook payload. WardenPoint accepts the body unchanged, attaches your tenant context and returns a 202 with the lifecycle UUID.

Grafana → WardenPoint
grafana-webhook.jsonJSON
{
"receiver": "wardenpoint",
"status": "firing",
"alerts": [{
"status": "firing",
"labels": {
"alertname": "HighCheckoutLatency",
"severity": "critical",
"team": "checkout"
},
"annotations": {
"summary": "p99 above 1.5s for 5 min"
},
"startsAt": "2026-05-17T13:42:18Z"
}]
}
WardenPoint fan-out
WardenPoint response202
{
"status": "queued",
"notification_uuid": "notif_8h2k7yQrxJp",
"channels_planned": [
"telegram_voice",
"voice_call",
"email"
],
"escalation_chain_id": "esc_4j2k9bMcvL"
}

Routing recipes

Three label patterns that map well to escalation

Use Grafana labels to pick a different escalation chain per service or severity. WardenPoint reads the labels — no parser needed.

Severity

Critical → phone call first

Label severity=critical fans out to voice call + Telegram voice in the first step, email at minute three.

match
severity=critical
→ route
policy: oncall_voice
Team

Team-aware routing

Label team=checkout routes to the checkout team's recipient group. Other teams keep their own escalation chains.

match
team=checkout
→ route
group: checkout_oncall
Environment

Production-only escalation

Use env=prod as a matcher in the policy. Staging firings stay informational, production ones run the full chain.

match
env=prod
→ route
policy: prod_escalation

Grafana FAQ

Common Grafana integration questions

Yes. When Grafana sends status=resolved, the escalation chain for that incident is cancelled and the audit log records a 'resolved' lifecycle event. No extra configuration needed.
Free plan

Wire your first Grafana alert in three minutes

Start on the free plan, add a contact point, send a test alert from Grafana and watch the escalation timeline render.

  • Free forever plan
  • Webhook contact point
  • Resolve hook auto-cancels