← wakehook.com
Integration guide
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.
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.
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.
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.
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 field | Comes from | Notes |
|---|---|---|
| title | commonAnnotations.summary | Falls back to commonLabels.alertname, then the first alert's |
| body | commonAnnotations.description | |
| severity | commonLabels.severity | page/emergency → critical, warning/warn → high; anything else falls back to WakeHook's own safe default (high) |
| status | status | firing / resolved, used directly |
| dedup_key | groupKey | Alertmanager's own group identity — a group stays one incident across re-notifications |
| link | externalURL | Jumps to the Alertmanager UI for that alert |
| tags | commonLabels | All 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.
{
"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 waitlistOther integrations