> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.meetgail.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.meetgail.com/_mcp/server.

# Variables & Data Flow

> How data moves from one step to the next as a workflow runs.

A workflow is a series of steps that pass data to each other. Variables are how
that data travels: each step can read values produced by earlier steps and add
its own for later steps to use. Understanding variables is the key to building
workflows that react to real data instead of fixed values.

## Where values come from

Every value in a workflow falls into one of four groups:

* **Node** - values produced by a step when it runs, such as the phone number
  from an outbound call or the outcome of a Check node. These become available
  only after that step has run.
* **Config** - fixed settings you define on the workflow itself, like a timeout
  or a default sender name.
* **Secret** - sensitive settings such as API keys, kept separate so they can be
  handled carefully. See [Secrets](/platform/workflows/core-concepts/secrets).
* **System** - details the workflow fills in automatically at the start of a
  run, like the organization it belongs to and the time it started.

## Referencing a value

You point at a value by naming its group, the step it came from, and the value
itself:

```
node.outbound_call.caller_phone_number
config.timeout
secret.crm_api_key
```

In practice you rarely type these out. The builder offers a picker so you can
choose a value from a list rather than remembering its exact name.

## Values become available in order

A step can only read values that already exist when it runs. Because the
connections in a workflow define the order of steps, the builder knows which
values are ready at each point and will only offer those.

In this example, steps B and C can both read the value that A produced, but A
cannot read anything from C, because C has not run yet:

```
  A  (produces x)
  |
  B  (can read A's x)
  |
  C  (can read A's x)
```

If a value looks missing in the picker, check the order of your steps. The
value only appears once its step is guaranteed to have run first.

## Related

#### [Expressions](/platform/workflows/core-concepts/expressions/using-expressions-in-nodes)

Combine and transform variables to compute new values.

#### [Secrets](/platform/workflows/core-concepts/secrets)

Store API keys and other sensitive values safely.