WakeHook ← wakehook.com

Integration guide

Prometheus Alertmanager → WakeHook

Your rules already fire correctly — the gap is what happens after Alertmanager routes a page to a channel nobody's watching at 3am. Add WakeHook as a webhook_config receiver and a firing group rings a phone until someone acknowledges it, using Alertmanager's own grouping so you don't get paged once per alert in the group.

Set it up

  1. In your WakeHook dashboard, open Sources → Add source, name it Alertmanager, and pick the Prometheus Alertmanager preset. Copy the Webhook URL — shown once, in full.

  2. Add it as a receiver in alertmanager.yml:

    receivers:
      - name: wakehook
        webhook_configs:
          - url: '<your webhook URL>'
            send_resolved: true
    
    route:
      receiver: wakehook
      # ...your existing routing/grouping

    send_resolved: true matters — without it, WakeHook never hears that the alert cleared and the incident sits open until someone acknowledges it by hand.

  3. Reload Alertmanager (SIGHUP or your usual config-reload endpoint) and fire a real test with amtool alert add or a rule you can trigger on demand.

What WakeHook reads from it

Alertmanager POSTs once per group of alerts, not once per alert — this mapping collapses the whole group into one WakeHook incident, reusing Alertmanager's own grouping decision instead of re-deriving one:

WakeHook fieldComes fromNotes
titlecommonAnnotations.summaryFalls back to commonLabels.alertname, then the first alert's
bodycommonAnnotations.description
severitycommonLabels.severitypage/emergency → critical, warning/warn → high; anything else falls back to WakeHook's own safe default (high)
statusstatusfiring / resolved, used directly
dedup_keygroupKeyAlertmanager's own group identity — a group stays one incident across re-notifications
linkexternalURLJumps to the Alertmanager UI for that alert
tagscommonLabelsAll of them, passed through

Severity is free text in Prometheus's own convention — there's no standard. Anything WakeHook doesn't recognize falls back to high rather than guessing wrong, so a mislabeled alert still rings — quietly wrong is worse than loudly unsure.

Example payload

{
  "status": "firing",
  "groupKey": "{}/{alertname=\"HighErrorRate\"}",
  "commonLabels": { "alertname": "HighErrorRate", "severity": "page" },
  "commonAnnotations": { "summary": "Error rate above 5% for 5m" },
  "externalURL": "https://alertmanager.example.com",
  "alerts": [ { "labels": { "alertname": "HighErrorRate" } } ]
}

Ready to wire it up?Free while WakeHook is in beta — one source, one device.

Join the waitlist

Other integrations