> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flowx.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Send notification action

> Send emails directly from process nodes using the Send Notification action. Supports both new outbound emails and replies to received emails.

## Overview

The Send Notification action enables process nodes to send emails directly through a predefined email connection. It supports two modes:

* **New email mode** - Send a new email to specified recipients
* **Reply mode** - Reply to an email that triggered the process (using data from an [Email Trigger](../../platform-deep-dive/integrations/email-trigger) or [Microsoft Outlook](../../platform-deep-dive/integrations/microsoft-outlook-data-source) data source)

This differs from the existing [Kafka send](../node/message-send-received-task-node) notification approach: instead of publishing a message to Kafka for the Notifications Plugin to process, the Send Notification action sends the email directly through an email connection configured as an [Email Sender](../../platform-deep-dive/integrations/email-sender) (SMTP) or [Microsoft Outlook](../../platform-deep-dive/integrations/microsoft-outlook-data-source) (MS Graph) data source.

<Info>
  Notification templates configured before this feature for Kafka-based sending continue to work without modification.
</Info>

<Tip>
  **Recommended for new processes.** The Send Notification action provides typed, validated configuration fields and is the simpler choice for outbound emails. The [Kafka-based sending guide](../../platform-deep-dive/core-extensions/content-management/notifications-plugin/sending-an-email-with-attachments) remains fully supported for existing processes and advanced cases where you need to craft the notification payload yourself.
</Tip>

***

## Prerequisites

Before using the Send Notification action, ensure you have:

1. An [Email Sender](../../platform-deep-dive/integrations/email-sender) (SMTP) or [Microsoft Outlook](../../platform-deep-dive/integrations/microsoft-outlook-data-source) (MS Graph) data source configured in Integration Designer (or a Default Server configured at the environment level)
2. A [notification template](../../platform-deep-dive/core-extensions/content-management/notifications-plugin/managing-notification-templates) with **Email Server** set to **Predefined Email Connection**

***

## Adding the action

The Send Notification action is available on the following node types:

