boltZharp Docs
notifications_activeIncidents & Alerts

Alert Channels

Where Zharp sends alerts when a monitor goes down, degrades or recovers: email, the mobile app, and the chat, paging and automation tools you connect under Integrations & API.

Where alerts go

Every alert integration lives under Integrations & API in the dashboard sidebar. The ones that receive alerts are:

IntegrationTypeReceives
SlackChat PlatformsMessages in a Slack channel
TelegramChat PlatformsMessages in a direct chat, group or channel, through the Zharp bot
DiscordChat PlatformsMessages in a Discord channel
MS TeamsChat PlatformsMessages in a Microsoft Teams channel, through a Teams Workflow
Google ChatChat PlatformsMessages in a Google Chat space
MattermostChat PlatformsMessages in a Mattermost channel
WebhookWebhooksSigned JSON POSTs to your own HTTPS endpoint
PagerDutyConnectors & IncidentAlerts on a PagerDuty service, through the Events API v2
SplunkConnectors & IncidentEvents on a Splunk HTTP Event Collector
ZapierConnectors & IncidentA Zap trigger for each alert
PushoverPush NotificationsPushes to a Pushover user or group
PushbulletPush NotificationsPushes to every device on a Pushbullet account
iOS, AndroidPush NotificationsPush notifications from the Zharp mobile app

Two more routes don't need an integration:

  • Email. When a monitor goes down or comes back up, Zharp emails the workspace owner, everyone subscribed to the monitor, and the subscribers of status pages that show it. The owner and monitor subscribers only get these e-mails if their own settings allow it — see Your alert settings. To send alerts to a shared inbox or a distribution list instead, use an e-mail connection.
  • On-call paging. A monitor's How should we escalate incidents? section decides who is paged and how — E-mail, Push notification or Slack alert. See Escalation & On-call.
info
Call and SMS appear in the alert pickers but are switched off: SMS and phone call alerts aren't available in your country yet.
lightbulb
Every alert integration is available on every plan, Free included.

Connect an integration

  1. 1
    Open the integration

    Go to Integrations & API and pick the platform. Its page lists the connections you already have.

  2. 2
    Add a connection

    Click Add Connection, paste what the platform gives you (see the table below), and choose the events under Trigger on. Click Add connection to save.

  3. 3
    Choose its monitors

    The new connection opens on its own page. Set Applies to to All monitors or Selected monitors, then click Send test alert to check it.

IntegrationWhat you need
DiscordA channel webhook — Discord webhook URL, starting with https://discord.com/api/webhooks/
MS TeamsA Teams Workflows webhook — Workflow webhook URL
Google ChatA space webhook — Google Chat webhook URL, starting with https://chat.googleapis.com/
MattermostAn incoming webhook — Mattermost webhook URL
PagerDutyThe service's Events API v2 Integration key (32 letters and numbers)
SplunkHEC endpoint URL and HEC token of an HTTP Event Collector
PushoverPushover user or group key (30 letters and numbers)
PushbulletYour Pushbullet Access token, starting with o.
WebhookAn Endpoint URL on https://. Zharp generates the signing secret — see Webhooks

Slack

Add Connection takes you to Slack's own consent screen, where you pick the workspace and channel. When you come back, the connection is already set to All monitors with Down, Degraded and Resolved on.

Telegram

Telegram connects through the Zharp bot — there is no bot token or chat ID to copy. Add Connection opens Connect Telegram with two tabs:

  • Direct message — click Open in Telegram (or scan the QR code on your phone) and press Start.
  • Group / channel — add the bot to the group, then send the /start command shown in the modal, code included. For a channel, add the bot as an admin with the “Post messages” permission and post the command there.

The modal waits and links the chat as soon as the bot hears from it. If the code expires, click Get a new one. Like Slack, a new Telegram connection covers All monitors with Down, Degraded and Resolved on.

Zapier

Open Zapier takes you to Zapier to build a Zap. A Zap built with the Zharp app in Zapier shows up under Your Zaps. To use a Catch Hook instead, click Add a Catch Hook URL and paste the Zapier webhook URL (https://hooks.zapier.com/…). The Zapier guide covers the triggers, what each alert contains, and the key scope the app needs.

E-mail connections

An e-mail connection sends alerts to fixed addresses — a team inbox or a mailing list — rather than to people in the workspace. It has no page under Integrations & API yet: create it through the API with an admin key, listing the addresses in config.emails. A connection without at least one valid address is refused.

An e-mail connection for two addresses
curl -X POST https://api.zharp.io/api/v1/notification-channels \
  -H "Authorization: Bearer $ZHARP_ADMIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "workspaceId": 12,
    "type": "EMAIL",
    "name": "Ops inbox",
    "config": { "emails": ["ops@example.com", "oncall@example.com"] }
  }'

After that it behaves like any other connection: PUT /notification-channels/:id/monitors chooses its monitors, its Trigger on events, delay and repeats apply, escalation steps can name it, and POST /notification-channels/:id/test sends each address a test e-mail. Every alert is one e-mail per address, linking to the incident in the dashboard.

Events

Each connection chooses its events under Trigger on when you add it, and under Alerts routed here on its page afterwards (Events sent for a webhook). New connections start with Down, Degraded and Resolved.

