Using Data Across Steps
Getting data from one step to another is an essential part of every workflow. For example, you may want to use an email address from a form submission as the TO address of a new email. Or you may want to use the output of an AI step to add a row to a spreadsheet. In all of these cases, it's really useful to know (a) how triggers and steps and create data that you can use later in the workflow, and (b) how subsequent steps can use that data.
How data is created in a workflow
Re-usable data is created in your workflow when triggers and steps produce data. We call this data that comes from a trigger or step the Step Output.
The most common ways data enters a workflow:
The Step Output of a Trigger - e.g. the From address, To address, Subject, Body, and Attachments from an email in an 'email received' trigger.
The Step Output of a Find Step - e.g. the Contacts from a CRM that match a given copmany.
The Step Output of another Action - e.g. the Row that was just created in a Google Sheet.
The Step Output of an AI Step - e.g. the amount, due date, and vendor name of an invoice that were extracted by AI.
Data in Step Outputs always has a 'type'
Most apps specify the 'type' of a given data field. Example data types are Text, Date, Number, URL, Email or File but they may also be types that are custom to the app, like Contact and Company for a CRM or Subscription and Payment for a payment provider.
Relay.app uses data types to make it easy to connect data across apps, and ensure that the data stays in the correct format. For example, the 'Attachments' input in a Gmail automation will only accept data fields that are of the type File. As another example, a step that requires a URL, like 'Scrape text from website', will encourage you to enter data that has a URL as its type.

Data is Step Outputs is always up to date
Every time data is used in a workflow run, the current and up-to-date value is fetched from the app to use it. For example, if your trigger was Event Created in a Calendar, and later on in the workflow you want to reference the start time of the event, that start time will always reflect the up to date start time of the event, even if the event has moved since the trigger occurred. This is very handy!
You never need to re-fetch a Step Output (e.g. through a Find Step) to get up-to-date data, even if e.g. you have a "wait 5 days" step before using the Step Output (again)!
You'll never need to add a 'Find' step to your workflow for a data object that was already pulled in previously in another step or the trigger, even when the underlying data might have changed in the meantime 🤯
Using data from Step Outputs in other steps
Step Outputs show up in data pickers in other steps:
Text inputs: insert data via the [+] or [+ data] entrypoint
Text inputs: insert data via the
@
keyboard shortcut while typingTyped inputs: pick data through a type-specific picker



How Step Outputs appear later in the workflow
Step Outputs are shown as a "pills", e.g. . Each pill contains:
The step number of the step that generated it (step #1 is the Trigger)
The logo of the app the data originates from (e.g. Gmail, Google Sheets or HubSpot)
The type of the data object in words (e.g. 'Email', 'Row' or 'Contact')
When a specific data field within inside a Step Output is referenced, the name of that field is shown as well:.
When data is referenced from objects that are nested/linked from within the original Step Output, levels of nesting are indicated with a >
. For example, this Step Output pill represents the Email address of the Customer that's linked to a Subscription within Paddle:
Anywhere dynamic/variable data is referenced, a Step Output pill is shown. Below is an annotated screenshot of a workflow in the Editor, visually connecting Step Output pills with the steps they originated from.

Common issue: I'm trying to set up an app action, but I'm unable to reference the value I need from a previous step
A common challenge in app actions is that you may find yourself unable to use data from a previous workflow step in the way you expect. For example, let's say you have a Slack trigger from a message body that contains a URL followed by a "scrape text from website" step to scrape that URL. When you click "select URL" you may be frustrated to see no options even though you know there's a URL in the body of a Slack message.
Here's why that is: Relay.app tries to be smart about matching up the types of data between steps so you don't try to do impossible things (like scraping text from a URL that's not actually a URL). So in this case, because the Slack message body is a text field, it won't match the URL type that the next step expects. To be able to use the URL from the Slack message, you need to extract the URL from the text body, for example using a simple AI step. Once you have a URL available, you'll be able to easily plug it into the next step.
Linked data is always accessible
Step Outputs give instant access to infinite levels of linked data for all our integrations. There's no need to add additional complex lookup steps just to use data that's linked or nested.
Whether it's a grabbing a Contact that's associated with a Company that's associated with a Deal in your CRM that triggered the workflow, or simply updating a linked Database Page from Notion.

Inspecting what (linked) data is available through a Step Output
To understand what data is available through a specific Step Output, open the step configuration dialog of the step that generated it, and click on the pill in the 'Output' section on the bottom of the dialog.

Last updated
Was this helpful?