Node Types¶
Note
See chatbot workflow cookbook for example usage.
LLM Node¶
Use an LLM to respond to the node input. This node can be configured including: - a prompt with promptto give the LLM instructions on how to respond, - selecting a history mode for the LLM, - and to use tools which enable it to perform additional actions.
Routing Nodes¶
See the Router Node page for full documentation including both Static Router and LLM Router
Assistant as a Node¶
Use an OpenAI assistant for advanced conversational AI.
Python Code Node¶
Execute custom Python code for logic, data processing, and external API calls. - See the Python Node page for full documentation including utility functions to interact with users data - Utility functions can interact with pipeline state including Temporary State and user Session State - and attachments uploaded by user - See the HTTP client documentation for calling external APIs
Template¶
Renders a Jinja template.
Available Template Variables¶
The following variables are available in the template context:
| Key | Description | Type |
|---|---|---|
input |
The input to the node | String |
node_inputs |
The list of all inputs to the node in the case of parallel workflows | List of strings |
temp_state |
Pipeline temporary state | Dict |
session_state |
Session state | Dict |
participant_details |
Participant details (identifier, platform) |
Dict |
participant_data |
Participant data | Dict |
participant_schedules |
Participant schedule data | List |
Sample Template¶
Input: {{ input }}
Node Inputs: {{ node_inputs }}
Temp State Key: {{ temp_state.my_key }}
Participant ID: {{ participant_details.identifier }}
Participant Platform: {{ participant_details.platform }}
Participant Data: {{ participant_data.custom_key }}
Schedules: {{ participant_schedules }}
Email Node¶
Send an email as part of a pipeline. This node acts as a passthrough, meaning the output will be identical to the input, allowing it to be used in a pipeline without affecting the conversation.
The subject, recipient, and body fields all accept plain strings or Jinja2 templates using the same template variables as the Template node.
The recipient field accepts a comma-separated list of email addresses and supports Jinja2 templates. For example:
- Single address:
{{ participant_data.email }} - List of addresses:
{{ participant_data.emails | join(',') }} - Delimited string:
{{ participant_data.emails | split(';') | join(',') }}
The body field is optional. When left blank, the node input is used as the email body — this preserves backwards compatibility with existing pipelines.
Dynamic subject and personalised body
Subject: Update for {{ participant_details.identifier }}
Body:
Extract Structured Data Node¶
Extract structured data from the input. This node acts as a passthrough, meaning the output will be identical to the input, allowing it to be used in a pipeline without affecting the conversation.
Update Participant Data Node¶
Extract structured data and save it as participant data.