Uptimeify Docs
Incident managementAlert sources

Zabbix

Send Zabbix trigger alerts to Uptimeify Incident Management via a Webhook media type, using the ready-made script Uptimeify generates for you.

Uptimeify's Zabbix preset maps a Zabbix Webhook media type's payload directly: trigger name, severity, status, and host are pre-mapped. Uptimeify also gives you a ready-to-paste script for the media type's Script tab, so you don't have to write the JavaScript yourself.

1. Create the alert source in Uptimeify

Go to Incident Management → Alert Sources → New, pick the Zabbix preset, name it, and create it. On the success screen:

  • Copy the ingest URL (https://<your-domain>/api/im/ingest/<token>), shown once.
  • Use the download media type script action to save the ready-made webhook script (or copy it from below).

2. Create the webhook media type in Zabbix

  1. In Zabbix, go to Data collection → Media types (Zabbix 7.0; Administration → Media types on Zabbix 6.x and older) and click Create media type.
  2. Set Type to Webhook.
  3. Open the Script tab and paste in the script below (or the one Uptimeify generated for your source; the two are identical).
  4. Add a media type parameter named UPTIMEIFY.INGEST.URL (referenced in the script as {$UPTIMEIFY.INGEST.URL}) and set its value to the ingest URL you copied in step 1. The script reads the URL from this parameter rather than hard-coding it, so rotating the token later only means updating this one value.
  5. Save the media type.

Webhook script

// Zabbix Webhook media type — Script tab (JavaScript).
// Data > Alerts > Media types > Webhook > Script. Field names below map 1:1
// onto this preset's selectors (event_id, event_severity, trigger_name, ...).
var params = JSON.parse(value);
var payload = {
  event_id: params.event_id,
  event_source: params.event_source,
  event_value: params.event_value,
  event_severity: params.event_severity,
  trigger_name: params.trigger_name,
  trigger_status: params.trigger_status,
  host_name: params.host_name,
  date: params.date,
  time: params.time
};
var req = new HttpRequest();
req.addHeader('Content-Type: application/json');
req.post('{$UPTIMEIFY.INGEST.URL}', JSON.stringify(payload));
return 'OK';

This script forwards Zabbix's own webhook parameters (event_id, event_severity, trigger_name, trigger_status, host_name, …) unchanged as JSON, it does not transform them. Uptimeify's Zabbix preset already expects exactly this shape, so no further mapping edits are needed.

3. Wire it up to a trigger action

  1. Add the new media type to a Zabbix user under Users → Users → (user) → Media. Zabbix requires a "Send to" address value even for a webhook. Any non-empty value works, the script ignores it.
  2. Create or edit a Trigger action under Data collection → Actions → Trigger actions, with an operation that sends a message to that user via your new media type.
  3. Trigger a test problem (or wait for the next real one) and confirm it shows up under Incident Management → Alert Sources → your Zabbix source.

Default field mapping

Zabbix webhook parameterNormalized field
trigger_nameTitle
event_severitySeverity (via the map below)
trigger_statusStatus: OK resolves the alert, anything else keeps it open
host_nameHost
event_idDedup key: groups PROBLEM/OK events for the same trigger into one alert

Severity map

Zabbix event_severityUptimeify severity
Disastersev1
Highsev2
Averagesev3
Warningsev4
Informationsev4
Not classifiedsev4

Sample payload

This is the shape of payload Uptimeify's Zabbix preset expects, the same shape the script above produces:

{
  "event_id": "6633487",
  "event_source": "0",
  "event_value": "1",
  "event_severity": "Disaster",
  "trigger_name": "Zabbix agent is not available on Zabbix server",
  "trigger_status": "PROBLEM",
  "host_name": "Zabbix server",
  "date": "2026.07.17",
  "time": "12:00:00"
}

You can send this exact payload against your source's mapping from the Payload Mapping tab in the dashboard to verify the setup before wiring up a real trigger.

On this page