Send Datadog alerts to Acked

Datadog detects the problem. Acked wakes whoever is on call.

One Datadog webhook feeds one Acked service. Re-alerts deduplicate on Datadog's aggregation key, recoveries close the same alert, and your Acked schedule decides who gets paged.

1. Create the Acked source

Under Services → your service → Sources → Add, choose Custom. Paste this inbound template:

{
  "title": "{{ title }}",
  "event_key": "{{ event_key }}",
  "body": "{{ body }}",
  "priority": "{{ severity | map({\"error\":\"critical\",\"warning\":\"high\",\"info\":\"info\",\"success\":\"info\",\"*\":\"high\"}) }}",
  "action": "{{ transition | map({\"Recovered\":\"resolve\",\"*\":\"trigger\"}) }}"
}

Save it and copy the generated ingest URL. Treat that URL as a credential.

2. Add the Datadog webhook

Open Integrations → Webhooks, create a webhook, and use the Acked ingest URL. Set its payload to:

{
  "title": "$EVENT_TITLE",
  "event_key": "$AGGREG_KEY",
  "body": "$EVENT_MSG",
  "severity": "$ALERT_TYPE",
  "transition": "$ALERT_TRANSITION"
}

$AGGREG_KEY stays stable for one monitor group. That gives Acked a reliable deduplication and recovery key. Datadog's P1P5 values are not Acked priority values, so this mapping uses alert type instead.

3. Route and test

  1. Add @webhook-<name> to the Datadog monitor notification.
  2. Send a test alert and confirm it reaches the expected phone.
  3. Recover the monitor and confirm the Acked alert resolves.

Datadog retries webhook failures only for its documented error cases. Keep your existing paging destination active until this end-to-end test passes.