Prometheus alerts → WhatsApp, one receiver
Alertmanager 0.32 (2026-04) added full payload templating for the webhook notifier, enough to speak pingwa directly. One receiver, one bearer token. Text join to get a key.
The receiver
route:
receiver: whatsapp
group_by: ["alertname"]
group_wait: 30s
group_interval: 5m
repeat_interval: 12h
receivers:
- name: whatsapp
webhook_configs:
- url: https://pingwa.dev/v1/notify
http_config:
authorization:
credentials: pw_YOUR_KEY
payload:
text: '{{ printf "%.1000s" (print (.Status | toUpper) " · " (.Alerts | len) " alert(s) · " .GroupLabels.alertname) }}'
Verified 2026-07-23 with Alertmanager 0.32.
payload is a map of Go-template strings: Alertmanager renders
each value, then JSON-encodes the whole map, so quotes in label values are
escaped for you and the body is always valid
{"text": "…"}. What nothing trims is length: pingwa caps
text at 1024 chars and rejects longer with a 422. The
printf "%.1000s" wrap keeps even a pathological alertname under
the cap, so the message lands instead of bouncing.
Grouping is your quota
The route block above is the anti-storm config:
one group = one webhook call = one WhatsApp message summarizing every alert
in it. Free plan is 30 paid messages/month, and repeat_interval: 12h
keeps a long incident at ~2 messages/day. 402/429
(60/min) bodies from pingwa say exactly what to fix.
Two-way
One-way by design here. For act-on-alert (restart, drain,
rollback), wire your remediation script to POST /v1/ask with
buttons instead, and tap to approve. API docs.
FAQ
I'm on Alertmanager < 0.32.
No payload templating there: the fixed v4 JSON doesn't fit pingwa's schema. Upgrade, relay through a 5-line webhook script (monitoring page), or use the Apprise recipe. If you need an adapter endpoint, tell us.
Does resolved fire too?
Yes, with send_resolved: true (default). Each group resolve
is one more message. Set it false if you only want firing.
Scan the code and get instant access. It opens WhatsApp with “join” ready to send, and your API key comes straight back.
pingwa carries the ping over the official Meta Cloud API. Your own number stays out of it (why that matters). Alerts landing outside your 24h reply window are paid template sends; the free plan's 30/month covers a well-tended Prometheus stack.