Alert notifications

Email, Slack, Teams, webhooks, services and topics - and what to configure before anything arrives.

A rule that trips has to reach someone. Zato delivers alerts in seven ways, and until you configure at least one of them, alerts are raised and recorded but nothing is sent anywhere.

The seven delivery actions

ActionWhat it doesWhat it needs
emailSends the alert as an emailThe default.alerts.notifications SMTP connection and a recipient address
slackPosts the alert to a Slack channelThe default.alerts.notifications Slack connection and a channel
teamsPosts the alert to a Microsoft Teams channelThe default.alerts.notifications Teams connection and a channel
webhookPOSTs the alert as JSONThe URL to POST to
invoke-serviceInvokes one of your own services with the alertThe service name
publish-to-topicPublishes the alert to a pub/sub topicThe topic name
diagnoseAsks a language model what went wrong, then delivers the diagnosisAn active LLM connection

The first four are where alerts go for people to read. invoke-service and publish-to-topic are where they go for something else to act on - opening a ticket, failing over, throttling a caller, whatever your own code decides.

diagnose reads the failing events behind the alert and produces a written explanation of what appears to be wrong, delivered like any other alert. It is the action attached to the error-rate-with-diagnosis rules on the rules page, turned on and off by the LLM switch on each card.

What to fill in first

Every environment is created with four placeholder connections, all inactive and all with blank details:

ConnectionTypeName
SlackChatdefault.alerts.notifications
Microsoft TeamsChatdefault.alerts.notifications
SMTPEmaildefault.alerts.notifications
LLMOutgoingdefault.alerts.llm

These names are what the alerting engine delivers through. If a deployment needs different names, set the Zato_Alerts_Connection and Zato_Alerts_LLM_Connection environment variables and the connections are created and used under those names instead.

Nothing is delivered until these are filled in and activated. They ship with an empty host, an empty username and a random secret, and they ship inactive. An alert whose action uses a connection that is still inactive is raised and recorded but never sent.

To make email work:

  1. In Dashboard, go to Connections -> Email -> SMTP and edit default.alerts.notifications. Fill in your mail server's host, port, username and password, tick Active and save.
  2. Set the recipient and sender addresses - email_to and email_from under the alert_notifications key in enmasse, or addresses in a rule's own action configuration.

Slack and Teams work the same way: fill in and activate the chat connection named default.alerts.notifications and the alerts are posted to the channel a rule names in its action configuration - slack_channel for Slack, teams_to for Teams.

The plain webhook needs no connection, only its URL - webhook_url in enmasse or in a rule's own action configuration.

The Dashboard URL

The dashboard_url value, set through enmasse, is worth filling in even though nothing fails without it.

Every alert includes a link back into the audit log, filtered to the object the alert is about. When the event that failed is one that can be resubmitted, the link also arms the resubmit action, so following it from an email takes you to the failed message with the retry ready. Without dashboard_url the link is relative and only works if you are already in Dashboard.

Set it to the address your team reaches Dashboard at, for instance https://zato.example.com.

Sending an alert somewhere else

The webhook action posts JSON, so anything that accepts an HTTP POST is a valid destination - PagerDuty, Opsgenie, Jira automation, an internal chat bridge or your own endpoint. Put its URL in webhook_url and the alerts arrive there.

If the receiving system needs a shape Zato does not produce, use invoke-service instead and write the request yourself in a service. That also covers anything needing authentication beyond a URL.

Learn more