> 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.md).

# Nodes Explained

An overview of the node types in the Conversation Flow and the parts every node editor has in common.

Nodes are the building blocks of the [Conversation Flow](/digital-agent/conversation-flow.md). Each node does one job – says something, waits for the customer, decides, calculates, asks a language model, or hands the conversation over – and points to the node that comes next.

This chapter explains every node at the configuration level. For a hands-on walkthrough, see [Creating Your First Project](/digital-agent/building-new-projects.md).

<figure><img src="https://4261467870-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6iQTvxgRZRwPS1NgIGEb%2Fuploads%2FCIke53Oalgfna5yosxmJ%2Fnodes2-canvas-overview.png?alt=media&amp;token=01b7febb-de83-47c2-b4db-1cbb926fa547" alt="A conversation flow on the canvas"><figcaption><p>A small invoice-support flow that uses every node type</p></figcaption></figure>

## Nodes list

<table data-card-size="large" data-view="cards"><thead><tr><th data-type="content-ref"></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><a href="/digital-agent/conversation-flow/nodes-explained/message-node.md">MESSAGE node</a></td><td>Says something to the customer – text for chat, speech for voice, or a notification, announcement or carousel.</td><td><a href="/digital-agent/conversation-flow/nodes-explained/message-node.md">MESSAGE node</a></td></tr><tr><td><a href="/digital-agent/conversation-flow/nodes-explained/answer-node.md">ANSWER node</a></td><td>Waits for the customer's input, recognises the intent and handles fallbacks.</td><td><a href="/digital-agent/conversation-flow/nodes-explained/answer-node.md">ANSWER node</a></td></tr><tr><td><a href="/digital-agent/conversation-flow/nodes-explained/decision-node.md">DECISION node</a></td><td>Branches the conversation based on conditions.</td><td><a href="/digital-agent/conversation-flow/nodes-explained/decision-node.md">DECISION node</a></td></tr><tr><td><a href="/digital-agent/conversation-flow/nodes-explained/function-node.md">FUNCTION node</a></td><td>Runs tools and sets or resets variables in the background.</td><td><a href="/digital-agent/conversation-flow/nodes-explained/function-node.md">FUNCTION node</a></td></tr><tr><td><a href="/digital-agent/conversation-flow/nodes-explained/ai-node.md">AI node</a></td><td>Lets a large language model answer, use tools and route the conversation.</td><td><a href="/digital-agent/conversation-flow/nodes-explained/ai-node.md">AI node</a></td></tr><tr><td><a href="/digital-agent/conversation-flow/nodes-explained/transfer-node.md">TRANSFER node</a></td><td>Hands the conversation over to another project in your organization.</td><td><a href="/digital-agent/conversation-flow/nodes-explained/transfer-node.md">TRANSFER node</a></td></tr><tr><td><a href="/digital-agent/conversation-flow/nodes-explained/redirect-node.md">REDIRECT node</a></td><td>Redirects the call to a human agent, a queue or a phone number.</td><td><a href="/digital-agent/conversation-flow/nodes-explained/redirect-node.md">REDIRECT node</a></td></tr><tr><td><a href="/digital-agent/conversation-flow/nodes-explained/start-end-nodes.md">START / END nodes</a></td><td>Where every conversation begins and where it ends.</td><td><a href="/digital-agent/conversation-flow/nodes-explained/start-end-nodes.md">START / END nodes</a></td></tr></tbody></table>

***

## Node types and names

Every node name starts with a fixed prefix that tells you its type. You type only the rest of the name; letters are converted to upper case and spaces to `_`.

