Skip to main content

Webhooks

Send custom alert notifications to any HTTP endpoint when a monitor triggers. Webhooks let you integrate Bronto alerts with your own services, on-call tooling, or third-party platforms.

Overview

With Webhooks you can:
  • Notify your own services when an alert is triggered
  • Send structured JSON payloads with alert context
  • Add custom headers for authentication or routing

Setup

1. Create a Webhook

  1. Go to Settings → Integrations and select Webhooks.
  2. Click + New.
  3. Fill in the details on the right panel:
    • Name — a label for this webhook (e.g. DevOps Team)
    • URL — the endpoint Bronto will POST to when an alert fires
  4. Click Save.
The webhook will appear in the Webhooks table with its name and URL.

2. Configure the Payload

The payload is fully customisable JSON. The following variables are available and will be populated at alert time:
VariableDescriptionExample
$alert_idUnique identifier of the alert10f840e4-9415-481b-ba23-04f6c02bbba0
$current_valueValue evaluated when the monitor alerted10.0
$descriptionDescription of the monitorMonitors authentication logs for dodgy login attempts
$end_time_windowEnd of the monitor evaluation window that triggered the alert, as an epoch in milliseconds1770284387475
$groupMonitored group which triggered the alertadmin
$groupsMonitored groups which triggered the alertadmin
$monitor_idUnique identifier of the monitorf9c2e977-51b7-4947-8a54-7eb47ad99bc4
$monitor_linkURL to view the monitor in Brontohttps://app.eu.bronto.io/monitors/...
$monitor_nameName of the monitorDodgy Login Monitor
$monitor_typeType of the monitor (pattern or change detection)pattern
$previous_statusPrevious status of the monitorok
$queryQuery being evaluated by the monitorSELECT COUNT(*) WHERE 'dodgy_login'
$regionBronto account region nameeu-west-1
$start_time_windowStart of the monitor evaluation window that triggered the alert, as an epoch in milliseconds1770284327475
$statusCurrent status of the monitoralert
$summaryBrief textual summary of the alertThe query 'SELECT COUNT(*)' is above the defined threshold.
$thresholdMonitor alert threshold5.0
$time_windowEvaluated time range (human readable)2018-05-25T20:23:54.208Z - 2018-05-25T20:28:54.208Z
$time_window_lengthEvaluated time range length in milliseconds36,000,000
$titleTitle of the alertMonitor has no data: Dodgy Login Monitor
$warn_thresholdMonitor warning threshold3.0
Some variables may be null or empty if not configured on the monitor. For example, $warn_threshold will be empty if no warning threshold has been set. Make sure your service handles missing values gracefully.

Change Detection Variables

The following additional variables are available only for Change Detection monitors:
VariableDescriptionExample
$change_typeAbsolute or percentage differencedifference change (a - b)
$compare_toEvaluated comparison time range (human readable)2018-05-25T20:23:54.208Z - 2018-05-25T20:28:54.208Z
$compare_to_end_timeEnd of the evaluated comparison time range that triggered the alert, as an epoch in milliseconds1770284387475
$compare_to_start_timeStart of the evaluated comparison time range that triggered the alert, as an epoch in milliseconds1770284387475
$compare_to_window_valueValue evaluated from the comparison window when the monitor alerted8.0
$current_window_valueValue evaluated from the current window when the monitor alerted10.0

Conditional Statements

Conditional statements can be used to determine the content and structure of the payload. For example, the following payload can change based on the monitor status:
{
  {{$is_status_alert}}"priority": "HIGH",{{/is_status_alert}}
  {{!is_status_alert}}"priority": "LOW",{{/is_status_alert}}
  "action": "dodgy_login"
}
Bronto will not validate any portion of JSON containing conditional statements, so you must ensure your output is always valid JSON.
Any condition can be negated by replacing the $ with a !.
ConditionDescriptionExample
$is_equalCompare two string values; alerting variables are supported{{$is_equal '$region' 'eu-west-1'}}{{/is_equal}}
$is_emptyCheck if a variable is not set or has an empty value{{$is_empty '$environment'}}{{/is_empty}}
$is_groupCompare the alerting group name{{$is_group 'admins'}}{{/is_group}}
$is_status_alertIs the monitor in status “alert”?{{$is_status_alert}}{{/is_status_alert}}
$is_status_no_dataIs the monitor in status “no data”?{{$is_status_no_data}}{{/is_status_no_data}}
$is_status_okIs the monitor in status “ok”?{{$is_status_ok}}{{/is_status_ok}}
$is_status_warnIs the monitor in status “warn”?{{$is_status_warn}}{{/is_status_warn}}

3. Add Custom Headers (Optional)

If your endpoint requires authentication or specific headers, click Add Header and provide a Header Name and Header Value. Use the toggle next to a header to encrypt its value. Encrypted header values are stored securely and will not be displayed after saving. When editing an existing webhook, you can leave an encrypted header’s value blank to keep the existing secret — it will not be overwritten.

Connecting Webhooks to Monitors

Once saved, a webhook can be selected as a notification destination when creating or editing a Monitor.

Managing Webhooks

All configured webhooks are listed in the Webhooks table. Click any row to edit or delete it.