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 SourcesAdd 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