Communication Nodes
Communication nodes let your workflows send messages to people and systems. Use them to deliver email notifications, post updates to Slack channels, respond to users in real-time chat, or send custom HTTP responses to webhook callers.
All Communication Nodes
Send emails via any SMTP server. Supports HTML and plain text bodies, attachments, CC/BCC, reply-to, and custom headers.
Post messages to Slack channels or direct messages. Supports Block Kit formatting, thread replies, and file uploads.
Send a response back to the user in the active chat session. Used with Chat trigger workflows and AI agent conversations.
Send a custom HTTP response to the caller that triggered the workflow via a Webhook trigger. Configure status codes, headers, body, and content types.
Email (SMTP)
The Email node sends messages through an SMTP server. Configure your mail server credentials once and reuse them across workflows.
| Setting | Description |
|---|---|
| To | One or more recipient email addresses. Supports expressions for dynamic recipients. |
| From | Sender email address and optional display name. |
| Subject | Email subject line. Supports expression interpolation. |
| Body | HTML or plain text content. Use expressions to inject dynamic data. |
| CC / BCC | Optional carbon copy and blind carbon copy recipients. |
| Reply-To | Optional reply-to address different from the sender. |
| Attachments | Attach files from previous node outputs or from the sandboxed file system. |
To: {{ $json.customerEmail }}
From: [email protected]
Subject: Order #{{ $json.orderId }} Confirmed
Body (HTML):
<h1>Thank you, {{ $json.customerName }}!</h1>
<p>Your order has been confirmed and will ship within 2 business days.</p>Bulk email
Slack
The Slack node posts messages to channels or users in your Slack workspace. Authenticate with a Slack Bot token stored in credentials.
| Setting | Description |
|---|---|
| Channel | Channel name or ID. Use # prefix for public channels, or a user ID for DMs. |
| Text | Message content. Supports Slack markdown formatting. |
| Blocks | Optional Block Kit JSON for rich message layouts with buttons, sections, and images. |
| Thread | Optional thread timestamp to reply within an existing thread. |
| File Upload | Upload files from previous node outputs as Slack file attachments. |
Channel: #engineering-alerts
Text: Deployment complete
Blocks:
[
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*Deployment successful*\nService: {{ $json.service }}\nVersion: {{ $json.version }}"
}
}
]Chat Reply
The Chat Reply node sends a response back to the user in an active chat session. It is designed to work with the Chat trigger and AI Agent workflows where a real-time conversation is in progress.
The reply is delivered through NodeLoom's real-time messaging system. The user sees the response instantly in the chat widget or agent chat interface.
| Setting | Description |
|---|---|
| Message | The text to send back to the user. Supports expressions and Markdown formatting. |
Chat context
Respond to Webhook
The Respond to Webhook node sends a custom HTTP response back to the caller that triggered the workflow via a Webhook trigger. Use it to return processed data, confirmation messages, or redirect the caller to another URL.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
| respondWith | string | "json" | Response type: "json" (JSON body), "text" (plain text), "binary" (file download), "redirect" (HTTP redirect), or "noContent" (empty 204). |
| responseCode | number | 200 | HTTP status code for the response (e.g. 200, 201, 400, 404). |
| responseBody | string | object | "" | Static response body. Supports JSON objects or text strings. |
| responseBodyField | string | "" | Expression referencing a field from upstream node output to use as the response body (e.g. {{ $json.result }}). |
| responseHeaders | object | {} | Custom response headers as key-value pairs. |
| contentType | string | "application/json" | Content-Type header: "application/json", "text/plain", "text/html", or "custom". |
| customContentType | string | "" | Custom Content-Type value. Only used when contentType is "custom". |
| redirectUrl | string | "" | URL to redirect the caller to. Only used when respondWith is "redirect". |
| binaryField | string | "" | Field name containing binary data for file download responses. Only used when respondWith is "binary". |
Example
// Return processed data as JSON
{
"respondWith": "json",
"responseCode": 200,
"responseBody": {
"status": "success",
"data": "{{ $json.processedResult }}",
"timestamp": "{{ $json.completedAt }}"
},
"responseHeaders": {
"X-Request-Id": "{{ $json.requestId }}",
"Cache-Control": "no-cache"
}
}
// Redirect after processing
{
"respondWith": "redirect",
"responseCode": 302,
"redirectUrl": "https://app.example.com/success?id={{ $json.orderId }}"
}Webhook pairing