Use a custom webhook notifier to connect your monitors to internal or external services. The webhook URL receives a POST request with a content type of application/json together with any other headers you specify.

To create a custom webhook notifier, follow these steps:

  1. Click the Monitors tab, and then click Manage notifiers on the right.
  2. Click New notifier on the top right.
  3. Name your notifier.
  4. Click Custom webhook.
  5. In Webhook URL, enter the URL where you want to send the POST request.
  6. Optional: To customize the content of your webhook, use the Go template syntax to interact with these variables:
    • .Action has value Open when the notification corresponds to a match monitor matching or a threshold monitor triggering, and has value Closed when the notification corresponds to a threshold monitor resolving.
    • .MonitorID is the unique identifier for the monitor associated with the notification.
    • .Body is the message body associated with the notification. When the notification corresponds to a match monitor, this is the matching event data. When the notification corresponds to a threshold monitor, this provides information about the value that gave rise to the monitor triggering or resolving.
    • .Description is the description of the monitor associated with the notification.
    • .QueryEndTime is the end time applied in the monitor query that gave rise to the notification.
    • .QueryStartTime is the start time applied in the monitor query that gave rise to the notification.
    • .Timestamp is the time the notification was generated.
    • .Title is the name of the monitor associated with the notification.
    • .Value is the value that gave rise to the monitor triggering or resolving when the notification corresponds to a threshold monitor.
    • .MatchedEvent is the event that matched the criteria of a match monitor.
  7. Optional: Add headers to the POST request sent to the webhook URL.
  8. Click Create.

Examples

The example below is a custom webhook notification generated from a threshold monitor triggering. The body of a POST request sent to the webhook URL using the default template is the following:

{
  "action": "Open",
  "event": {
    "monitorID": "CabI3w142069etTgd0",
    "body": "Current value of 57347 is above or equal to the threshold value of 0",
    "description": "",
    "queryEndTime": "2024-06-28 14:55:57.631364493 +0000 UTC",
    "queryStartTime": "2024-06-28 14:45:57.631364493 +0000 UTC",
    "timestamp": "2024-06-28 14:55:57 +0000 UTC",
    "title": "Axiom Monitor Test Triggered",
    "value": 57347,
    "matchedEvent": null
  }
}

The example template below formats the webhook message to match the expectations of incident.io using the monitor ID as the deduplication_key.

{
  "action": "Open",
  "event": {
    "title": "{{.Title}}",
    "description": "{{.Body}}",
    "deduplication_key": "{{.MonitorID}}",
    "status": "{{ if eq .Action "Open" }}firing{{ else }}resolved{{ end }}",
    "metadata": {
      "description": "{{.Description}}",
      "value": {{.Value}},
      "url": "https://app.axiom.co/{your-org-id-here}/monitors/{{.MonitorID}}"
    }
  }
}