This document purpose is to provide some brief overview about Flows


Flows are the core of your Plantt app. Flows describe the user stories, and define your business logic in the conversation.

We encourage you to think of flows as dialogs of your your app: self-contained functionalities that you can reuse and initiate from in many different scenarios of your app. That could be, for example: adding an item to a shopping cart, authenticating the user, or performing some intake before escalating to an agent.

The easiest way to get started with Flows, is just drawing them. Start by sketching the conversation flow, and then try to identify the reusable components there. These are your flows.


Essentially, Flows are conversation trees consisting of Nodes. Nodes are components that describe the logic blocks of the conversation.

We use Nodes to define the logic parts of the conversation tree - like getting the user's address, updating a ticket in your CRM application, searching through the database, and such.

Prompt Nodes

Prompts are type of nodes in the conversation flow that used to receive user input. Use prompts when you need to present the user with a question (e.g. Send us an image of you pet) and you expect an answer with a certain structure (e.g. a photo).

Prompt nodes are responsible to get the user input, validate it and then store it in the flow state and continue on to the next node.

Function nodes

Function nodes are basically API calls or any code you can execute at any time on during the conversation. They are used to integrate with your backends and third party services, and to apply your business logic.

For example, you can execute a function that open a ticket on your CRM when a user complain about something. You could also connect directly to your databases, or run an AI model to detect objects - anything you need to tailor the experience of your assistant.

Redirect Nodes

An important concept in designing your Plantt App is to reuse Flows.

Redirect Nodes lets you navigate the conversation and jump between flows depending on the user input and your business logic.

This way you can take advantage of re-using flows - breaking your app to a small peaces of standalone components - that each describe a unique user story (e.g. "search a flight", "add an item to cart", etc.).


The flow's state lets you store information during the conversation and then use this when executing functions or writing messages.

It takes key-value pairs and stores them in the state object which can be accessed from later from other nodes or functions.

Read more about State.