Why it matters
Workflows become useful when data can move from one step to the next. A trigger might supply an email address, an app search might return a contact, and an AI action might create a summary. Variables let later steps use those exact values without copying data manually.
Key Concepts
Variable: A dynamic reference to data from a trigger or earlier step.
Input: The data a step receives.
Output: The data a step returns.
Sample Data: Test data that lets the builder show available fields.
Step Alias: A stable identifier used in a variable reference.
Nested Field: A value located inside an object or list.
Variable Picker: The builder control used to browse and insert available fields.
Formatter: An action that normalizes data before it is mapped downstream.
Fallback: A safe value or path used when the expected field is missing.
How Data Moves Through a Workflow
Each completed step can make data available to later steps. For example:
An Email Parser trigger receives a message.
A Formatter removes HTML from the body.
An OpenAI action summarizes the cleaned text.
A Slack action inserts the summary into a channel message.
The data does not need to be re-entered. Each later step references the output of the step before it.
Generate Sample Data First
The variable picker relies on known trigger fields and tested step output.
Step-by-Step: Prepare Variables
Open the workflow draft.
Test the trigger with representative data.
Confirm the trigger shows the fields you need.
Test the next action.
Review its output.
Continue testing from left to right.
Open the later step where you want to insert a value.
Open the variable picker.
Browse the available earlier steps and fields.
If an earlier test changes its output structure, review every later mapping that depends on it.
Insert a Variable
Step-by-Step: Map a Field
Open the step that needs dynamic data.
Click the target field.
Open the variable picker.
Select the earlier trigger or step.
Expand nested data where needed.
Choose the exact field.
Save the step.
Test it with the inserted value.
Confirm the test input resolves to the expected real value.
Prefer the variable picker over typing a reference manually. It reduces alias and field-path errors.
Understand Variable References
Workflow references identify a step and a location in that step’s data. Action output commonly follows a structure similar to step alias → output → data → field.
Trigger data may be exposed from its trigger input. The exact path depends on the selected trigger or action, so always copy the path shown by the builder or test output.
Do not assume that two app actions return the same shape, even if both work with similar records.
Work with Nested Objects and Lists
A returned value can be:
A simple value, such as a name or status
An object containing several fields
A collection containing several records
A file or attachment reference
A value nested several levels below the main output
Select the smallest field the next step expects. If a step needs to process every item in a collection, add a Loop Step and use the current loop item inside it.
Normalize Values with Formatter
Use Formatter when an earlier step returns usable information in the wrong shape.
Common examples:
Extract an email address from a value such as Jane Doe followed by an email address
Normalize a phone number to E.164
Convert a date into ISO-8601
Strip HTML from an email body
Map inconsistent source fields into stable output names
Convert XML into a mappable object
Step-by-Step: Prepare Data with Formatter
Add Formatter after the source step.
Select the preset.
Insert the source variable.
Configure the output format.
Test the Formatter.
Review its output fields.
Use those output fields in later steps.
Handle Missing Data
Production payloads are not always identical to test samples. A field may be blank, optional, renamed, or absent.
To reduce failures:
Add a Filter Step before an action that requires the value.
Add a fallback path for missing or unexpected data.
Normalize optional data with Formatter or Code Step.
Test with a complete sample and an incomplete sample.
Avoid sending blank values into external required fields.
Update Step Names Carefully
Clear step names make variables easier to find. The underlying alias is used by references, so review downstream mappings after renaming or replacing a step.
Avoid duplicate or vague names such as “Action” or “Step 2.” Prefer names such as “Clean email body,” “Find Whippy contact,” or “Create Slack summary.”
Protect Sensitive Data
Only map data that the destination actually needs. Avoid copying credentials, tokens, full payloads, or sensitive personal information into logs or broad notification channels.
Before sending data to an AI or external app, confirm that the content and destination match your organization’s data-handling requirements.
Tips and Best Practices
Test steps from left to right.
Use realistic but safe sample data.
Insert variables with the picker.
Give steps clear, unique names.
Use Formatter to create stable fields.
Add filters before actions with required inputs.
Re-test downstream steps after changing an earlier output.
Map individual fields instead of an entire payload when possible.
Inspect a live Run Details view after publishing.
Troubleshooting
Issue | Possible Cause | Fix |
No variables are available | The trigger or earlier action has not produced sample data | Test the earlier steps, then reopen the variable picker |
A variable resolves to blank | The field is optional, missing, or mapped from the wrong path | Inspect the actual input and reselect the field from the picker |
A nested value cannot be selected | The sample output does not contain that object or field | Test with a more representative sample or normalize it first |
An action receives an object instead of text | The parent object was selected instead of one field | Select the nested text field or use Formatter |
A later mapping broke after an edit | An earlier step’s alias or output structure changed | Retest the earlier step and recreate the affected mappings |
A loop receives no items | The selected variable is not the collection field | Inspect the source output and map the exact list or array |
