Zapier
Start a Zap when a monitor goes down, an incident opens or is resolved, and let other apps create, acknowledge and resolve Zharp incidents.
The Zharp app on Zapier has eight triggers, six actions and two searches. Triggers are instant: Zharp sends each alert to Zapier the moment it fires, for every monitor in the workspace. The app needs the Pro plan.
Connect Zharp to Zapier
- 1Create an API key
In Zharp, go to Integrations & API → Main API keys and click Create API key. Only the workspace owner can create keys. Give it the Write scope — enough for every trigger and the incident actions. Pick Admin only if a Zap will pause or resume monitors.
- 2Add Zharp in Zapier
In the Zap editor, choose Zharp as the app for a trigger or action and click Sign in. Paste the key (it starts with
zh_live_). Zapier checks it and names the connection after your workspace. - 3Turn the Zap on
Each Zap with a Zharp trigger shows up in Zharp under Integrations & API → Zapier → Your Zaps. There you can Pause it (Zharp stops sending it alerts until you resume it) or send it a test alert. Turning the Zap off in Zapier removes it from the list.
| Scope | What it allows in Zapier |
|---|---|
| Read | Signing in, the searches, and loading monitors and incidents into dropdowns. |
| Write | Read, plus every trigger and the incident actions: Create, Acknowledge, Resolve, Add Comment. |
| Admin | Write, plus Pause Monitor and Resume Monitor. |
zh_mcp_) can't sign in. More on keys in the API reference.Triggers
| Trigger | Event | Fires when |
|---|---|---|
| Monitor Down | monitor.down | A monitor goes down and its incident opens, or someone reports an incident on a monitor. |
| Monitor Up | monitor.up | A monitor is back up after an outage. |
| Monitor Degraded | monitor.degraded | A monitor's SSL certificate or domain is close to expiry. |
| New Incident | incident.created | An incident opens: a monitor goes down, or someone reports one — with or without a monitor. |
| Incident Acknowledged | incident.acknowledged | Someone acknowledges an incident. |
| Incident Resolved | incident.resolved | An incident is resolved — its monitor recovered, someone resolved it, or an escalation policy did. |
| Maintenance Started | maintenance.started | A scheduled maintenance window starts on a monitor. |
| Any Alert | any | Any of the above. Each alert arrives once, named after what happened. |
One alert can match more than one trigger. An outage is both Monitor Down and New Incident; a recovery is both Incident Resolved and Monitor Up. If someone resolves an incident before its monitor recovers, Incident Resolved fires then, and the recovery later only fires Monitor Up — never Incident Resolved a second time.
Alerts follow the monitor's own settings: nothing is sent while its alerts are muted, and a monitor in maintenance sends Maintenance Started instead of outages.
What a trigger sends
Every trigger sends the same fields. When you test a trigger in the Zap editor, Zapier shows your workspace's latest real alerts of that kind; a workspace with none yet gets one example alert.
{
"id": "evt_3f2a9c0e5b7d4e1f8a6b2c9d0e1f2a3b",
"event": "monitor.down",
"alert_type": "down",
"occurred_at": "2026-10-21T09:54:00.000Z",
"monitor_id": 42,
"monitor_name": "Checkout API",
"monitor_url": "https://api.acme.com/checkout",
"monitor_type": "HTTP",
"status": "DOWN",
"is_down": true,
"message": null,
"actor": null,
"incident": {
"id": 1287,
"status": "ONGOING",
"title": "Checkout API is down",
"description": "HTTP check failed from 3 of 4 regions.",
"root_cause": "HTTP 503 Service Unavailable",
"started_at": "2026-10-21T09:54:00.000Z",
"acknowledged_at": null,
"resolved_at": null,
"url": "https://zharp.io/dashboard/incidents/1287"
},
"url": "https://zharp.io/dashboard/incidents/1287",
"emoji": "🔴",
"timestamp": "2026-10-21T09:54:02.000Z"
}| Field | What it is |
|---|---|
id | Zharp's id for the alert. It stays the same if a delivery is retried. |
event | The trigger's event, e.g. incident.resolved. An Any Alert Zap gets the alert's own. |
alert_type | A shorter word: down, up, degraded, acknowledged, resolved (resolved by a person) or maintenance. |
occurred_at | When it happened. timestamp is when Zharp sent it. |
monitor_id | The monitor, with monitor_name, monitor_url and monitor_type. All null for an incident with no monitor. |
status | The monitor's status: UP, DOWN or MAINTENANCE. is_down is true only for an outage. |
message | What happened in words, for degraded, acknowledged, resolved-by-hand and maintenance alerts. |
actor | Who acknowledged or resolved the incident, when a person did. |
incident | The incident: id, status, title, description, root_cause, started_at, acknowledged_at, resolved_at and its url in Zharp. null for maintenance. |
url | A link to the incident in Zharp (to the monitor for maintenance). |
emoji | 🔴 down, 🟢 up, 🟠 degraded, 👀 acknowledged, ✅ resolved, 🛠️ maintenance. |
In the Zap editor the incident's fields appear as Incident ID, Incident Title and so on. Map Incident ID straight into Acknowledge Incident, Resolve Incident or Add Comment to Incident.
Actions and searches
| Step | What it does | Scope |
|---|---|---|
| Create Incident | Reports an incident, optionally on a monitor, and alerts the same people an outage would. | Write |
| Acknowledge Incident | Acknowledges an incident, so escalation stops paging the next responder. | Write |
| Resolve Incident | Marks an incident resolved. | Write |
| Add Comment to Incident | Adds a comment to the incident's timeline. | Write |
| Pause Monitor | Stops a monitor's checks and alerts until it is resumed. | Admin |
| Resume Monitor | Starts a paused monitor again. | Admin |
| Find Monitor | Finds a monitor by name, URL or host; an exact match comes first. | Read |
| Find Incident | Finds the newest incident whose title or monitor matches, open ones by default. | Read |
Pausing and resuming also need the key's creator to be allowed to edit monitors. Each action returns the incident or monitor as it is afterwards, so later steps can use its fields.
Example Zaps
Monitor Down → Slack message
- 1Trigger: Zharp → Monitor Down
Sign in with your key and click Test trigger to load a recent outage.
- 2Action: Slack → Send Channel Message
Pick the channel and build the message from the alert's fields:
Message text{{emoji}} *{{monitor_name}}* is down {{incident__root_cause}} Started {{incident__started_at}} · {{incident__url}} - 3Optional: Zharp → Acknowledge Incident
Add it behind a Slack or approval step and map Incident ID from the trigger, so whoever takes the alert acknowledges it without opening Zharp.
New Incident → create a ticket
- 1Trigger: Zharp → New Incident
It fires for outages and incidents someone reports, including ones with no monitor.
- 2Action: Jira, Linear or GitHub → create an issue
Map Incident Title to the summary, and Incident Description, Incident Root Cause and Incident URL to the body. Put Incident ID in the issue too, so you can find it later.
- 3Close the loop with a second Zap
Trigger on Incident Resolved, find the issue by the incident ID and close it — or go the other way: when the issue is closed, run Resolve Incident with the incident ID stored on it.
Catch Hook connections
You can still paste a Zapier Catch Hook URL under Integrations & API → Zapier → Add a Catch Hook URL. Such a connection gets the alerts its Trigger on events pick and the same fields as above, except that event keeps the shorter word (down, up…) so existing Zaps keep matching; event_name carries the event name (monitor.down…). New Zaps should use the Zharp app.
Troubleshooting
| What you see | What to do |
|---|---|
| “lacks the "write" scope” | Turning on a Zap with a Zharp trigger needs a Write or Admin key. Create one and reconnect Zharp in Zapier. |
| “lacks the "admin" scope” | Pause Monitor and Resume Monitor need an Admin key. |
| Zharp rejected the API key | The key was revoked, expired or mistyped. Create a new one and reconnect. |
| A plan error when turning the Zap on | Zapier needs the Pro plan on the workspace. |
| The test shows api.acme.com | Your workspace has no alerts of that kind yet, so Zapier shows an example. Use Send test alert on the Zap's page in Zharp, or wait for a real one. |
| The Zap doesn't run | Check it is Connected (not Paused) under Your Zaps, that the monitor's alerts aren't muted, and that it isn't in maintenance. |
| The Zap runs on a test alert | Send test alert delivers an alert with event set to test. Add a filter on Event if a Zap shouldn't act on it. |
| A Zap creates incidents in a loop | A Zap on New Incident that runs Create Incident triggers itself. Filter on Monitor ID or Alert Type. |
| The same alert twice | Zapier may retry a delivery that timed out. The alert's Alert ID stays the same, so a step can skip one it has seen. |
- Deleting a Zap's entry in Zharp stops its alerts; turning the Zap off in Zapier afterwards still works.
- Every request a Zap makes appears on the API key's page under Recent requests.