Skip to Content
Connect & ManageWhere Data Lives

Where Data Lives

Put each value where its lifetime, sensitivity, and purpose fit. App connections authorize a service, workspace assets are shared across automations, Custom Variables belong to one run, and literal values belong to one field.

At a glanceVerified in app · Oct 30, 2026
Use it to
Choose between App connections, Secrets, Workspace variables, Files, Custom Variables Steps, and literal field values
Find it
Left sidebar → Connections, Variables, and Files, or canvas App drawer
Output
{{ $secret.KEY }}, {{ $key.KEY }}, {{ $var.KEY }}, {{ $file.<id> }}, or {{ N.variable_name }}
Instead
Security & Compliance (for geographic data residency and contractual retention terms)

This guide covers storage scope and lifetime, not geographic data residency. For required data regions and contractual retention or deletion terms, use the Security & Compliance review.

Choose the right home

What you are storingPut it hereScope and lifetimeHow an automation uses itExample
Permission to act in Slack, Google Sheets, Salesforce, or another catalog appApp connectionShared in the workspace until disconnected or reauthorizedSelect the account from the app step’s Connection dropdownA Gmail step sends from a team account
API key, token, signing key, or password used in a fieldSecretShared in the workspace; encrypted, with controlled reveal and rotation{{ $secret.KEY }}An HTTP Request sends Authorization: Bearer …
Non-sensitive setting used by several automationsWorkspace variableShared in the workspace; editable in place{{ $var.KEY }}Every automation posts alerts to the same channel name
Intermediate value, flag, or calculation for one runCustom Variables stepOne step in one automation run{{ N.variable_name }}A run calculates whether a review is required
Template, reference document, data set, or other reusable assetFileShared in the workspace until deleted or its retention period expiresSelect it in a file field or use {{ $file.<id> }}Several AI steps use the same policy document
Fixed text or number used by one fieldLiteral field valueStored in that automation fieldType it directly, such as approved or 30One step always writes the status processed

App connection: permission to use a service

Use a connection when a catalog app step needs to act on an account. The connection holds the authentication required by that service. The step holds the action, destination, and mapped data. Do not copy an account’s OAuth token into a secret or a field. Use a secret only when a field asks for a raw token rather than a Connection dropdown.

Secret: sensitive text used by a field

Store an API key, bearer token, webhook signing key, or password as a secret when a field must send the value itself:

{{ $secret.BILLING_API_KEY }}

A secret’s value is encrypted at rest and hidden in the Variables table. Admins and Managers have audited 10-second Reveal value and Rotate value controls. The API key type provides the same encrypted storage with a {{ $key.BILLING_API_KEY }} reference. Automations resolve references to plaintext at runtime. Never paste credentials as literals or place secret references inside AI prompts or logs. See Secrets and Variables.

Connection or secret? If the app step offers a Connection dropdown, use a connection. If a field needs the credential text itself, store that text as a secret and reference it with $secret.

Workspace variable: a shared, non-sensitive setting

Use a workspace variable for a shared setting that several automations read by name, such as a region or tax rate:

{{ $var.REGION }} {{ $var.TAX_RATE }}

Variables are editable in place and resolved when each step runs (with up to a 10-second cache after an edit). Use a secret instead if exposing the value would grant access. Use a literal if only one field needs the value.

Custom Variables: values scoped to one run

The Custom Variables step creates named fields for later steps in the same run, such as an intermediate calculation or flag. If step 3 defines requires_approval, downstream steps read:

{{ 3.requires_approval }}

A Custom Variables value belongs to the numbered Step that created it ({{ 3.status }} and {{ 7.status }} remain separate). The next run starts without it, while its output stays in retained execution history until that history expires.

File: a reusable workspace asset

Use Files for a document template, configuration file, image, spreadsheet, or data set. Select the file from a step’s file picker or reference its ID:

{{ $file.<id> }}

Text files, JSON, XML, and YAML insert up to the first 512 KiB of their contents. Other files usually insert a short-lived download link. Files created by automations can have automatic deletion dates under Files → Created by workflows. Keep a separate copy if you need longer retention.

Literal field value: configuration local to one place

Type a value directly when it is fixed, non-sensitive, and meaningful only to that field:

Order {{ 2.ret.order_id }} is ready.

Move a literal into a workspace variable when several automations must change together. Move it into a secret when the value is sensitive.

Verify it works
Run
Compare your value's sensitivity and scope against the decision table and store it in Connections, Variables, Files, or a Custom Variables Step
You should see
The automation resolves {{ $secret.KEY }}, {{ $var.KEY }}, {{ $file.<id> }}, or {{ N.variable_name }} from the matching storage scope at runtime.

What’s Next?

Last updated on

Search documentation

Start with a guide, or search by Step, task or error.