boltZharp Docs
boltDevelopers

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

  1. 1
    Create 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.

  2. 2
    Add 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.

  3. 3
    Turn 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.

ScopeWhat it allows in Zapier
ReadSigning in, the searches, and loading monitors and incidents into dropdowns.
WriteRead, plus every trigger and the incident actions: Create, Acknowledge, Resolve, Add Comment.
AdminWrite, plus Pause Monitor and Resume Monitor.
info
A key acts as the person who created it, so their workspace role applies too. Ingest only keys and MCP tokens (zh_mcp_) can't sign in. More on keys in the API reference.

Triggers

TriggerEventFires when
Monitor Downmonitor.downA monitor goes down and its incident opens, or someone reports an incident on a monitor.
Monitor Upmonitor.upA monitor is back up after an outage.
Monitor Degradedmonitor.degradedA monitor's SSL certificate or domain is close to expiry.
New Incidentincident.createdAn incident opens: a monitor goes down, or someone reports one — with or without a monitor.
Incident Acknowledgedincident.acknowledgedSomeone acknowledges an incident.
Incident Resolvedincident.resolvedAn incident is resolved — its monitor recovered, someone resolved it, or an escalation policy did.
Maintenance Startedmaintenance.startedA scheduled maintenance window starts on a monitor.
Any AlertanyAny 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.

Monitor Down
{
  "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"
}
FieldWhat it is
idZharp's id for the alert. It stays the same if a delivery is retried.
eventThe trigger's event, e.g. incident.resolved. An Any Alert Zap gets the alert's own.
alert_typeA shorter word: down, up, degraded, acknowledged, resolved (resolved by a person) or maintenance.
occurred_atWhen it happened. timestamp is when Zharp sent it.
monitor_idThe monitor, with monitor_name, monitor_url and monitor_type. All null for an incident with no monitor.
statusThe monitor's status: UP, DOWN or MAINTENANCE. is_down is true only for an outage.
messageWhat happened in words, for degraded, acknowledged, resolved-by-hand and maintenance alerts.
actorWho acknowledged or resolved the incident, when a person did.
incidentThe incident: id, status, title, description, root_cause, started_at, acknowledged_at, resolved_at and its url in Zharp. null for maintenance.
urlA 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

StepWhat it doesScope
Create IncidentReports an incident, optionally on a monitor, and alerts the same people an outage would.Write
Acknowledge IncidentAcknowledges an incident, so escalation stops paging the next responder.Write
Resolve IncidentMarks an incident resolved.Write
Add Comment to IncidentAdds a comment to the incident's timeline.Write
Pause MonitorStops a monitor's checks and alerts until it is resumed.Admin
Resume MonitorStarts a paused monitor again.Admin
Find MonitorFinds a monitor by name, URL or host; an exact match comes first.Read
Find IncidentFinds 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

  1. 1
    Trigger: Zharp → Monitor Down

    Sign in with your key and click Test trigger to load a recent outage.

  2. 2
    Action: 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}}
  3. 3
    Optional: 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

  1. 1
    Trigger: Zharp → New Incident

    It fires for outages and incidents someone reports, including ones with no monitor.

  2. 2
    Action: 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.

  3. 3
    Close 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 seeWhat 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 keyThe key was revoked, expired or mistyped. Create a new one and reconnect.
A plan error when turning the Zap onZapier needs the Pro plan on the workspace.
The test shows api.acme.comYour 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 runCheck 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 alertSend 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 loopA Zap on New Incident that runs Create Incident triggers itself. Filter on Monitor ID or Alert Type.
The same alert twiceZapier 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.