| Node     | Prefix   | Example                |
| -------- | -------- | ---------------------- |
| Start    | –        | `START` (one per flow) |
| Message  | `MSG_`   | `MSG_WELCOME`          |
| Answer   | `ANS_`   | `ANS_MAIN_TOPIC`       |
| Decision | `DEC_`   | `DEC_CUSTOMER_TYPE`    |
| Function | `FNC_`   | `FNC_LOAD_CUSTOMER`    |
| AI       | `AI_`    | `AI_ASSISTANT`         |
| Transfer | `TRAN_`  | `TRAN_VIP_SUPPORT`     |
| Redirect | `RDRCT_` | `RDRCT_BILLING_TEAM`   |
| End      | `END_`   | `END_DONE`             |

A new node is called `NODE_<number>` and its editor opens with the name field ready. If you close it without a real name, or with a name another node already uses, a warning reminds you to rename it.

## Adding nodes

<div align="left"><figure><img src="https://4261467870-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6iQTvxgRZRwPS1NgIGEb%2Fuploads%2F1Ibvn3VmYuakXkp3flUo%2Fnodes-nodes-library.png?alt=media&amp;token=8900a08d-94fb-45c2-9b57-a7d8b1ccab3a" alt="The Nodes panel" width="145"><figcaption><p>The Nodes panel</p></figcaption></figure></div>

* **From the Nodes panel** in the top-left corner of the canvas: drag a node onto the canvas, or click it and then click where it should go (press **Esc** to cancel). Nodes added this way are not connected yet.
* **From another node**: hover over a node that has a free output and click the arrow next to it. Pick a node type and the new node is created and connected.
* **From a target field**: when a **Next** field is empty, its list starts with **Create a new node:** – pick a type to create, connect and open the new node.

<div align="left"><figure><img src="https://4261467870-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6iQTvxgRZRwPS1NgIGEb%2Fuploads%2Fwk71TPbx17KO497sgaS5%2Fnodes-node-hover-menu.png?alt=media&amp;token=32baea71-8b82-4f3c-8d4a-f1fd5049b8e4" alt="Adding a connected node from the hover arrow" width="220"><figcaption><p>Adding a connected node from the hover arrow</p></figcaption></figure></div>

## The node editor

Double-click a node to open its editor. **Alt + double-click** opens the editor docked to the left, so the canvas stays visible. There is no Save button – **closing the editor saves your changes.**

Every editor shares these parts:

* **Header** – the node name with a pencil icon to rename it, and arrows to jump to the previous or next node.
* **Tools** – smart functions the node runs, for example a date extractor or an API call. Click **Add**, pick the tool from the catalogue and name the variable that receives its result.
* **Variables** – values the node sets, written as Python-style expressions: `"text"` for text, `32` for a number, `True`/`False`, or the name of another variable.
* **Next** – the node the conversation continues to. Turn on **Dynamic** to take the next node's name from a variable instead.

Tick the checkbox of one or more tools or variables to **Copy to node** (to another node, or the same node to duplicate them) or **Delete** them. Drag the handle on the right to change their order – they run from top to bottom.

{% hint style="info" %}
Insert a variable into any text field by typing `{` or clicking the `{x}` icon. During the conversation, `{customer_name}` is replaced by the variable's value.
{% endhint %}

## Working on the canvas

* **Right-click a node** to **Group nodes** or **Remove node**. Right-click a selection of nodes (Shift + click or Shift + drag) to group, remove or **Copy / Paste** them.
* **Groups** are coloured frames that keep related nodes together. Right-click a group to rename it, change its colour, detach its nodes or remove it.
* **Reference nodes** replace a long connection with a shortcut: right-click a connection and choose **Reference node**. Double-clicking a reference opens the original node.
* **Comments** – click the speech-bubble icon in the top bar, then click a node or the canvas to leave a comment for your team.
* **Ctrl/Cmd + C** and **Ctrl/Cmd + V** copy and paste nodes, also between projects. Pasted nodes get the suffix `_COPY`. **Ctrl/Cmd + Z** and **Y** undo and redo.

{% hint style="info" %}
Groups, comments and reference nodes only help you organise the canvas – they don't change how the conversation runs.
{% endhint %}
