> For the complete documentation index, see [llms.txt](https://docs.borndigital.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.borndigital.ai/digital-agent/conversation-flow/nodes-explained/message-node.md).

# MESSAGE node

Use the Message node when you want to tell the customer something.

The Message node is how your digital agent speaks to the customer – to greet them, ask a question, give information or guide them to the next step. One node can send several messages in a row; in a chat, each message is one chat bubble.

<figure><img src="https://4261467870-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6iQTvxgRZRwPS1NgIGEb%2Fuploads%2Ft8ophYZqZuCSEAPF57w7%2Fnodes2-msg-full.png?alt=media&amp;token=3c4be419-2139-494d-aff2-dae40178a1e1" alt="The Message node editor"><figcaption><p>The Message node editor with split Text and Speech</p></figcaption></figure>

The editor has these sections, from top to bottom:

* **Tools** and **Variables** – run tools and set variables when the conversation reaches this node, for example to record a status. See [The node editor](/digital-agent/conversation-flow/nodes-explained.md#the-node-editor).
* **Message** – what the customer sees or hears.
* **Voice** – the voice your agent speaks with.
* **Configuration** – when the flow moves on.
* **Next** – the node the conversation continues to.

***

## Message

Type the message into the **Message** field. Click **Add** to add another message below it; drag the handle on the left to reorder messages, or click the bin to delete one.

### Text and Speech

By default, one text is used for both chat and voice. Turn on **Split** to write them separately:

* **Text** – shown in chat. Supports **Markdown** – see [Customizing text output](/for-advanced-users/conversation-design-tips/customizing-text-output.md).
* **Speech** – read out by the voicebot. Supports **SSML** tags for pronunciation and intonation – see [Customizing speech synthesis](/for-advanced-users/conversation-design-tips/customizing-speech-synthesis.md).

When you turn **Split** off again, choose which version to keep – **Keep "Text"** or **Keep "Speech"**.

{% hint style="info" %}
Type `{` or click the `{x}` icon to insert a variable, for example `{customer_name}`. During the conversation, the variable's value is used instead.
{% endhint %}

### Message forms

Besides ordinary messages, the node can send one of three special forms. Click **Change to different message form?** under the section title to switch.

<figure><img src="https://4261467870-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6iQTvxgRZRwPS1NgIGEb%2Fuploads%2FPYz2t0LJxTaDuQJm2nSK%2Fnodes2-msg-forms.png?alt=media&amp;token=ae1ee22d-601e-4d65-bc94-bad47620a19b" alt="Choosing a message form"><figcaption><p>Choosing a message form</p></figcaption></figure>

| Form             | What it does                                                                                                                                                 |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Messages**     | Standard text and speech messages.                                                                                                                           |
| **Notification** | A static message highlighted in the chat window and always shown, for example your opening hours. Enter it in **Notification text**.                         |
| **Announcement** | A placeholder for an announcement set up in the project details (**Edit announcements**). It is shown only while that announcement is turned on – see below. |
| **Carousel**     | A set of images the customer can browse and choose from. Add each image with a **Name** and a **URL**, then drag the thumbnails to reorder them.             |

{% hint style="warning" %}
Switching to a different form clears the content of the node.
{% endhint %}

### Announcements

Announcements let you change what your agent says without editing the flow – for example to warn customers about an outage or a holiday schedule. Create and schedule the announcement in the [project details](/digital-agent/workspace/project-details.md#announcements), then place an **Announcement** message where it should be played:

* **Announcement** – the announcement to show.
* **Type** – **Modal** (a dialog the customer confirms with the **Confirmation label** button) or **Toast** (a short pop-up with a **Toast type** – `success`, `info`, `warning` or `error` – that disappears after **Close after (ms)**; `0` keeps it open).

{% hint style="info" %}
For voice conversations, the announcement is read out from its **Announcement voice** text. **Type** applies to chat only. For a **Modal** announcement, fill in **Confirmation label** – without it the announcement is not shown.
{% endhint %}

***

## Voice

Choose the **Provider** and **Voice model** your agent speaks with. For Azure and Google voices you can also adjust **Speaking rate** and **Voice pitch**.

{% hint style="warning" %}
The voice setting applies to the **whole project**, not just this node. Changing it in one Message node changes it everywhere.
{% endhint %}

***

## Configuration

* **Execute message first** – the flow continues to the next node only after this message, and every message before it, has been played to the customer. Use it for voice when a following node takes time – for example a slow API call – and the message should bridge that time. When it is off, the flow runs on until the next Answer node and the messages are played meanwhile. To let the next node start while the message is still playing, set the variable `message_played_type` to `immediate` – see [Voice variables](/digital-agent/voice/voice-variables.md#continue-while-a-message-is-still-playing).

***

## Next

Choose the node the conversation continues to. Turn on **Dynamic** to take the node name from a variable instead – useful when the next step depends on the conversation so far.