* [Send Message Task](../node/message-send-received-task-node#message-send-task)
* [Task](../node/task-node)
* [User Task](../node/user-task-node)

To add the action:

1. Select a node in your process definition
2. Open the **Actions** tab
3. Click **Add action**
4. Set **Action type** to **Send Notification**

<Frame>
  ![Send Notification](https://s3.eu-west-1.amazonaws.com/docx.flowx.ai/5.6/et1.png)
</Frame>

***

## Configuration

### Notification template

<ParamField path="Notification Template" type="select" required>
  Select the notification template to use for the email content.

  <Info>
    Only notification templates with **Email Server** set to **Predefined Email Connection** appear in this list.
  </Info>
</ParamField>

### Data mapping

The **Data Mapping** section contains the email delivery settings, starting with the reply toggle.

<ParamField path="Reply to received emails" type="boolean">
  Toggle this setting to reply to the email that started the process.

  **Default:** OFF

  <Info>
    When enabled, the reply is sent only to the original sender unless you configure CC or BCC Receivers. The subject is automatically set to `RE: <original email subject>`.
  </Info>
</ParamField>

***

## Reply mode (reply toggle ON)

When **Reply to received emails** is enabled, the action replies to the email that triggered the current process instance. The email is sent to the original sender, and the subject is automatically prefixed with `RE:`.

<ParamField path="Reply to Email Header" type="object" required>
  The process variable key that contains the `headerParams` object from the original email received through an [Email Trigger](../../platform-deep-dive/integrations/email-trigger).

  **Example:** `${replyField}`

  <Info>
    The `headerParams` object includes the `Message-ID` and other headers from the original email, which are required to maintain the email conversation thread.
  </Info>
</ParamField>

<ParamField path="Language" type="string" required>
  The process variable key that resolves to a language code for the notification template.

  **Examples:** `en`, `ro`, `fr`

  <Tip>
    Use a process variable key that resolves to a language code — for example, `"en"` or `"ro"`.
  </Tip>
</ParamField>

<ParamField path="Attachments" type="json">
  Optional file attachments. Enter a JSON object (single attachment) or array of JSON objects (multiple), or a process variable that resolves to the same shape.

  Each attachment requires:

  * `path` — file storage key (for example, `flowx-document-plugin-.../file.pdf`), not a local OS path
  * `filename` — name shown to the recipient

  **Example:**

  ```json theme={"system"}
  [{"path": "flowx-document-plugin-.../report.pdf", "filename": "Report.pdf"}]
  ```

  <Frame>
    ![Attachments field example](https://s3.eu-west-1.amazonaws.com/docx.flowx.ai/5.6/attachments.png)
  </Frame>

  <Warning>
    On SMTP, omitting `filename` results in an unnamed attachment. Always set it.
  </Warning>
</ParamField>

<ParamField path="Receivers" type="string | array" required>
  The recipients for the reply. If left empty, the reply is automatically sent to the original sender (`emailMessage.sender`). Use a process variable or explicit list to override.

  **Example:** `${emailMessage.sender}`

  <Tip>
    For multiple addresses, enter a JSON array literal (`["a@example.com","b@example.com"]`) or a process variable key that resolves to a list.
  </Tip>
</ParamField>

<ParamField path="CC Receivers" type="string | array">
  CC recipients for the reply email. Enter a JSON array literal (`["a@example.com","b@example.com"]`) or a process variable key that resolves to a list.

  <Warning>
    Original CC recipients are **not** preserved automatically. If this field is empty, the reply is sent without any CC. To reply-all, pass `${emailMessage.cc}` explicitly (or build your own list).
  </Warning>
</ParamField>

<ParamField path="BCC Receivers" type="string | array">
  BCC recipients for the reply email. Enter a JSON array literal (`["a@example.com","b@example.com"]`) or a process variable key that resolves to a list.

  <Info>
    BCC recipients from the original email are not visible on incoming messages and cannot be inherited. Set this field explicitly if you need BCCs on the reply.
  </Info>
</ParamField>

<ParamField path="Template Data" type="object">
  Map data sent from the process through the template. Use the JSON editor to define key-value pairs matching the data model in your notification template.
</ParamField>

***

## New email mode (reply toggle OFF)

When **Reply to received emails** is turned off, the action sends a new email to the specified recipients.

<ParamField path="Language" type="string" required>
  The process variable key that resolves to a language code for the notification template.

  **Examples:** `en`, `ro`, `fr`

  <Tip>
    Use a process variable key that resolves to a language code — for example, `"en"` or `"ro"`.
  </Tip>
</ParamField>

<ParamField path="Attachments" type="json">
  Optional file attachments. Enter a JSON object (single attachment) or array of JSON objects (multiple), or a process variable that resolves to the same shape.

  Each attachment requires:

  * `path` — file storage key (for example, `flowx-document-plugin-.../file.pdf`), not a local OS path
  * `filename` — name shown to the recipient

  **Example:**

  ```json theme={"system"}
  [{"path": "flowx-document-plugin-.../report.pdf", "filename": "Report.pdf"}]
  ```

  <Frame>
    ![Attachments field example](https://s3.eu-west-1.amazonaws.com/docx.flowx.ai/5.6/attachments.png)
  </Frame>

  <Warning>
    On SMTP, omitting `filename` results in an unnamed attachment. Always set it.
  </Warning>
</ParamField>

<ParamField path="Receivers" type="string | array" required>
  The recipients for the email. Enter a JSON array literal (`["a@example.com","b@example.com"]`) or a process variable key that resolves to a list.
</ParamField>

<ParamField path="CC Receivers" type="string | array">
  CC recipients for the email. Enter a JSON array literal (`["a@example.com","b@example.com"]`) or a process variable key that resolves to a list.
</ParamField>

<ParamField path="BCC Receivers" type="string | array">
  BCC recipients for the email. Enter a JSON array literal (`["a@example.com","b@example.com"]`) or a process variable key that resolves to a list.
</ParamField>

<ParamField path="Template Data" type="object">
  Map data sent from the process through the template. Use the JSON editor to define key-value pairs matching the data model in your notification template.
</ParamField>

<Frame>
  ![Send Notification](https://s3.eu-west-1.amazonaws.com/docx.flowx.ai/5.6/et2.png)
</Frame>

***

## Example: Reply to a customer email

This example shows a complete flow where an incoming email triggers a process, and the process replies to the sender.

<Steps>
  <Step title="Set up the Email Trigger">
    Configure an [Email Trigger](../../platform-deep-dive/integrations/email-trigger) data source to monitor incoming emails (for example, `support@company.com`).
  </Step>

  <Step title="Set up the Email Sender">
    Configure an [Email Sender](../../platform-deep-dive/integrations/email-sender) data source with SMTP credentials for outbound emails.
  </Step>

  <Step title="Create a notification template">
    Create a notification template for the reply email:

    1. Set **Email Server** to **Predefined Email Connection**
    2. Set **Email Sender** to your Email Sender data source
    3. Design the reply content using the template editor
  </Step>

  <Step title="Design the process">
    Create a process with:

    * A **Message Start Event** configured with the Email Trigger
    * Processing nodes for your business logic (for example, classify the email, look up customer data)
    * A node with the **Send Notification** action configured in reply mode
  </Step>

  <Step title="Configure the Send Notification action">
    On the appropriate node:

    1. Set **Action type** to **Send Notification**
    2. Select your notification template
    3. Toggle **Reply to received emails** to **ON**
    4. Set **Reply to Email Header** to the process variable containing the original email's header params (for example, `${replyField}`)
    5. Set **Receivers** to `${emailMessage.sender}`
    6. Set **Language** to the appropriate language code (for example, `en`)
  </Step>
</Steps>

When an email arrives, the process starts automatically, runs your business logic, and sends a reply to the original sender — maintaining the email conversation thread.

***

## Related resources

<CardGroup cols={2}>
  <Card title="Email Sender" icon="envelope" href="../../platform-deep-dive/integrations/email-sender">
    Configure SMTP connections for sending emails
  </Card>

  <Card title="Email Trigger" icon="envelope-open-text" href="../../platform-deep-dive/integrations/email-trigger">
    Configure IMAP connections to trigger processes from incoming emails
  </Card>

  <Card title="Notification Templates" icon="file-lines" href="../../platform-deep-dive/core-extensions/content-management/notifications-plugin/managing-notification-templates">
    Create and manage email notification templates
  </Card>

  <Card title="Node Actions" icon="bolt" href="./actions">
    Learn about all available action types
  </Card>
</CardGroup>