EventSent when
DownA monitor goes down and an incident opens. A manually reported incident on a monitor counts too.
DegradedAn SSL certificate or domain is close to expiring. (A monitor failing in only some regions alerts nobody — alerts follow the majority of regions.)
ResolvedThe monitor recovers.
AcknowledgedSomeone acknowledges the incident.
MaintenanceA maintenance window on the monitor starts.

PagerDuty

PagerDuty offers two choices, named by severity: Critical (Down) and High (Degraded). Down is sent with PagerDuty severity critical; Degraded with error — PagerDuty has no “high” severity, and error is the level its severity-based urgency treats as high urgency. Both use the same alert per monitor. Resolved and Acknowledged are always sent, so the alert in PagerDuty is acknowledged and closed along with the incident. Maintenance is never sent to PagerDuty.

Choose which monitors alert

A connection only hears about the monitors it covers. Set this under Applies to on the connection's page:

  • All monitors — every monitor, including ones added later.
  • Selected monitors — only the monitors you tick in the list below it.

For Slack you can also pick connections from the monitor itself: tick Slack alert under How should we notify the on-duty member? and choose them in Send Slack alerts through.

An escalation policy step can name a connection too. That step posts the incident whatever the connection's Trigger on says — the policy chose it. See Escalation & On-call. So can Report to when you report an incident by hand.

Pause a connection

Click Pause at the top of a connection's page to stop everything going to it — alerts, repeats, escalation steps and reports — without disconnecting it. The connection shows Paused until you click Resume. Send test alert still works while it's paused.

Test messages and retries

Send test alert (Send test event for a webhook) on a connection's page sends a message saying the connection is set up correctly. PagerDuty gets a low-severity test alert that is resolved straight away. Every delivery from the last 24 hours shows under Recent deliveries, and the Status card shows whether the last one got through.

To test from a monitor instead, open it and click Test Notification (or Send test alert in the monitor list's menu). Every connection that alerts for the monitor gets a test alert for [Test] monitor name, saying nothing is wrong with the monitor; with Send to attached notify-only users on, the monitor's subscribers get a test e-mail too. Nobody is paged and no incident is opened. A message then says where it went, and names any connection that was skipped (a paused one, for example) or couldn't be queued.

Failed deliveries are retried with exponential backoff, starting 5 seconds after the first try. A connection makes 3 attempts by default. On a webhook endpoint's page you can change this under Retries to 1, 3 or 5 attempts — see Webhooks for timeouts and response codes.

Delay and repeat

Each link between a monitor and a connection has its own timing. Set it on the monitor: Edit monitor → Integrations & team → Connection alerts, which lists every connection linked to the monitor with three choices:

SettingAPI fieldWhat it does
First alertdelaySeconds to hold a down or recovery alert before it goes to this connection. 0 sends it at once. If things changed while it waited — the monitor recovered, the incident was resolved, maintenance started or alerts were muted — it isn't sent, and the incident's timeline says so.
While still downrepeatIntervalMinutes. While the incident stays open, the down alert is sent to this connection again once this long has passed since it last got it. 0 never repeats.
RepeatrepeatHow many repeats at most. 0 keeps repeating until the incident is resolved.

A repeat goes only to the connection that set it. It doesn't e-mail or push anyone, and it never pages on-call again — repeat paging belongs to escalation policies. Each repeat is noted on the incident's timeline (“Still down — repeated the alert to #ops (2 of 3)”). Paused connections and monitors with alerts muted get no repeats.

Through the API, the same settings sit in the monitor's notificationChannels list:

Hold the first alert 2 minutes, then repeat every 30 minutes, 3 times at most
curl -X PUT https://api.zharp.io/api/v1/monitors/3381 \
  -H "Authorization: Bearer $ZHARP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "notificationChannels": [
      { "channelId": 41, "delay": 120, "repeatInterval": 30, "repeat": 3 }
    ]
  }'
warning
notificationChannels replaces the monitor's whole list of linked connections, so include every connection you want to keep. Connections set to All monitors have no delay or repeat.

Your alert settings

What reaches you personally is set under Settings → Alerts & Reporting, or Notifications in the mobile app — the same settings in both places:

SettingWhat it does
Email NotificationsOff, you get no “is DOWN / is UP” e-mails for monitors you own or subscribe to. Its event menu narrows it: Down Events, Up Events, and for SSL and domain monitors SSL Expiry and Domain Expiry.
Push NotificationsThe same for the mobile app's push alerts: Down Events, Up Events, and for SSL and domain monitors SSL Expiry and Domain Expiry. Those two start off for push, so SSL and domain monitors only push once you turn them on.
Maintenance windowsOn, you get a push when a maintenance window starts on a monitor you own or subscribe to. Off by default.
Quiet hoursPush notifications, SMS and calls are held back between the two times, every day, in the timezone of the browser or phone that saved them. E-mail still arrives.
Critical alerts always notifyOn (the default), a monitor going down still gets through quiet hours. Recoveries wait.

Mobile app push alerts

Install Zharp from Google Play and sign in — the device registers itself (the iPhone app is on its way: join the waitlist). It then shows under Integrations & API → iOS or Android, in Registered devices.

  • When a monitor goes down or comes back up, the workspace owner and the monitor's subscribers get a push if Push Notifications is on under Settings → Alerts & Reporting. Its event menu chooses Down Events and Up Events, and SSL Expiry / Domain Expiry for SSL and domain monitors.
  • On-call pages arrive as a push when the escalation asks for one.
  • Open a device to rename it or click Pause alerts. A paused device gets nothing until you resume it. Only the device's owner can change it.