# Using variables to pass data between steps

**Category:** [Orchestration](https://help.totalctrl.app/hc/totalctrl/totalctrl-help-center/en-US/categories/orchestration)
**Updated:** 2026-08-19

## Reference data from the trigger and earlier steps

Workflows pass data forward with **variables**, written in double curly braces. Anywhere you can type a value, you can insert one.
### Where values come from

- **The trigger** — `{{trigger.<field>}}`. For a New CRM Contact trigger that's `{{trigger.email}}`, `{{trigger.first_name}}`, and so on. The fields available depend on the trigger.
- **An earlier step** — each action exposes output fields you can reference in any later step. The builder shows the available fields as clickable chips so you don't have to memorize names.
- **The current loop item** — inside a loop, `{{loop.item}}` is the current element and `{{loop.index}}` is its position (starting at 0).

### Tips

- Click an **output chip** on a step to copy its variable — the fastest way to get the exact name.
- Variables work inside longer text, e.g. `Hi {{trigger.first_name}}, thanks for reaching out.`
- If a variable is empty at run time it simply resolves to nothing — it won't break the workflow.

---

## Related Articles

- [Delays: pause a workflow for minutes, hours, or days](https://help.totalctrl.app/en-US/articles/flow-control-delays)
- [Orchestration Overview](https://help.totalctrl.app/en-US/articles/orchestration-overview)
- [Connect an app](https://help.totalctrl.app/en-US/articles/connect-an-app-1)
- [Build your first workflow](https://help.totalctrl.app/en-US/articles/build-your-first-workflow)
- [Filters: stop a run when conditions aren't met](https://help.totalctrl.app/en-US/articles/flow-control-filters)

---
[← Back to TotalCtrl Help Center](https://help.totalctrl.app/en-US/)