Notification node
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
errorport 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,SuccessorAlert. 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,JSONorXLSX), the Split (Single file,One per roworGroup by) and a File Name Template. An email carries at most 25 attachments. Fields with secret-like names, such aspasswordortoken, 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
| Token | Value |
|---|---|
{{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
| Port | Direction | Kind | Notes |
|---|---|---|---|
in | in | control | Rows that trigger the message. |
error | out | control | Receives 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
| Symptom | Cause | What to do |
|---|---|---|
| A token shows as empty | The token path is wrong. | Use one of the paths above; the run log names the unresolved token. |
| Several messages arrive for one run | Rows 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 attachment | Attach incoming rows is off, or no rows arrived. | Turn it on. |
| A Slack post goes to the wrong channel | Channel is blank, so the connection's default is used. | Set the channel. |
Rows on error with a channel message | The connection could not send, for example a wrong address or channel. | Check the connection and the recipient. |