Skip to content

Mail & Messaging

Operators for getting a message — or a notification — out of a flow and into a human’s inbox or channel.

Operatorinvoke:What it does
Email (Send)email.sendSend mail over SMTP — recipients, subject, body, attachments.
Email (Fetch)email.fetchRead mail over IMAP/POP3 — useful as an inbound trigger source.
using:
- zenvara/email
steps:
- $email:
invoke: email.send
on: smtp
with:
From: noreply@example.com
To: [accounting@example.com]
Subject: "Daily order summary for ${date}"
Body: "${summary.content}"

The SMTP/IMAP host and credentials live on the connection, referenced as secrets.

Operatorinvoke:What it does
Slackslack.*Post messages, upload files, interact with channels.
Microsoft Teamsteams.*Post to Teams channels / chats.
Signalsignal.*Send Signal messages.
Zoomzoom.*Meetings and Zoom API operations.

Notify — one abstraction over many channels

Section titled “Notify — one abstraction over many channels”
Operatorinvoke:What it does
Notifynotify.*A channel-agnostic notification verb that routes to whichever backend the connection points at.

Use notify.* when you want a flow to “tell someone” without hard-coding the channel — the environment decides whether that means email, Slack, or Teams, the same way it decides which database db resolves to. This keeps alerting logic portable across environments.

Pair a messaging operator with control flow to notify only when something goes wrong:

- if: "len(errors) > 0"
$alert:
invoke: slack.post
on: ops-channel
with:
Text: "Pipeline ${flow-name} hit ${= len(errors)} errors"