Zabbix
Send Zabbix trigger alerts to Uptimeify Incident Management via a Webhook media type, using the ready-made media type 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-made media type you can import into Zabbix, so you do not have to create it by hand or 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 action to save
uptimeify-zabbix-media-type.yaml.
2. Import the media type into Zabbix
- In Zabbix, go to Alerts → Media types (Zabbix 7.x; Administration → Media types on 6.x and older) and click Import.
- Select the downloaded
uptimeify-zabbix-media-type.yamland confirm. A media type named Uptimeify appears. - Give it the ingest URL. Either define the global macro
{$UPTIMEIFY.INGEST.URL}under Administration → Macros with the URL from step 1, or open the media type and paste the URL straight into itsingest_urlparameter. - Enable the media type.
The ingest URL must be a media type parameter. Zabbix resolves macros in parameter values only, never inside the script body — a {$UPTIMEIFY.INGEST.URL} written into the JavaScript would be POSTed to as a literal string and no alert would ever arrive.
What the media type sends
The imported media type declares one parameter per field the preset maps, so the payload matches the preset's selectors without any further editing:
| Parameter | Zabbix macro | Used for |
|---|---|---|
ingest_url | {$UPTIMEIFY.INGEST.URL} | Where the alert is POSTed |
event_id | {EVENT.ID} | Dedup key — pairs PROBLEM and OK into one incident |
event_severity | {EVENT.SEVERITY} | Severity (see map below) |
trigger_name | {EVENT.NAME} | Title |
trigger_status | {EVENT.STATUS} | OK resolves the alert, anything else keeps it open |
host_name | {HOST.NAME} | Host |
event_source, event_value, date, time | respective macros | Carried through for context |
The script treats HTTP 200/202 as success and throws on anything else, so a failed delivery shows up as a failed alert attempt in Zabbix instead of disappearing silently. A 404 there means the token in your ingest URL matches no alert source.
Testing the media type
Zabbix's Test button on a media type passes every parameter through literally — it does not resolve macros. If you test straight after importing, ingest_url arrives as the string {$UPTIMEIFY.INGEST.URL} and the attempt fails with cannot get URL: URL rejected: Bad hostname. That is expected, not a misconfiguration.
To test properly, replace the ingest_url value in the test dialog with your real ingest URL. The other parameters can stay as they are — the preset only needs trigger_name and trigger_status to produce a usable alert, and the dialog lets you type real values for those too.
3. Wire it up to a trigger action
- 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.
- 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.
- 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 parameter | Normalized field |
|---|---|
trigger_name | Title |
event_severity | Severity (via the map below) |
trigger_status | Status: OK resolves the alert, anything else keeps it open |
host_name | Host |
event_id | Dedup key: groups PROBLEM/OK events for the same trigger into one alert |
Severity map
Zabbix event_severity | Uptimeify severity |
|---|---|
Disaster | sev1 |
High | sev2 |
Average | sev3 |
Warning | sev4 |
Information | sev4 |
Not classified | sev4 |
Sample payload
This is the shape of payload Uptimeify's Zabbix preset expects, the same shape the media type 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.
Alert Source Setup Guides
Step-by-step guides for wiring Zabbix, Datadog, Grafana Alerting, Prometheus Alertmanager, Sentry, or any custom webhook to Uptimeify Incident Management.
Datadog
Send Datadog Monitor alerts to Uptimeify Incident Management via a Datadog webhook integration, pre-mapped to title, alert type, and transition state.