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

# Build in the canvas

> Create, connect, test, and activate a workflow from the dashboard

The canvas is the default way to build a workflow. No CLI, no local setup.

Open **Workflows** in the dashboard and create one, either from scratch or from a **workflow template**.

## Add and connect nodes

Pick a node type from the node picker to drop it on the canvas. The available types are:

`start` · `send_text` · `send_template` · `send_interactive` · `wait_for_response` · `decide` · `agent` · `function` · `webhook` · `call` · `handoff` · `emit_event`

Every workflow needs exactly one `start` node. Drag from a node's handle to another node to create an edge. Execution follows those edges.

See [Step types](/docs/flows/step-types/start-node) for what each node does and how to configure it.

## Configure a node

Select a node to open its form. Fields depend on the type: message body for `send_text`, template and parameters for `send_template`, model and prompt for `agent`, and so on.

Message fields accept template variables like `{{last_user_input}}`. See [Variables and context](/docs/flows/variables-and-context).

## Branch with conditions

Edges leaving a `decide` node carry conditions. The label the node returns picks which edge runs. Edit conditions on the edge itself, not the node.

See [Edges](/docs/flows/edges).

## Set a trigger

A workflow does nothing until something starts it. Open the triggers panel to add one, most commonly an inbound message on a phone number.

See [Triggers](/docs/flows/triggers).

## Workflow settings

The settings sheet holds everything that is not a node:

* **Workflow name** and **Slug**: the slug is generated from the name and is what the API and other workflows use to reference this workflow
* **Description**
* **Inbound read behavior**: whether incoming messages are marked as read
* **Message debounce**: how long to wait for more messages before running, so a user sending three messages in a row triggers one run instead of three

## Test before activating

Run the workflow from the test modal without messaging a real number. It shows the **execution stack** so you can see which nodes ran, in what order, and where a run stopped. Use **Copy events** to grab the full event trail.

For runs that already happened, open the workflow logs.

## Draft and Active

A workflow is **Draft** until you activate it. Draft workflows do not respond to triggers, so you can keep editing a live workflow's replacement without affecting production.

Save your changes, test, then activate.

## Observer mode

Observer mode lets a workflow watch a conversation without sending messages. Useful to validate routing logic against real traffic before letting it reply.

## Move to code later

Anything built in the canvas can be pulled into a local repo, edited as JSON or TypeScript, and pushed back. The canvas has a **Build this workflow locally** action that gives you the commands.

See [Build locally](/docs/workflows/build-locally).
