Recipe · Prometheus Alertmanager

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.

§ 1

The receiver

alertmanager.yml
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.

§ 2

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.

§ 3

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.

§ 4

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.

QR code to join pingwa on WhatsApp

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.