> For the complete documentation index, see [llms.txt](https://angoor-ai.gitbook.io/angoor-ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://angoor-ai.gitbook.io/angoor-ai/basics/configuration/flows/actions.md).

# Actions

Actions are the largest family of components — ninety of them, spread across twenty categories. Each runs a discrete piece of backend logic: setting a variable, creating a ticket, querying Shopify, transcribing audio, generating a payment link, and much more. You will find them under **Actions** in the step palette.

For every action, the **inputs** are the values you bind in the step's side panel, and the **outputs** are the results the action writes back to flow variables for later steps to read. An input or output typed *variable* carries a value through the flow; other types — *Entity*, *Form*, *Team*, *UserGroup*, *Tool*, *ShopifyLogin*, and so on — refer to objects you select rather than type.

A few actions are deliberately minimal: their work is carried out by the runtime engine or by configuration saved on the step, so they list no inputs or outputs. A small number are placeholders not yet fully implemented; these are noted individually. Channel-specific actions — Shopify, Voice, Leadsquare, Airtable, Instagram and Messenger comments — require the matching integration to be connected for your organization.

***

### Data & Variables

#### Add Tag

<figure><img src="/files/5FTDZcKxwCVZoxV0NGpX" alt=""><figcaption></figcaption></figure>

Adds tags in a workflow. A minimal step whose work is handled by the runtime; it persists the execution record and operates on the current session and flow context.

Inputs: none. Outputs: none.

#### Add To Array

Appends a single element to an array and returns the updated array.

<figure><img src="/files/sIXpvD8J1XviUCEgAio6" alt=""><figcaption></figcaption></figure>

| Input   | Type     | Required | Description                 |
| ------- | -------- | -------- | --------------------------- |
| array   | variable | Yes      | Array to add the element to |
| element | variable | No       | Element to add to the array |

| Output         | Type     | Description                          |
| -------------- | -------- | ------------------------------------ |
| updated\_array | variable | The array with the new element added |

#### Add To Variable Array

Appends a value to an array variable. If the source variable is already a list, the value is appended; if it holds a single non-list value, the variable becomes an array containing both; if it is empty, a new single-item array is created.

<figure><img src="/files/knnqJcvvnXMRaMNhgphX" alt=""><figcaption></figcaption></figure>

| Input            | Type     | Required | Description        |
| ---------------- | -------- | -------- | ------------------ |
| source\_variable | variable | Yes      | Variable to update |
| value            | variable | Yes      | Value to add       |

Outputs: none. The source variable is updated in place.

#### Create Prompt Variable

Fills a prompt template configured on the step with input variable values, producing a formatted prompt.

<figure><img src="/files/GhK410g8OQRJNP75tZ7q" alt=""><figcaption></figcaption></figure>

Inputs: none configured — operates on the current session and flow context.

| Output            | Type     | Description          |
| ----------------- | -------- | -------------------- |
| formatted\_prompt | variable | The formatted prompt |

The step requires a prompt (with a body and input variables) configured on the component itself; it reads that prompt from the step's own configuration rather than from input variables.

#### Delete Entity Data

Deletes entity rows.

<figure><img src="/files/5yq4pDLi85TVuM54IzGO" alt=""><figcaption></figcaption></figure>

| Input        | Type     | Required | Description           |
| ------------ | -------- | -------- | --------------------- |
| entity\_data | variable | Yes      | Entity rows to delete |

Outputs: none. *Note: this action's deletion logic is not yet implemented — the structure exists but it does not currently perform deletions.*

#### Formula

Evaluates an arithmetic formula using a safe evaluation engine that blocks arbitrary code. It supports addition, subtraction, multiplication, division, floor division, modulo, and powers. The expression is built from a prompt template on the step, filled with input data.

<figure><img src="/files/bNPglVA7SlpPRES7tVOZ" alt=""><figcaption></figcaption></figure>

Inputs: none configured — operates on the current session and flow context.

| Output | Type   | Description               |
| ------ | ------ | ------------------------- |
| result | number | The result of the formula |

The step needs a formula prompt configured in its data. For security, only arithmetic operations are allowed.

#### Generate Random Number

Returns a random integer between a minimum and a maximum.

<figure><img src="/files/heQRapbozidtFECDwDOY" alt=""><figcaption></figcaption></figure>

| Input      | Type     | Required | Description   |
| ---------- | -------- | -------- | ------------- |
| min\_value | variable | Yes      | Minimum value |
| max\_value | variable | Yes      | Maximum value |

| Output         | Type     | Description          |
| -------------- | -------- | -------------------- |
| random\_number | variable | The generated number |

Defaults to a range of 0 to 100 if the bounds are not provided.

#### Load Entity Data

Loads data into an entity, creating or updating rows. Rows are matched by primary key — existing rows are updated, new ones are created.

<figure><img src="/files/hOecmrr2EnXL7QUv0OG3" alt=""><figcaption></figcaption></figure>

| Input  | Type     | Required | Description              |
| ------ | -------- | -------- | ------------------------ |
| entity | Entity   | Yes      | Entity to load data into |
| data   | variable | Yes      | Data to load             |

Outputs: none. The entity must have a primary key defined; the step fails if the primary key is missing from the data rows.

#### Parse Json

Parses a JSON string into a JSON object, falling back to Python literal evaluation if standard JSON parsing fails.

<figure><img src="/files/UeVE1etk8dnGslGmvG4P" alt=""><figcaption></figcaption></figure>

| Input      | Type     | Required | Description        |
| ---------- | -------- | -------- | ------------------ |
| json\_data | variable | Yes      | JSON data to parse |

| Output       | Type     | Description     |
| ------------ | -------- | --------------- |
| parsed\_json | variable | The parsed JSON |

#### Search List For Key Value

Searches a list for items matching a key-value pair, then returns a chosen field from the matches. It filters the list by comparing a search key against a search value, then extracts the output key from the results.

<figure><img src="/files/BQro4HVXOFpfcYVN64wq" alt=""><figcaption></figcaption></figure>

| Input         | Type     | Required | Description                  |
| ------------- | -------- | -------- | ---------------------------- |
| list\_data    | variable | Yes      | List to search               |
| search\_key   | variable | Yes      | Key to match on              |
| search\_value | variable | Yes      | Value to match               |
| output\_key   | variable | Yes      | Field to return from matches |

| Output        | Type     | Description         |
| ------------- | -------- | ------------------- |
| output\_value | variable | The extracted value |

#### Set Variable

Sets the value of a flow variable.

<figure><img src="/files/BIj9aV3n5mHL5niOCTJt" alt=""><figcaption></figcaption></figure>

| Input            | Type     | Required | Description     |
| ---------------- | -------- | -------- | --------------- |
| source\_variable | variable | Yes      | Variable to set |
| value            | variable | Yes      | Value to set    |

Outputs: none.

***

### Text & Regex

#### Document To Text

Extracts text from documents — PDFs or images — using GPT-4 Vision. It processes a document one page at a time for efficiency, can include reference images from a tool's knowledge, and returns the extracted text as a session event.

<figure><img src="/files/0W9bpnZybiLMFl7HlPNP" alt=""><figcaption></figcaption></figure>

| Input    | Type     | Required | Description                      |
| -------- | -------- | -------- | -------------------------------- |
| document | variable | Yes      | Document saved by an entry point |
| tool     | Tool     | Yes      | Tool to use for analysis         |

| Output   | Type   | Description         |
| -------- | ------ | ------------------- |
| response | string | The tool's response |

Uses GPT-4o Vision. Processes up to 10 pages at 150 DPI with JPEG compression, and can include up to 3 reference images from the tool's knowledge. Requires S3 access.

#### Format Json

Converts JSON data into human-readable text. Dictionaries become key-value pairs; lists become comma-separated values.

<figure><img src="/files/HaCpqT0D0CqWi2yfQQF0" alt=""><figcaption></figcaption></figure>

| Input      | Type     | Required | Description         |
| ---------- | -------- | -------- | ------------------- |
| json\_data | variable | Yes      | JSON data to format |

| Output          | Type     | Description        |
| --------------- | -------- | ------------------ |
| formatted\_json | variable | The formatted text |

Accepts either a JSON string or an object.

#### Match With Regex

Matches a regular expression against a string or a list of strings and returns the matched groups.

<figure><img src="/files/o79TleH9Se58TZcxZ2P3" alt=""><figcaption></figcaption></figure>

| Input | Type     | Required | Description      |
| ----- | -------- | -------- | ---------------- |
| text  | variable | Yes      | Text to match    |
| regex | variable | Yes      | Pattern to match |

| Output        | Type     | Description      |
| ------------- | -------- | ---------------- |
| matched\_text | variable | The matched text |

For a list, returns an array of matched groups.

#### Transform With Regex

Transforms text by regex substitution, on a string or a list of strings.

<figure><img src="/files/NuKMKoXb7e1mxNrMOyvt" alt=""><figcaption></figcaption></figure>

| Input       | Type     | Required | Description        |
| ----------- | -------- | -------- | ------------------ |
| text        | variable | Yes      | Text to transform  |
| regex       | variable | Yes      | Pattern to match   |
| replacement | variable | Yes      | Replacement string |

| Output            | Type     | Description          |
| ----------------- | -------- | -------------------- |
| transformed\_text | variable | The transformed text |

#### Transliterate Text

Transliterates text from one language script to another, with automatic language detection, converting text to its spoken form in the target language.

<figure><img src="/files/IasNtvCWHsaEEl8q5KH3" alt=""><figcaption></figcaption></figure>

| Input            | Type     | Required | Description                       |
| ---------------- | -------- | -------- | --------------------------------- |
| text             | variable | Yes      | Text to transliterate             |
| input\_language  | variable | No       | Source language code (e.g. en-US) |
| target\_language | variable | No       | Target language code (e.g. hi-IN) |

| Output               | Type   | Description             |
| -------------------- | ------ | ----------------------- |
| transliterated\_text | string | The transliterated text |

Defaults to auto-detecting the source and using Hindi (hi-IN) as the target. Requires the SarvamAI integration.

***

### Date & Time

#### Format Date

Converts a date string into a formatted date string using a format pattern. It takes an ISO-format date and a standard strftime pattern.

| Input  | Type     | Required | Description    |
| ------ | -------- | -------- | -------------- |
| date   | variable | Yes      | Date to format |
| format | variable | Yes      | Format string  |

| Output          | Type     | Description        |
| --------------- | -------- | ------------------ |
| formatted\_date | variable | The formatted date |

#### Get Time Delta

Adds or subtracts hours, minutes, and seconds from a start time.

<figure><img src="/files/9fajHxnXSvUrP3C2OOjn" alt=""><figcaption></figcaption></figure>

| Input       | Type     | Required | Description                      |
| ----------- | -------- | -------- | -------------------------------- |
| start\_time | variable | Yes      | Start time (YYYY-MM-DD HH:MM:SS) |
| operation   | variable | Yes      | `add` or `subtract`              |
| hours       | variable | No       | Hours to apply                   |
| minutes     | variable | No       | Minutes to apply                 |
| seconds     | variable | No       | Seconds to apply                 |

| Output       | Type     | Description        |
| ------------ | -------- | ------------------ |
| result\_time | variable | The resulting time |

Returns the result in YYYY-MM-DD HH:MM:SS format, defaulting to the current time if parsing fails.

#### Get Time Difference

Returns the absolute difference in hours between two timestamps.

<figure><img src="/files/DTOihtl59BzfPdOs11vh" alt=""><figcaption></figcaption></figure>

| Input       | Type     | Required | Description                      |
| ----------- | -------- | -------- | -------------------------------- |
| start\_time | variable | Yes      | Start time (YYYY-MM-DD HH:MM:SS) |
| end\_time   | variable | Yes      | End time (YYYY-MM-DD HH:MM:SS)   |

| Output                  | Type     | Description         |
| ----------------------- | -------- | ------------------- |
| time\_difference\_hours | variable | Difference in hours |

Returns null if either timestamp cannot be parsed.

***

### Session Control

#### Add Assistant Event

Adds an assistant message event to the current session, creating a record tied to the session and the flow's user.

<figure><img src="/files/X89tAj1OIdupefSfOvJl" alt=""><figcaption></figcaption></figure>

| Input   | Type     | Required | Description              |
| ------- | -------- | -------- | ------------------------ |
| message | variable | Yes      | Assistant message to add |

| Output         | Type    | Description                   |
| -------------- | ------- | ----------------------------- |
| message\_added | boolean | Whether the message was added |
| event\_id      | string  | ID of the created event       |

#### Close All Controlled Sessions

Closes every controlled session in the organization except the current one. Intended for use in pre-flow execution.

<figure><img src="/files/1eDRdbsh7SyA4vUvUlii" alt=""><figcaption></figcaption></figure>

Inputs: none. Outputs: none.

#### Close Session

Closes the current session and runs post-session processing.

<figure><img src="/files/M16lkQ2Zh5Bk04HhF0Wu" alt=""><figcaption></figcaption></figure>

Inputs: none. Outputs: none.

#### Control Session

Marks the current session as controlled. Typically used in pre-flow execution to control or close a session.

<figure><img src="/files/kG6pSBBpKeMfyldFCuKa" alt=""><figcaption></figcaption></figure>

Inputs: none. Outputs: none.

#### Conversation Expansion

Retrieves a session's conversation history, session data, and platform, then closes the session and returns the context for analysis.

<figure><img src="/files/q07JRHdrLw6ze59VbPmw" alt=""><figcaption></figcaption></figure>

| Input       | Type   | Required | Description       |
| ----------- | ------ | -------- | ----------------- |
| session\_id | string | Yes      | Session to expand |

| Output                | Type   | Description     |
| --------------------- | ------ | --------------- |
| conversation\_history | list   | Session history |
| session\_bucket       | object | Session data    |
| user\_identifier      | string | User identifier |
| platform              | string | Platform        |

Closing the session is a side effect of this action.

#### Get First Member Response Time

Returns the timestamp of the first response from any team member in a session.

<figure><img src="/files/EucTYqkDfM9XDHDSQF7V" alt=""><figcaption></figcaption></figure>

| Input       | Type     | Required | Description      |
| ----------- | -------- | -------- | ---------------- |
| session\_id | variable | No       | Session to check |

| Output                | Type     | Description                     |
| --------------------- | -------- | ------------------------------- |
| first\_response\_time | variable | First team-member response time |

Defaults to the current session. Returns null if no team member has responded.

#### Session Context Setup

A placeholder for session-context initialization. It currently performs no action.

<figure><img src="/files/2MdZf6jiavAFmE28DEuu" alt=""><figcaption></figcaption></figure>

Inputs: none. Outputs: none.

#### Set Session Name

Sets the name of a session by ID, falling back to the current session if the ID is not found.

<figure><img src="/files/L9doQG0QijbMQOLvmeEV" alt=""><figcaption></figcaption></figure>

| Input         | Type     | Required | Description     |
| ------------- | -------- | -------- | --------------- |
| session\_id   | variable | Yes      | Session to name |
| session\_name | variable | Yes      | Name to set     |

| Output    | Type    | Description              |
| --------- | ------- | ------------------------ |
| name\_set | boolean | Whether the name was set |

***

### Flow Control

#### Add Plugin Event

Adds a plugin event to the session. Intended for pre-flow execution.

<figure><img src="/files/p0nEXgqwD3ckPR7Thr1k" alt=""><figcaption></figcaption></figure>

| Input         | Type     | Required | Description         |
| ------------- | -------- | -------- | ------------------- |
| plugin\_event | variable | No       | Plugin event to add |

Outputs: none.

#### Add System Prompt

Adds a system prompt to the flow context, filling the prompt's variables with input data.

<figure><img src="/files/xoagTZoEb2Ujm8Bo59Pb" alt=""><figcaption></figcaption></figure>

Inputs: none configured — operates on the current session and flow context. Outputs: none.

Requires a prompt configured in the step's data; it errors if the prompt is missing.

#### Agent Analyser

Analyzes and instructs an AI agent by calling an LLM with the agent's context, form data, and conversation history. It handles agent-to-user-group synchronization, quick-reply generation, and context saving.

<figure><img src="/files/X9FdeJ9QnciNejPBqQCo" alt=""><figcaption></figcaption></figure>

| Input | Type  | Required | Description                   |
| ----- | ----- | -------- | ----------------------------- |
| agent | Agent | Yes      | Agent to run the analyser for |

Outputs: none.

Calls the LLM with the agent's model, temperature, top-p, and penalty settings. If the agent is set to sync with a user group, collected data may be synced there.

#### Block Flow

Unconditionally blocks flow execution. Used mainly in pre-flow hooks to prevent the flow from continuing when a condition is met.

Inputs: none. Outputs: none.

#### Block If Session Closed

Blocks flow execution if the current session is closed. A pre-flow guard against operating on closed sessions.

Inputs: none. Outputs: none.

#### Loop Routing

Iterates over a list variable, running a sub-flow for each item and collecting the output of every iteration into a single result.

<figure><img src="/files/R2WUhcvGqngbrkGl6t0t" alt=""><figcaption></figcaption></figure>

| Input    | Type     | Required | Description              |
| -------- | -------- | -------- | ------------------------ |
| variable | variable | Yes      | List to loop over        |
| subflow  | subflow  | Yes      | Sub-flow to run per item |

| Output          | Type | Description                       |
| --------------- | ---- | --------------------------------- |
| output\_context | list | Combined output of all iterations |

#### Trigger Flow

Triggers another flow with input data.

<figure><img src="/files/Cmd0hEe7Y0vvG2vnGIfM" alt=""><figcaption></figcaption></figure>

| Input        | Type         | Required | Description             |
| ------------ | ------------ | -------- | ----------------------- |
| subscription | Subscription | Yes      | Subscription to trigger |
| input\_data  | variable     | Yes      | Input data to pass      |

Outputs: none. *Note: this is a placeholder — the trigger logic is not yet implemented.*

***

### User & Identity

#### Add Data To User

Adds or updates data fields on a user.

<figure><img src="/files/TEJxIk8BlVTwX34d7NaX" alt=""><figcaption></figcaption></figure>

| Input         | Type     | Required | Description                   |
| ------------- | -------- | -------- | ----------------------------- |
| user\_id      | variable | No       | User to update                |
| data\_field   | variable | Yes      | Data field to set (JSON)      |
| data\_to\_add | variable | Yes      | Data to add (as a dictionary) |

| Output     | Type     | Description       |
| ---------- | -------- | ----------------- |
| user\_id   | variable | User ID           |
| user\_name | variable | User name         |
| user\_data | variable | Updated user data |

#### Add Identifier To User

Adds a new identifier — email, phone, and so on — to a user profile. Defaults to the current session's user if no user is specified.

<figure><img src="/files/AWercfskb5eSvRK8HY6p" alt=""><figcaption></figcaption></figure>

| Input      | Type     | Required | Description                   |
| ---------- | -------- | -------- | ----------------------------- |
| user\_id   | variable | No       | User to add the identifier to |
| identity   | variable | Yes      | User identity                 |
| identifier | variable | Yes      | Identifier value              |

| Output         | Type     | Description                  |
| -------------- | -------- | ---------------------------- |
| identifier\_id | variable | ID of the created identifier |

Errors if neither a user ID nor an active session user is available.

#### Attach User Identifier To Session

Attaches a user identifier to a session, optionally replacing existing ones.

<figure><img src="/files/DsEfHxkgJ634GFHc8W0e" alt=""><figcaption></figcaption></figure>

| Input                | Type     | Required | Description                             |
| -------------------- | -------- | -------- | --------------------------------------- |
| user\_identifier\_id | variable | Yes      | Identifier to attach                    |
| session\_id          | variable | No       | Session to attach to                    |
| replace\_existing    | boolean  | No       | Whether to replace existing identifiers |

| Output   | Type    | Description                         |
| -------- | ------- | ----------------------------------- |
| attached | boolean | Whether the identifier was attached |

Defaults to the current session if none is given.

#### Check User By Data

Searches the organization for a user matching data filter criteria.

<figure><img src="/files/tQsiARmiOe9JHySKC1gi" alt=""><figcaption></figcaption></figure>

| Input        | Type     | Required | Description                       |
| ------------ | -------- | -------- | --------------------------------- |
| data\_filter | variable | Yes      | Filter to match against user data |

| Output     | Type     | Description  |
| ---------- | -------- | ------------ |
| user\_id   | variable | User ID      |
| user\_name | variable | User name    |
| phone      | variable | Phone number |
| email      | variable | Email        |

#### Create User

Creates or updates a user with the provided data and adds them to a user group. Identifiers and name are extracted from form fields according to the organization's country code.

<figure><img src="/files/FBKAd8w3DLs6gJKu7ENC" alt=""><figcaption></figcaption></figure>

| Input                  | Type      | Required | Description              |
| ---------------------- | --------- | -------- | ------------------------ |
| user\_data             | variable  | Yes      | User data                |
| user\_group            | UserGroup | Yes      | Group to add the user to |
| form                   | Form      | Yes      | Form to add the user to  |
| user\_identifier       | variable  | No       | User identifier          |
| user\_identifier\_type | variable  | No       | Identifier type          |

| Output   | Type     | Description                                              |
| -------- | -------- | -------------------------------------------------------- |
| user\_id | variable | User ID                                                  |
| created  | boolean  | True if newly created, false if the user already existed |

Requires a user group with an associated form.

#### Get User From Identifier

Retrieves a user from a phone or email identifier.

<figure><img src="/files/vTdxQ0zpbL4f1iO7Tbu0" alt=""><figcaption></figcaption></figure>

| Input            | Type     | Required | Description     |
| ---------------- | -------- | -------- | --------------- |
| identity         | variable | Yes      | User identifier |
| identifier\_type | variable | Yes      | Identifier type |

| Output                     | Type     | Description         |
| -------------------------- | -------- | ------------------- |
| user\_id                   | variable | User ID             |
| user\_name                 | variable | User name           |
| user\_identifier           | variable | Identifier ID       |
| user\_identifier\_value    | variable | Identifier value    |
| user\_identifier\_identity | variable | Identifier identity |

Phone identifiers use the organization's default country code.

***

### User Groups

#### Add To User Group

Adds a user to a user group, optionally storing group-specific data on the user.

<figure><img src="/files/ui0NdOMs5cXl5FBaOhXb" alt=""><figcaption></figcaption></figure>

| Input             | Type      | Required | Description         |
| ----------------- | --------- | -------- | ------------------- |
| user\_identifier  | variable  | No       | User to add         |
| user\_group       | UserGroup | Yes      | Group to add to     |
| user\_group\_data | variable  | No       | Group-specific data |

Outputs: none. Defaults to the current session's user if none is given.

#### Check User In Group

Checks whether a user belongs to a group.

<figure><img src="/files/gvx7LsHTUVfcZDkYW6LH" alt=""><figcaption></figcaption></figure>

| Input       | Type      | Required | Description    |
| ----------- | --------- | -------- | -------------- |
| user\_group | UserGroup | Yes      | Group to check |
| user\_id    | variable  | No       | User to check  |

| Output     | Type    | Description                  |
| ---------- | ------- | ---------------------------- |
| is\_member | boolean | Whether the user is a member |

#### Remove From User Group

Removes a user from a group, optionally clearing the associated group data.

<figure><img src="/files/Zb7j6MGzxMZFlZfKh7l7" alt=""><figcaption></figcaption></figure>

| Input            | Type      | Required | Description          |
| ---------------- | --------- | -------- | -------------------- |
| user\_identifier | variable  | No       | User to remove       |
| user\_group      | UserGroup | Yes      | Group to remove from |

Outputs: none. Defaults to the current session's user if none is given.

***

### Tickets / Support

#### Close Task

Closes a task by ID, optionally archiving it too.

<figure><img src="/files/9g5mqb1jphJw8Ers3wha" alt=""><figcaption></figcaption></figure>

| Input         | Type     | Required | Description           |
| ------------- | -------- | -------- | --------------------- |
| task\_id      | variable | Yes      | Task to close         |
| also\_archive | boolean  | No       | Also archive the task |

| Output | Type    | Description                 |
| ------ | ------- | --------------------------- |
| closed | boolean | Whether the task was closed |

The task must belong to the same organization as the session.

#### Create Ticket

Creates or updates a ticket on a Kanban board, with title, description, due date, attachments, and assignee. It reuses existing tickets when unique-field or per-user constraints match, unless forced to create a new one.

<figure><img src="/files/wR93WT4jj7blWFFRIt33" alt=""><figcaption></figcaption></figure>

| Input                    | Type        | Required | Description                                 |
| ------------------------ | ----------- | -------- | ------------------------------------------- |
| title                    | variable    | No       | Ticket title                                |
| description              | variable    | No       | Ticket description                          |
| input\_data              | variable    | No       | Input data                                  |
| session\_id              | variable    | No       | Session ID                                  |
| user\_id                 | variable    | No       | User ID                                     |
| board                    | KanbanBoard | Yes      | Kanban board                                |
| assignee                 | variable    | No       | User to assign to                           |
| ticket\_id               | string      | No       | Ticket ID (for updates)                     |
| force\_new\_ticket       | string      | No       | Force a new ticket                          |
| due\_date                | variable    | No       | Due date                                    |
| attachments              | variable    | No       | Attachments                                 |
| assign\_to\_conversation | boolean     | No       | Assign the session to the ticket's assignee |
| save\_user\_context      | boolean     | No       | Save user context from data                 |

| Output     | Type    | Description                    |
| ---------- | ------- | ------------------------------ |
| ticket\_id | string  | Ticket ID                      |
| created    | boolean | Whether the ticket was created |

Tickets are automatically linked to sessions. In agentic flows, the board's unique-field and unique-per-user settings are respected to deduplicate tickets.

#### Get All User Tickets

Retrieves all of a user's tickets on a board, with filters for archived and closed status and optional assignee details.

<figure><img src="/files/9pnlSBbieXPphMTs7V8C" alt=""><figcaption></figcaption></figure>

| Input                            | Type        | Required | Description              |
| -------------------------------- | ----------- | -------- | ------------------------ |
| board                            | KanbanBoard | Yes      | Kanban board             |
| user\_id                         | variable    | No       | User                     |
| include\_archived                | boolean     | No       | Include archived tickets |
| include\_closed                  | boolean     | No       | Include closed tickets   |
| include\_assignee\_name          | boolean     | No       | Include assignee name    |
| include\_assignee\_email         | boolean     | No       | Include assignee email   |
| include\_assignee\_phone\_number | boolean     | No       | Include assignee phone   |

| Output  | Type  | Description                                                                                          |
| ------- | ----- | ---------------------------------------------------------------------------------------------------- |
| tickets | array | Tickets, each with ID, name, data, creation time, hours since creation, and optional assignee fields |

Defaults to the current session's user. Returns an empty list if nothing matches.

#### Get Ticket

Retrieves a ticket by ID, including its assignee details. Falls back to the session's first ticket if no ID is given.

<figure><img src="/files/MNRRHmrBG4R0OOkWx2Td" alt=""><figcaption></figcaption></figure>

| Input      | Type   | Required | Description     |
| ---------- | ------ | -------- | --------------- |
| ticket\_id | string | No       | Ticket to fetch |

| Output                  | Type   | Description         |
| ----------------------- | ------ | ------------------- |
| ticket\_id              | string | Ticket ID           |
| ticket\_name            | string | Ticket name         |
| ticket\_data            | object | Ticket data         |
| assignee                | string | Assignee user ID    |
| assignee\_first\_name   | string | Assignee first name |
| assignee\_last\_name    | string | Assignee last name  |
| assignee\_email         | string | Assignee email      |
| assignee\_phone\_number | string | Assignee phone      |

Returns an empty object if the ticket is not found.

#### Select Ticket

Finds and selects a ticket on a board matching a unique field value for a user.

<figure><img src="/files/Vs0qA1U1VKFXq6KQqXQE" alt=""><figcaption></figcaption></figure>

| Input                | Type        | Required | Description    |
| -------------------- | ----------- | -------- | -------------- |
| board                | KanbanBoard | Yes      | Kanban board   |
| unique\_field\_value | variable    | Yes      | Value to match |
| user\_id             | variable    | No       | User           |

| Output       | Type   | Description |
| ------------ | ------ | ----------- |
| ticket\_id   | string | Ticket ID   |
| ticket\_name | string | Ticket name |
| ticket\_data | object | Ticket data |

Defaults to the current session's user.

#### Update Ticket

Updates an existing ticket — data, title, description, due date, assignee, attachments, user, or session — with selective field updates.

<figure><img src="/files/ae8TcJ5zdTmw3FxBOeaj" alt=""><figcaption></figcaption></figure>

| Input                 | Type        | Required | Description                 |
| --------------------- | ----------- | -------- | --------------------------- |
| ticket\_id            | variable    | Yes      | Ticket to update            |
| update\_data          | variable    | Yes      | Update data                 |
| board                 | KanbanBoard | Yes      | Kanban board                |
| user\_id              | variable    | No       | User                        |
| session\_id           | variable    | No       | Session                     |
| assignee              | variable    | No       | Assignee                    |
| due\_date             | variable    | No       | Due date                    |
| attachments           | variable    | No       | Attachments                 |
| title                 | variable    | No       | Title                       |
| description           | variable    | No       | Description                 |
| clear\_last\_assignee | boolean     | No       | Clear the previous assignee |

| Output  | Type    | Description                    |
| ------- | ------- | ------------------------------ |
| updated | boolean | Whether the ticket was updated |

Update data is merged recursively with the existing ticket data.

***

### Scheduling

#### Create User Schedule

Creates or updates a schedule for a user from a cron expression. It needs a user group subscription and a variable name to link the schedule to a notification channel.

<figure><img src="/files/qPRgF0y2Ve7ZW4Rd8gfB" alt=""><figcaption></figcaption></figure>

| Input            | Type      | Required | Description                              |
| ---------------- | --------- | -------- | ---------------------------------------- |
| user\_id         | variable  | No       | User                                     |
| user\_group      | UserGroup | Yes      | Group to source the subscription from    |
| variable\_name   | variable  | Yes      | Variable to source the subscription from |
| cron\_expression | variable  | Yes      | Cron expression                          |
| schedule\_id     | variable  | No       | Existing schedule to update              |
| data             | variable  | No       | Additional data                          |

| Output             | Type     | Description                                         |
| ------------------ | -------- | --------------------------------------------------- |
| user\_schedule\_id | variable | Schedule ID                                         |
| created            | boolean  | Whether the schedule was created or already existed |

#### Delete User Schedule

Deletes a user schedule by ID.

<figure><img src="/files/PSzhMuF7qmnNPM3s33q1" alt=""><figcaption></figcaption></figure>

| Input        | Type     | Required | Description        |
| ------------ | -------- | -------- | ------------------ |
| schedule\_id | variable | Yes      | Schedule to delete |

| Output  | Type    | Description                      |
| ------- | ------- | -------------------------------- |
| deleted | boolean | Whether the schedule was deleted |

#### Get Team Availability

Checks whether a team is currently working and, if not, returns when it will next be available.

<figure><img src="/files/HTGdb2KiisA2ULo1v2aw" alt=""><figcaption></figcaption></figure>

| Input | Type | Required | Description   |
| ----- | ---- | -------- | ------------- |
| team  | Team | Yes      | Team to check |

| Output             | Type     | Description                           |
| ------------------ | -------- | ------------------------------------- |
| is\_working        | variable | Whether the team is currently working |
| next\_availability | variable | Next availability time                |

`next_availability` is null while the team is working.

#### Get User Schedules

Retrieves all schedules for a user.

<figure><img src="/files/MjI9t16OesNfVVcxgLVi" alt=""><figcaption></figcaption></figure>

| Input    | Type     | Required | Description |
| -------- | -------- | -------- | ----------- |
| user\_id | variable | No       | User        |

| Output          | Type     | Description                  |
| --------------- | -------- | ---------------------------- |
| user\_schedules | variable | List of the user's schedules |

Defaults to the session's first user identifier.

***

### Shopify

These actions all require an active Shopify integration (a ShopifyLogin credential).

#### Add Tag To Shopify Order

Adds a tag to a Shopify order and returns the updated order.

<figure><img src="/files/vHpELe90XnOhDiiBc5ki" alt=""><figcaption></figcaption></figure>

| Input          | Type         | Required | Description        |
| -------------- | ------------ | -------- | ------------------ |
| shopify\_login | ShopifyLogin | Yes      | Shopify credential |
| order\_id      | variable     | No       | Order to tag       |
| tag\_to\_add   | variable     | No       | Tag to add         |

| Output         | Type     | Description       |
| -------------- | -------- | ----------------- |
| updated\_order | variable | The updated order |

Both the order ID and tag are needed for the action to succeed.

#### Cancel Shopify Order

Cancels a Shopify order.

<figure><img src="/files/qyuDICepV6okcGm5Tiny" alt=""><figcaption></figcaption></figure>

| Input          | Type         | Required | Description        |
| -------------- | ------------ | -------- | ------------------ |
| shopify\_login | ShopifyLogin | Yes      | Shopify credential |
| order\_id      | variable     | Yes      | Order to cancel    |

| Output    | Type     | Description          |
| --------- | -------- | -------------------- |
| response  | variable | Shopify API response |
| order\_id | variable | Order ID             |

#### Get Shopify Checkout Status

Retrieves the status and details of a checkout, including line items, contact details, pricing, and the abandoned-checkout URL.

<figure><img src="/files/p3hkNPXZWt6QUrTHmEoO" alt=""><figcaption></figcaption></figure>

| Input          | Type         | Required | Description         |
| -------------- | ------------ | -------- | ------------------- |
| shopify\_login | ShopifyLogin | Yes      | Shopify credential  |
| checkout\_id   | string       | No       | Checkout to look up |

| Output                   | Type   | Description                |
| ------------------------ | ------ | -------------------------- |
| checkout\_data           | object | Full checkout data         |
| checkout\_id             | string | Checkout ID                |
| completed\_at            | string | Completion time            |
| line\_items              | list   | Line items                 |
| item\_names              | string | Comma-separated item names |
| user\_email              | string | Customer email             |
| user\_phone              | string | Customer phone             |
| subtotal\_price          | string | Subtotal                   |
| total\_price             | string | Total                      |
| currency                 | string | Currency                   |
| abandoned\_checkout\_url | string | Abandoned-checkout URL     |

#### Get Shopify Data

Retrieves order and customer data by order ID or by user identifier (email, phone, or UUID), returning order details, fulfillment status, and shipping address.

<figure><img src="/files/ZjIiTQfmc8s4JgBysAtN" alt=""><figcaption></figcaption></figure>

| Input            | Type         | Required | Description                     |
| ---------------- | ------------ | -------- | ------------------------------- |
| shopify\_login   | ShopifyLogin | Yes      | Shopify credential              |
| user\_identifier | variable     | No       | User identifier                 |
| identifier\_type | variable     | No       | Identifier type                 |
| order\_id        | variable     | No       | Order ID                        |
| include\_fields  | boolean      | No       | Return full (non-minified) data |

| Output                              | Type     | Description                |
| ----------------------------------- | -------- | -------------------------- |
| user\_name                          | variable | Customer name              |
| user\_email                         | variable | Customer email             |
| user\_phone                         | variable | Customer phone             |
| order\_data                         | variable | Order data                 |
| order\_id                           | variable | Order ID                   |
| line\_items                         | variable | Line items                 |
| item\_names                         | variable | Comma-separated item names |
| financial\_status                   | variable | Financial status           |
| fulfillment\_status                 | variable | Fulfillment status         |
| payment\_gateway\_names             | variable | Payment gateways used      |
| last\_order\_created\_at            | variable | Last order creation time   |
| last\_order\_created\_duration\_hrs | variable | Hours since last order     |
| shipping\_address                   | variable | Shipping address           |

If no order ID is given, customer data is looked up by identifier, falling back to the session's user.

#### Get Shopify Order List

Retrieves order IDs filtered by date range and/or financial and fulfillment status.

<figure><img src="/files/GuxZFZM1jletdv9wkPhH" alt=""><figcaption></figcaption></figure>

| Input               | Type         | Required | Description                 |
| ------------------- | ------------ | -------- | --------------------------- |
| shopify\_login      | ShopifyLogin | Yes      | Shopify credential          |
| past\_x\_days       | variable     | No       | Orders from the past X days |
| x\_days\_ago        | variable     | No       | Orders from X days ago      |
| financial\_status   | variable     | No       | Financial status filter     |
| fulfillment\_status | variable     | No       | Fulfillment status filter   |

| Output     | Type     | Description        |
| ---------- | -------- | ------------------ |
| order\_ids | variable | Matching order IDs |

#### Get Shopify Product Data

Fetches product and variant details by product ID, variant ID, line-item ID, or order ID.

<figure><img src="/files/pHoxSPs4F3AoX4VqgSNJ" alt=""><figcaption></figcaption></figure>

| Input          | Type         | Required | Description        |
| -------------- | ------------ | -------- | ------------------ |
| shopify\_login | ShopifyLogin | Yes      | Shopify credential |
| product\_id    | variable     | No       | Product ID         |
| variant\_id    | variable     | No       | Variant ID         |
| line\_item\_id | variable     | No       | Line-item ID       |
| order\_id      | variable     | No       | Order ID           |

| Output      | Type     | Description             |
| ----------- | -------- | ----------------------- |
| name        | variable | Product or variant name |
| description | variable | Description             |
| price       | variable | Price                   |
| image\_url  | variable | Image URL               |
| tags        | variable | Product tags            |

At least one of the four IDs must be provided.

#### Order To Checkout

Converts an order into a checkout URL, supporting Shopify and payment-gateway modes. It can also send the user a success message with the checkout link.

<figure><img src="/files/XiRcA52QfT55NJARwQdq" alt=""><figcaption></figcaption></figure>

| Input                    | Type         | Required | Description            |
| ------------------------ | ------------ | -------- | ---------------------- |
| product\_group           | ProductGroup | Yes      | Product group          |
| checkout\_mode           | variable     | Yes      | Checkout mode          |
| enable\_success\_message | boolean      | No       | Send a success message |

| Output        | Type   | Description      |
| ------------- | ------ | ---------------- |
| checkout\_url | string | The checkout URL |

The product group must have a Shopify shop URL configured.

#### Shopify Order To Catalog

Converts a Shopify order's line items into catalog format, extracting product details, pricing, shipping, and taxes, with metadata linking back to the original Shopify IDs.

<figure><img src="/files/COVQfVXZSJBAWQmmT3Hu" alt=""><figcaption></figcaption></figure>

| Input              | Type         | Required | Description        |
| ------------------ | ------------ | -------- | ------------------ |
| shopify\_login     | ShopifyLogin | Yes      | Shopify credential |
| shopify\_order\_id | variable     | Yes      | Order to convert   |

| Output        | Type     | Description                  |
| ------------- | -------- | ---------------------------- |
| catalog\_data | variable | Catalog-formatted order data |

#### Update Shopify Order

Updates an order, optionally restricting which fields may change.

<figure><img src="/files/O7g6yuWLw7faW5wvCo8M" alt=""><figcaption></figcaption></figure>

| Input                | Type         | Required | Description                     |
| -------------------- | ------------ | -------- | ------------------------------- |
| shopify\_login       | ShopifyLogin | Yes      | Shopify credential              |
| order\_id            | variable     | No       | Order to update                 |
| update\_data         | variable     | No       | Update data (JSON)              |
| restrict\_to\_fields | variable     | No       | Fields the update is limited to |

| Output         | Type     | Description       |
| -------------- | -------- | ----------------- |
| updated\_order | variable | The updated order |

***

### Integrations

#### Add To Catalog

Adds products to a user-facing catalog display. It takes a product group and variant IDs, retrieves the product data, and sends catalog events to the flow, with deduplication and an item limit.

<figure><img src="/files/SUl2yqAQckdA1eHgttks" alt=""><figcaption></figcaption></figure>

| Input                  | Type         | Required | Description                       |
| ---------------------- | ------------ | -------- | --------------------------------- |
| product\_group         | ProductGroup | Yes      | Product group                     |
| variant\_ids           | variable     | No       | Variant IDs to add                |
| variant\_data          | variable     | No       | Variant data object               |
| variant\_id\_key       | variable     | No       | Key for variant data              |
| restrict\_one\_product | variable     | No       | Send only one variant per product |

Outputs: none. The display is capped at 15 products.

#### Apply Metabase Filter

Builds a Metabase single-date filter from a last-updated timestamp.

<figure><img src="/files/o9gOxCtBGAnXcj3As5Di" alt=""><figcaption></figcaption></figure>

| Input         | Type     | Required | Description       |
| ------------- | -------- | -------- | ----------------- |
| last\_updated | variable | Yes      | Date to filter on |

| Output           | Type     | Description       |
| ---------------- | -------- | ----------------- |
| metabase\_filter | variable | The filter object |

#### Delete FB Comment

Deletes a Facebook or Messenger comment via the Meta API.

<figure><img src="/files/NK9hfes8jdYVx8nSmKLy" alt=""><figcaption></figcaption></figure>

| Input                 | Type      | Required | Description                    |
| --------------------- | --------- | -------- | ------------------------------ |
| fb\_page              | MetaAsset | Yes      | Messenger page for the comment |
| original\_comment\_id | string    | Yes      | Comment to delete              |

| Output  | Type    | Description                      |
| ------- | ------- | -------------------------------- |
| deleted | boolean | Whether the comment was deleted  |
| error   | string  | Error message if deletion failed |

#### Delete IG Comment

Deletes an Instagram comment via the Meta Graph API.

<figure><img src="/files/567EQ3js7iZdxp1F6hmo" alt=""><figcaption></figcaption></figure>

| Input                 | Type      | Required | Description                    |
| --------------------- | --------- | -------- | ------------------------------ |
| insta\_page           | MetaAsset | No       | Instagram page for the comment |
| original\_comment\_id | string    | Yes      | Comment to delete              |

| Output  | Type    | Description                      |
| ------- | ------- | -------------------------------- |
| deleted | boolean | Whether the comment was deleted  |
| error   | string  | Error message if deletion failed |

Defaults to the session's first channel asset if no page is given.

#### Product Selection

Queries a knowledge reference with a text query to find matching products, then uses a tool to filter and select them.

<figure><img src="/files/GVZGrUffS33862EGT8KF" alt=""><figcaption></figcaption></figure>

| Input                | Type               | Required | Description                          |
| -------------------- | ------------------ | -------- | ------------------------------------ |
| catalog              | MetaAsset          | Yes      | Catalog to select from               |
| knowledge\_reference | KnowledgeReference | Yes      | Knowledge reference for the products |
| query                | variable           | Yes      | Query to filter on                   |
| tool                 | Tool               | Yes      | Tool for selection                   |

| Output        | Type     | Description            |
| ------------- | -------- | ---------------------- |
| products      | variable | Selected product IDs   |
| catalog\_type | variable | `single` or `multiple` |

Requires the knowledge reference to have indexed products.

#### Run Whatsapp Campaign

Duplicates a WhatsApp campaign configuration and runs it against CSV recipient data, processing in batches across the chosen WhatsApp Business Account.

<figure><img src="/files/UX3Z0DOQAIKJicxTkmRh" alt=""><figcaption></figcaption></figure>

| Input     | Type             | Required | Description        |
| --------- | ---------------- | -------- | ------------------ |
| campaign  | WhatsappCampaign | Yes      | Campaign to run    |
| csv\_data | variable         | Yes      | Recipient CSV data |

| Output       | Type     | Description                |
| ------------ | -------- | -------------------------- |
| campaign\_id | variable | ID of the created campaign |

The CSV must contain recipient phone numbers.

***

### CRM (Leadsquare)

All Leadsquare actions require a configured Leadsquare credential.

#### Get Leadsquare Lead

Retrieves a lead by ID, phone, or email.

<figure><img src="/files/8x2j90srUztPVLRoNBVF" alt=""><figcaption></figcaption></figure>

| Input            | Type            | Required | Description           |
| ---------------- | --------------- | -------- | --------------------- |
| leadquare\_login | LeadsquareLogin | Yes      | Leadsquare credential |
| lead\_id         | string          | No       | Lead ID               |
| phone            | string          | No       | Lead phone            |
| email            | string          | No       | Lead email            |

| Output   | Type   | Description                                                                           |
| -------- | ------ | ------------------------------------------------------------------------------------- |
| response | object | Lead record, including prospect ID, name, contact details, company, source, and owner |

At least one of ID, phone, or email is required. Errors if no lead, or more than one, is found.

#### Send Leadsquare Lead

Creates a new lead in Leadsquare.

<figure><img src="/files/RI3fWKRHeNpz1OdNS1Hr" alt=""><figcaption></figcaption></figure>

| Input            | Type            | Required | Description           |
| ---------------- | --------------- | -------- | --------------------- |
| leadquare\_login | LeadsquareLogin | Yes      | Leadsquare credential |
| lead\_data       | variable        | Yes      | Lead data             |

| Output  | Type   | Description                    |
| ------- | ------ | ------------------------------ |
| Status  | string | Response status                |
| Message | object | Message containing the lead ID |

#### Update Leadsquare Lead

Updates an existing lead.

<figure><img src="/files/EexhVVaLuxNIXJdmzl0A" alt=""><figcaption></figcaption></figure>

| Input            | Type            | Required | Description           |
| ---------------- | --------------- | -------- | --------------------- |
| leadquare\_login | LeadsquareLogin | Yes      | Leadsquare credential |
| lead\_id         | string          | Yes      | Lead to update        |
| lead\_data       | variable        | Yes      | Update data           |

| Output  | Type   | Description                    |
| ------- | ------ | ------------------------------ |
| Status  | string | Response status                |
| Message | object | Message containing the lead ID |

***

### Airtable

Both Airtable actions require a valid Airtable credential with an access token.

#### Create Airtable Record

Creates a record in an Airtable table, optionally mapping form variables to field names.

<figure><img src="/files/lyNczus0SkVhxefpAnzM" alt=""><figcaption></figcaption></figure>

| Input           | Type          | Required | Description                 |
| --------------- | ------------- | -------- | --------------------------- |
| airtable\_login | AirtableLogin | Yes      | Airtable credential         |
| base\_id        | string        | Yes      | Airtable base ID            |
| table\_name     | string        | Yes      | Table name                  |
| field\_data     | variable      | Yes      | Field names and values      |
| field\_form     | Form          | No       | Form to map field data from |

| Output     | Type     | Description                      |
| ---------- | -------- | -------------------------------- |
| created    | boolean  | Whether the record was created   |
| record     | variable | The created record               |
| record\_id | string   | Record ID                        |
| error      | string   | Error message if creation failed |

#### Update Airtable Record

Updates an existing Airtable record, optionally mapping form variables to field names.

<figure><img src="/files/OFIQz6DtEZjC915JOuou" alt=""><figcaption></figcaption></figure>

| Input           | Type          | Required | Description                 |
| --------------- | ------------- | -------- | --------------------------- |
| airtable\_login | AirtableLogin | Yes      | Airtable credential         |
| base\_id        | string        | Yes      | Airtable base ID            |
| table\_name     | string        | Yes      | Table name                  |
| record\_id      | string        | Yes      | Record to update            |
| field\_data     | variable      | Yes      | Field names and values      |
| field\_form     | Form          | No       | Form to map field data from |

| Output  | Type     | Description                    |
| ------- | -------- | ------------------------------ |
| updated | boolean  | Whether the record was updated |
| record  | variable | The updated record             |
| error   | string   | Error message if update failed |

***

### Voice / Call

These actions operate on a live call and require an active call session.

#### End Call

Ends the active call.

Inputs: none. Outputs: none.

#### Switch Call To Agent

Switches a live call from bot mode to agent mode: it stops the speech pipeline, plays a hold tone, and dispatches the call to available agents.

Inputs: none. Outputs: none. Only meaningful for calls on a live-mode phone asset.

#### Update STT Attributes

Updates Speech-to-Text settings on a live call.

<figure><img src="/files/btnLMtEZD6Bv4hWhcUlC" alt=""><figcaption></figcaption></figure>

| Input | Type     | Required | Description              |
| ----- | -------- | -------- | ------------------------ |
| attrs | variable | Yes      | STT attributes to update |

Outputs: none. Attributes may be a JSON string or a dictionary.

#### Update TTS Attributes

Updates Text-to-Speech settings on a live call.

<figure><img src="/files/dgdY9FyJoWZwPWPZJUYM" alt=""><figcaption></figcaption></figure>

| Input | Type     | Required | Description              |
| ----- | -------- | -------- | ------------------------ |
| attrs | variable | Yes      | TTS attributes to update |

Outputs: none. Attributes may be a JSON string or a dictionary.

#### Voice

Converts text to speech using ElevenLabs and generates an audio file, with control over speed, stability, similarity, and style.

<figure><img src="/files/uCgXwqiTpOqVD9J9Aaz6" alt=""><figcaption></figcaption></figure>

| Input                    | Type     | Required | Description      |
| ------------------------ | -------- | -------- | ---------------- |
| prompt                   | variable | Yes      | Text to convert  |
| voice\_id                | variable | No       | Voice to use     |
| voice\_speed             | variable | No       | Voice speed      |
| voice\_stability         | variable | No       | Voice stability  |
| voice\_similarity\_boost | variable | No       | Similarity boost |
| style\_preset            | variable | No       | Style preset     |

| Output           | Type   | Description                   |
| ---------------- | ------ | ----------------------------- |
| audio\_url       | string | URL of the generated audio    |
| file\_upload\_id | string | ID of the created file upload |

Requires the ElevenLabs integration. Usage is billed at roughly 0.15 per 1,000 characters.

#### Whisper

Transcribes an audio file using OpenAI's Whisper.

<figure><img src="/files/YnGAzw8rPrdDxTbhXVFp" alt=""><figcaption></figcaption></figure>

| Input    | Type     | Required | Description                                    |
| -------- | -------- | -------- | ---------------------------------------------- |
| document | variable | Yes      | Audio file document ID saved by an entry point |

| Output        | Type   | Description          |
| ------------- | ------ | -------------------- |
| transcription | string | The transcribed text |

Requires S3 access and the OpenAI integration.

***

### Media & Files

#### Add Media To Session

Adds a media file (an audio upload) to a session as a new event.

<figure><img src="/files/aQ7QNiYmmI6o8LJFVNtW" alt=""><figcaption></figcaption></figure>

| Input            | Type     | Required | Description       |
| ---------------- | -------- | -------- | ----------------- |
| file\_upload\_id | variable | Yes      | Media file to add |

| Output    | Type     | Description             |
| --------- | -------- | ----------------------- |
| event\_id | variable | ID of the created event |

#### Audio Analysis

Analyzes an audio file to extract a diarized transcript, optionally transliterates it, and creates a session event for each segment.<br>

<figure><img src="/files/6a1ER9hzOAvZhQevaaZt" alt=""><figcaption></figcaption></figure>

| Input                          | Type     | Required | Description                                  |
| ------------------------------ | -------- | -------- | -------------------------------------------- |
| audio\_file                    | variable | Yes      | Audio file to analyze                        |
| output\_script\_language\_code | variable | No       | Output language code                         |
| add\_to\_conversation          | boolean  | No       | Add the result to the conversation as events |

| Output           | Type     | Description         |
| ---------------- | -------- | ------------------- |
| analysis\_result | variable | The analysis result |

#### Get File Upload From URL

Downloads a file from a URL, uploads it to storage, and creates a file-upload record.

<figure><img src="/files/GSNXvMcDhk2JRG53D8qn" alt=""><figcaption></figcaption></figure>

| Input     | Type     | Required | Description     |
| --------- | -------- | -------- | --------------- |
| file\_url | variable | Yes      | URL of the file |

| Output           | Type     | Description                   |
| ---------------- | -------- | ----------------------------- |
| file\_upload\_id | variable | ID of the created file upload |

Requires S3 storage credentials.

***

### Notifications

#### Check Template Delivery

Checks whether a template (Karix SMS or WhatsApp) has been delivered by examining its events.

<figure><img src="/files/DDbMxkFJP3f2VVu04YRG" alt=""><figcaption></figcaption></figure>

| Input        | Type     | Required | Description       |
| ------------ | -------- | -------- | ----------------- |
| template\_id | variable | Yes      | Template to check |

| Output        | Type    | Description                        |
| ------------- | ------- | ---------------------------------- |
| is\_delivered | boolean | Whether the template was delivered |

#### Send Notification

Creates and sends a notification to a specific member, all members of a team, or every member of the organization.

<figure><img src="/files/TesFSWGYB1848lBnhZeS" alt=""><figcaption></figcaption></figure>

| Input      | Type     | Required | Description         |
| ---------- | -------- | -------- | ------------------- |
| member\_id | variable | No       | Member to notify    |
| team\_id   | Team     | No       | Team to notify      |
| title      | variable | Yes      | Notification title  |
| type       | variable | Yes      | Notification type   |
| status     | variable | Yes      | Notification status |
| data       | variable | No       | Notification data   |

Outputs: none. With neither a member nor a team specified, the notification broadcasts to all organization members.

***

### Geo / Location

#### Geocoding

Converts an address into coordinates and a formatted address using the Google Maps geocoding API.

<figure><img src="/files/N6Re4q3julFftKBDI5Oj" alt=""><figcaption></figcaption></figure>

| Input   | Type     | Required | Description        |
| ------- | -------- | -------- | ------------------ |
| address | variable | Yes      | Address to geocode |

| Output             | Type     | Description       |
| ------------------ | -------- | ----------------- |
| latitude           | variable | Latitude          |
| longitude          | variable | Longitude         |
| formatted\_address | variable | Formatted address |

Requires Google Maps API credentials.

#### Get Distance Between Coords

Calculates the distance in meters between two coordinate pairs using the Haversine formula.

<figure><img src="/files/R8qT5II3YJ9g0TW8kVAL" alt=""><figcaption></figcaption></figure>

| Input            | Type     | Required | Description           |
| ---------------- | -------- | -------- | --------------------- |
| origin\_lat      | variable | Yes      | Origin latitude       |
| origin\_lng      | variable | Yes      | Origin longitude      |
| destination\_lat | variable | Yes      | Destination latitude  |
| destination\_lng | variable | Yes      | Destination longitude |

| Output          | Type     | Description        |
| --------------- | -------- | ------------------ |
| distance\_text  | variable | Distance as text   |
| distance\_value | variable | Distance in meters |

***

### Knowledge Base

#### Process Knowledge Base

Processes a knowledge base, performing document processing and indexing.

<figure><img src="/files/cl3Fx8KOJ7XuuJCoV25H" alt=""><figcaption></figcaption></figure>

| Input           | Type      | Required | Description               |
| --------------- | --------- | -------- | ------------------------- |
| knowledge\_base | Knowledge | Yes      | Knowledge base to process |

| Output                     | Type     | Description                  |
| -------------------------- | -------- | ---------------------------- |
| processed\_knowledge\_base | variable | The processed knowledge base |

***

### Routing

#### Create Round Robin

Assigns the next team member in a round-robin rotation for load balancing, tracking state so each call returns the following member.

<figure><img src="/files/VlhDQELjjbCVgWf03rk8" alt=""><figcaption></figcaption></figure>

| Input | Type | Required | Description            |
| ----- | ---- | -------- | ---------------------- |
| team  | Team | Yes      | Team to rotate through |

| Output                    | Type     | Description              |
| ------------------------- | -------- | ------------------------ |
| next\_member\_id          | variable | Next member's ID         |
| next\_member\_email       | variable | Next member's email      |
| next\_member\_first\_name | variable | Next member's first name |
| next\_member\_last\_name  | variable | Next member's last name  |

Members are cycled in order of creation; the team must have at least one member.

***

### Payments

#### Generate Payment Link

Generates a payment link for an amount and currency through a configured payment integration.

<figure><img src="/files/eHHrb7uL8QPV7DORpNi1" alt=""><figcaption></figcaption></figure>

| Input                | Type               | Required | Description                |
| -------------------- | ------------------ | -------- | -------------------------- |
| payment\_integration | PaymentIntegration | Yes      | Payment integration to use |
| amount               | number             | Yes      | Amount                     |
| currency             | string             | No       | Currency (e.g. USD, EUR)   |
| description          | string             | No       | Payment description        |

| Output        | Type   | Description                  |
| ------------- | ------ | ---------------------------- |
| payment\_link | string | The generated link           |
| payment\_id   | string | The payment's invoice number |

Currency defaults to INR if not specified.

***

### Appendix

#### Palette entries with no backend implementation

One name appears in the action palette but has no matching implementation and will do nothing if added: **Assign Member**.

#### The component data model

For reference, these are the objects behind the flow builder:

| Object         | Role                                                                                                                               |
| -------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| Flow           | The top-level container. Has a type (Agentic or Action), a status, channels, user groups, and sub-flows.                           |
| Entry Point    | Where a flow can start; bound to a user group or sub-flow.                                                                         |
| Entry Trigger  | A specific trigger on an entry point, linked to a subscription (a channel and event).                                              |
| Path           | An ordered lane of steps that runs when reached.                                                                                   |
| Path Component | A single step. Its type is one of Agent, Content, Action, Tool, Routing, or Flow; its subtype selects the variant or action class. |
| Handle         | A connection point on a node — input, output, or routing branch.                                                                   |
| Connector      | A wire linking a source handle to a target handle.                                                                                 |

The flow builder's palette is generated automatically from each action's defined inputs and outputs — the same Inputs and Outputs tables documented throughout this page.

#### Notes and caveats

A few actions are intentionally minimal markers — Add Tag and Session Context Setup among them — whose meaningful configuration is carried on the step or handled by the runtime engine rather than through inputs and outputs. A small number of actions are placeholders in the current platform, present in the palette but not yet fully implemented; these are noted where they appear. Channel-specific actions require their integration to be connected for your organization before they will work.
