Skip to content

notification ​

Send a desktop, Slack, Teams, webhook, or email notification from a workflow.

When to use it ​

Use this node to notify a person or service of an outcome. Use an approval gate when the next step must wait for a decision.

Example ​

rattish
Rattish: 1

Workflow:
  name: Send a notification

Node step:
  type: notification
  title: Raticode workflow
  body: The report is ready for review.
  channel: desktop
  urgency: normal
  finish: pass

Desktop is the default channel and needs a usable platform notifier. Slack, Teams, and webhook channels require a configured webhook URL. Email requires its sender, recipient list, and SMTP host; port 587 and STARTTLS are the defaults.

Compatible ports can bind title, body, channel, destination, headers, payload, or protected credentials. Use named secret references instead of embedding webhook secrets or SMTP passwords in source.

Network channels have a request timeout and HTTP retry/status policy. Repeated sends can duplicate notifications. sent: true records successful delivery to the channel, not proof a recipient read it.

Configuration ​

Configuration fields use hyphens. These are the node-specific fields; shared execution fields apply separately.

FieldTypeRequired / defaultMeaning
titlestring"Raticode notification"Notification title.
bodystring""Notification text or HTTP request body.
channeldesktop, slack, teams, webhook, email"desktop"Notification destination channel.
urgencylow, normal, critical"normal"Desktop notification urgency.
webhook-urlstring or nullNot setConfigured network notification endpoint.
headersobject{}String HTTP headers.
payloadany JSON valueNot setAuthored notification payload.
email-fromstring or nullNot setEmail sender.
email-tolist of string[]Email recipient list.
smtp-hoststring or nullNot setSMTP server host.
smtp-portinteger (min 1, max 65535)587SMTP server port.
smtp-usernamestring or nullNot setSMTP authentication username.
smtp-passwordstring or nullNot setSMTP credential; prefer a protected binding.
smtp-starttlsbooleantrueRequest STARTTLS for SMTP.
request-timeoutstring"30s"Per-request timeout.
retryobject{"attempts": 1, "backoff": "0s", "retry-on-statuses": []}Attempt count, backoff, and retry-on-statuses map.
expected-statuseslist of integer[200, 201, 202, 204]Accepted HTTP status codes.
network-allowlistlist of string[]Configured network destination constraints.

Inputs and output ​

Bind these declared ports through with:

PortValue type
titlestring
bodystring
channeldesktop, slack, teams, webhook, email
urgencylow, normal, critical
webhook-urlstring
headersobject
payloadany JSON value
email-fromstring
email-tolist of string
smtp-hoststring
smtp-portinteger (min 1, max 65535)
smtp-usernamestring
smtp-passwordstring
smtp-starttlsboolean

Successful output fields use these exact selector names:

FieldValue type
sentconstant true
titlestring
bodystring
channeldesktop, slack, teams, webhook, email
urgencylow, normal, critical

For example, refer to node.step.output.sent from a compatible downstream binding.

Preflight and limits ​

The channel must be configured and available. Headless sessions may have no desktop notifier; network channels need their own connectivity and credentials.

Use Raticode rattish check and Raticode rattish preflight before choosing to run the example. The installed contract is available through Raticode rattish docs --format json.

Continue with Node reference, Routes and joins, or Runs and approvals.