> ## Documentation Index
> Fetch the complete documentation index at: https://docs.alcmeon.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Scenario builder: every node type in the flow editor

> Field reference for every node in Simio's scenario builder: Message, AI, Wait, Condition, Action, Opt-in and out, Request phone number, and Note.

Simio's scenario builder is shared by [campaigns](/simio/platform/campaigns), [automations](/simio/platform/automations), and [chatbots](/simio/platform/chatbots). Every scenario is a graph of nodes ("steps") connected on a canvas. This page documents each node type and the fields exposed in its right-side editor.

## Common editor chrome

Every node opens the same right-side slide-over when you click it on the canvas:

* Header with the node title (Message, AI, Wait, Condition, Action, Opt-in/out, Note).
* **X** close button in the top-right corner.
* **OK** / **Delete** footer buttons.

Some editors add an inline **Change type** link in the header when the node supports multiple sub-types (Wait, Action, Opt-in/out).

Variables can be inserted into most text fields using the **+ Var** or **+ Add variable** button; it opens the contact-field picker.

## Message

Sends a WhatsApp message to the contact. The **Content type** toggle at the top selects one of three sub-types.

### Text & Media

* **Header** – None / Image / Video. Image and Video upload a media file.
* **Body** – free text with **+ Var** to insert a contact field.
* **Buttons** – None / Quick reply / URL.
  * Quick reply: up to 3 button labels; each label becomes an output on the node so the flow branches on the chosen reply.
  * URL: link label + destination URL.

### List message

Structured list bubble with a tap-to-select menu.

* **Header** – short header text.
* **Body** – message text with **+ Var**.
* **Footer** – small footer text.
* **Section title** – section header shown above the list items.
* **Items** – up to 10 list items; each has a title and optional description, with a trash icon to delete.
* **Save the selection as a custom field** – toggle. When on, the selected item is written to the chosen contact field.
* **+ Add an item** – appends a new list item.

The node shows a **LIST MESSAGE** tag on the canvas.

### Template

Sends an approved WhatsApp template.

* **Language** – dropdown of languages the template exists in.
* **Template** – dropdown of approved templates for the selected language.
* **Edit template** / **New template** – shortcuts to the [templates](/simio/platform/templates) editor.
* Read-only preview of the selected template body and buttons.

## AI

Runs a GAIA AI assistant turn inside the flow.

* Language-match helper text at the top ("Answer in the same language as the contact…").
* **GAIA agent** – dropdown of configured agents.
* **Assistant context** – textarea. Background information the agent should treat as ground truth for this step.
* **Answer style** – textarea. Tone, length, and formatting instructions.

The AI response is sent to the contact and the flow continues to the next node.

## Wait

Pauses the flow until an event happens. When the node is created the editor first shows three large cards under the helper "The flow is paused until an event has occurred.":

<CardGroup cols={3}>
  <Card title="Duration" icon="clock">
    Wait for a fixed amount of time.
  </Card>

  <Card title="Answer" icon="message-circle">
    Wait until the contact sends a message.
  </Card>

  <Card title="Message read" icon="check-check">
    Wait until the previous message is marked as read.
  </Card>
</CardGroup>

Once a type is selected the header shows a **Change wait type** link in the top-right to return to the picker.

### Duration

Helper: "Resuming flow after time has elapsed."

* **Waiting duration** – three number inputs: **day**, **hours**, **minutes**.

### Answer

Helper: "Resuming flow as soon as a message is sent by the contact."

* **Store the answer** – checkbox, on by default.
* **Select field** – dropdown of contact fields (searchable, with **Clear selection**). The message the contact sends is written to this field when the flow resumes.

### Message read

Resumes as soon as the previous outgoing message is marked as read by WhatsApp. No additional fields.

## Condition

Branches the flow on a property of the contact or the run. Helper on every variant: "The flow branches based on this condition. Connect the **Yes** output for the true path and the **No** output for the false path."

Every Condition node exposes two outputs on the canvas: **Yes** and **No**.

Pick a property in the first dropdown, then configure the operator.

### Tags

* **Operator** – `contains`.
* **Tags** – chips with an **×** to remove, plus a "Search tag…" input to add existing tags.
* Node label on canvas: **Contains #\<tag>**.

### Optin status

* **Operator** – `is`.
* **Value** – `true` / `false`.
* Node label on canvas: **Optin: Opted in** or **Optin: Opted out**.

### Contact was created

* **Operator** – `inTheLast`.
* **Duration** – days / hours / minutes inputs.
* Node label on canvas: **Created (no duration)** when the duration is zero, otherwise the duration.

### Random split

* **Operator** – `percentageOfYes`.
* **Percentage %** – number input for the share of contacts routed to **Yes**.
* Node label on canvas: **Random X% → Yes**.

## Action

Performs an operation without messaging the contact. The **Type** selector at the top has two options: **Add tag** and **API Call**.

### Add tag

Helper: "Tag the contact when this node is reached, then continue to the next node."

* Existing tags shown as chips with **×** (e.g. `2026-05-18T15:12:12.336124Z`).
* **Search or create a tag…** – input; typing a new value creates the tag on save.

### API Call

Calls an external HTTP endpoint. Three sub-tabs: **Request**, **Params**, **Response**. The **Response** tab shows a badge with the number of mapped fields (for example "1").

#### Request

* **API Call name** – free text, placeholder `My API Call`.
* **Method** – dropdown, defaults to `POST`. Standard HTTP methods.
* **Destination URL** – placeholder `https://api.example.com/path`, with **+ Add variable** to inject contact fields.
* **Headers** – list of key/value pairs, **+ Add header** to add rows.
* **Body** – JSON textarea, defaults to `{}`, with **+ Add variable**.

#### Params

* **Path parameters** – **+ Add path parameter** builds `/users/:id`-style segments.
* **Query parameters** – **+ Add query parameter** appends `?key=value` pairs to the URL.

#### Response

Helper: "Map a key from the JSON response to a contact custom field. The value is saved on the contact after the API Call runs."

* **Save response in custom fields** section.
* Each row: **Select field** dropdown + **Response key** input + trash icon.
* **+ Add a field** – appends a new mapping row.

## Opt-in/out

Records the contact's marketing consent. The editor shows two large mutually exclusive cards at the top.

<CardGroup cols={2}>
  <Card title="Opt-in" icon="circle-check">
    "The contact has agreed to receive future WhatsApp marketing communications."
  </Card>

  <Card title="Opt-out" icon="circle-x">
    "The contact has requested to stop receiving future WhatsApp marketing communications."
  </Card>
</CardGroup>

Selecting a card sets the contact's opt-in state when the flow reaches this node. There are no other fields.

## Note

A canvas-only annotation. Not sent to the contact.

* **Content** – single textarea, placeholder `Write your note here…`.

Renders as a yellow sticky-note card on the canvas.

## Related

* [Campaigns](/simio/platform/campaigns)
* [Automations](/simio/platform/automations)
* [Chatbots](/simio/platform/chatbots)
* [Templates](/simio/platform/templates)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.