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

# Passing Data

> Use output data from earlier steps as inputs to later steps in your automation flows.

Automation flows are vertical diagrams that start with a trigger and continue through any number of action steps. Data flows **top to bottom**: each step can read the output of all steps above it, but not steps below it.

## How data flows between steps

Consider a flow with three steps:

* **Step 1** (trigger) produces data — for example, a call transcript and caller phone number. Steps 2 and 3 can both access this data.
* **Step 2** (action) can read Step 1's output. After it runs, it also produces its own output that Step 3 can access.
* **Step 3** (action) can access output from both Step 1 and Step 2. Because it is the last step, nothing reads its output.

<Note>
  Some triggers, like Schedule triggers, do not produce output data. In those cases, your actions rely on data fetched within the flow itself.
</Note>

## Using the Data to Insert panel

To insert dynamic data into any input field, click inside the field. The **Data to Insert** panel appears on the right side of the builder.

The panel lists all upstream steps and their available output properties. From here you can:

* **Expand items** — click the caret (⌄) next to an item to see its child properties.
* **Insert a value** — click any item to insert it at your cursor's position in the field.
* **Combine static and dynamic content** — type static text around the inserted value, for example: `Hi {{step_1.first_name}}, your call lasted {{step_1.duration}} seconds.`

<Tip>
  Expand an item before inserting it. Previewing the data type and structure helps you confirm you are selecting the right field before publishing.
</Tip>

## Testing steps to generate data

DialogBot requires you to test a step before its output is available in the Data to Insert panel. This prevents you from accidentally mapping the wrong data and breaking a live flow.

If you try to reference data from an untested step, you will see a prompt to test that step first.

Each step type uses a different testing method:

| Method           | When it applies                                                                                                                        |
| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| **Load Data**    | Triggers that can pull recent records from a connected account without any action on your part.                                        |
| **Test Trigger** | Triggers that require you to fire the event in the connected app (for example, ending a call) so DialogBot can capture a real payload. |
| **Send Data**    | Webhook triggers that require you to send a sample HTTP request to the generated webhook URL.                                          |
| **Test Action**  | Action steps — runs the action once with the current configuration to confirm it works and capture sample output.                      |

<Warning>
  Use **Mock Data** only as a last resort. Mock data is static and may not reflect the actual structure of your live payloads, which can cause fields to be missing or mismatched at runtime.
</Warning>

## Advanced: switching to dynamic values

Some inputs — like dropdowns — do not normally accept data from previous steps. To use dynamic data in these fields, switch the input to **dynamic mode** using the toggle button next to the field. The dropdown is replaced with a text input that accepts `{{variable}}` syntax.

## Advanced: accessing data by path

If a value you need does not appear in the Data to Insert panel, you can reference it directly using a JSON path expression:

```text theme={null}
{{step_slug.path.to.property}}
```

To find a step's `step_slug`, hover over the step in the builder. The slug appears to the right of the step name.

For example, if your trigger step has the slug `call_ended_1` and you want the caller's phone number at `caller.phone`, you would write:

```text theme={null}
{{call_ended_1.caller.phone}}
```
