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
- Go to Settings → Integrations and select Webhooks.
- Click + New.
- 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
- Click Save.
The webhook will appear in the Webhooks table with its name and URL.
The payload is fully customisable JSON. The following variables are available and will be populated at alert time:
| Variable | Description | Example |
|---|
$alert_id | Unique identifier of the alert | 10f840e4-9415-481b-ba23-04f6c02bbba0 |
$current_value | Value evaluated when the monitor alerted | 10.0 |
$description | Description of the monitor | Monitors authentication logs for dodgy login attempts |
$end_time_window | End of the monitor evaluation window that triggered the alert, as an epoch in milliseconds | 1770284387475 |
$group | Monitored group which triggered the alert | admin |
$groups | Monitored groups which triggered the alert | admin |
$monitor_id | Unique identifier of the monitor | f9c2e977-51b7-4947-8a54-7eb47ad99bc4 |
$monitor_link | URL to view the monitor in Bronto | https://app.eu.bronto.io/monitors/... |
$monitor_name | Name of the monitor | Dodgy Login Monitor |
$monitor_type | Type of the monitor (pattern or change detection) | pattern |
$previous_status | Previous status of the monitor | ok |
$query | Query being evaluated by the monitor | SELECT COUNT(*) WHERE 'dodgy_login' |
$region | Bronto account region name | eu-west-1 |
$start_time_window | Start of the monitor evaluation window that triggered the alert, as an epoch in milliseconds | 1770284327475 |
$status | Current status of the monitor | alert |
$summary | Brief textual summary of the alert | The query 'SELECT COUNT(*)' is above the defined threshold. |
$threshold | Monitor alert threshold | 5.0 |
$time_window | Evaluated time range (human readable) | 2018-05-25T20:23:54.208Z - 2018-05-25T20:28:54.208Z |
$time_window_length | Evaluated time range length in milliseconds | 36,000,000 |
$title | Title of the alert | Monitor has no data: Dodgy Login Monitor |
$warn_threshold | Monitor warning threshold | 3.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:
| Variable | Description | Example |
|---|
$change_type | Absolute or percentage difference | difference change (a - b) |
$compare_to | Evaluated comparison time range (human readable) | 2018-05-25T20:23:54.208Z - 2018-05-25T20:28:54.208Z |
$compare_to_end_time | End of the evaluated comparison time range that triggered the alert, as an epoch in milliseconds | 1770284387475 |
$compare_to_start_time | Start of the evaluated comparison time range that triggered the alert, as an epoch in milliseconds | 1770284387475 |
$compare_to_window_value | Value evaluated from the comparison window when the monitor alerted | 8.0 |
$current_window_value | Value evaluated from the current window when the monitor alerted | 10.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 !.
| Condition | Description | Example |
|---|
$is_equal | Compare two string values; alerting variables are supported | {{$is_equal '$region' 'eu-west-1'}}{{/is_equal}} |
$is_empty | Check if a variable is not set or has an empty value | {{$is_empty '$environment'}}{{/is_empty}} |
$is_group | Compare the alerting group name | {{$is_group 'admins'}}{{/is_group}} |
$is_status_alert | Is the monitor in status “alert”? | {{$is_status_alert}}{{/is_status_alert}} |
$is_status_no_data | Is the monitor in status “no data”? | {{$is_status_no_data}}{{/is_status_no_data}} |
$is_status_ok | Is the monitor in status “ok”? | {{$is_status_ok}}{{/is_status_ok}} |
$is_status_warn | Is the monitor in status “warn”? | {{$is_status_warn}}{{/is_status_warn}} |
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.