Skip to main content

Notification node

Output & Observability

What it does​

The Notification node sends a message through a connection: an email through an SMTP connection, or a post through a Slack, Teams or Discord connection. It sends one message each time rows reach it, and the message can include values from the run and from those rows.

An email can attach the incoming rows as a file.

Notification is the end of its branch: nothing connects after it.

When to use​

  • People need to know a run reached a point, finished, or produced particular rows.
  • Failed rows should reach someone: connect a node's error port to a Notification.
  • Only some rows matter: put a Filter before the Notification.

Configure​

Select the node. Under Delivery in the side panel, choose a Notification Connection, optionally a saved action, and press Configure Action to open Configure Notification.

  • Action name: required, for example Notify: Data pipeline started.
  • Notification type: Info, Success or Alert. It sets the style of the message.
  • Template: pick a saved message template, or write the subject and message here. Saved templates are under Manage Account > Message Templates.

Email (SMTP connection)

  • Recipients, Cc and Bcc.
  • Subject and Message.
  • Attachments: Attach incoming rows is on by default. Choose the Format (CSV, JSON or XLSX), the Split (Single file, One per row or Group by) and a File Name Template. An email carries at most 25 attachments. Fields with secret-like names, such as password or token, are hidden in attachments.

Slack: Channel (blank uses the connection's default), Sender name, Thread ID (optional) to reply in a thread, and the message.

Teams: Card title and the message.

The preview on the right shows the message as it will look.

Values in the message​

TokenValue
{{var.exec.name}}A run variable from a Variable node.
{{sys.execution.id}}The run id.
{{sys.environment.name}}The environment the run uses.
{{sys.node.name}}This node's name.
{{sample.firstRow.field}}A field of the first incoming row.

To list rows, loop over them: {% for r in sample.rows %}{{r.order_id}} {% endfor %}. Conditions use {% if ... %}...{% else %}...{% endif %}. A token that does not resolve is left empty, and the run log records a warning.

Ports​

PortDirectionKindNotes
inincontrolRows that trigger the message.
erroroutcontrolReceives the input rows when the message cannot be sent.

Notification can follow Start, a Load, or any processing node.

Examples​

Alert on failed writes. Connect a Load's error port to a Notification on an SMTP connection. Subject Load failed in {{sys.environment.name}}, message {% for r in sample.rows %}{{r.dl_error}} {% endfor %}. The failed rows are attached as CSV.

Post when a run starts. Start > Notification on a Slack connection, Channel #data-alerts, message Run {{sys.execution.id}} started.

Notify only on large orders. Source > Filter (GT(amount, 10000)) > Notification with message Large order {{sample.firstRow.order_id}}.

Troubleshooting​

SymptomCauseWhat to do
A token shows as emptyThe token path is wrong.Use one of the paths above; the run log names the unresolved token.
Several messages arrive for one runRows reached the node in several batches, and each batch sends a message.Put a Compute node in group-by mode before the Notification to send one summary.
The email has no attachmentAttach incoming rows is off, or no rows arrived.Turn it on.
A Slack post goes to the wrong channelChannel is blank, so the connection's default is used.Set the channel.
Rows on error with a channel messageThe connection could not send, for example a wrong address or channel.Check the connection and the recipient.