FormWork FormWork

References & Data

Access and manipulate data in workflow steps.

References are the key to accessing data within workflows. They let you read values from entries, forms, data tables, and previous workflow steps.

Reference Syntax

Basic format:

source:identifier.path

Sources

SourceDescription
entryEntry data
formForm schema
data_tableData table rows
workflowPrevious step outputs

Entry References

Access current or other entries.

Current Entry

entry:current.id
entry:current.status
entry:current.created_at
entry:current.answers.field_id
entry:current.metafields.answers.status

Specific Entry

entry:abc123.answers.name
entry:{{ variable_with_id }}.status

Entry Properties

PropertyDescription
idEntry ID
keyPublic entry key
statusCurrent status
created_atCreation timestamp
updated_atLast update timestamp
form_version_idForm version used

Answer Paths

For nested and repeatable fields:

entry:current.answers.address.city
entry:current.answers.items[abc123].quantity
entry:current.answers.sections[s1].questions[q2].answer

Form References

Access form schema information.

Field Definitions

form:current.fields.email.type
form:current.fields.category.options
form:abc123.fields.name.label

Form Properties

PropertyDescription
idForm ID
titleForm title
fieldsField definitions
pagesPage structure

Data Table References

Look up data from data tables.

All Rows

data_table:products.rows

Filtered Rows

data_table:products[category="electronics"]
data_table:pricing[tier={{ entry.answers.tier }}]

Specific Column

data_table:products[sku="ABC123"].price
data_table:categories[id={{ entry.answers.category }}].name

Filter Operators

Filters support:

  • = equality
  • != inequality
  • > < >= <= comparisons

Workflow References

Access outputs from previous steps.

Step Outputs

workflow:calculate_total.outputs.result
workflow:api_call.outputs.body.user_id
workflow:condition_check.outputs.path_taken

Output Structure

Each step type has different outputs:

Calculation:

workflow:calc.outputs.result

API Request:

workflow:api.outputs.status
workflow:api.outputs.body
workflow:api.outputs.headers

Create Entry:

workflow:create.outputs.entry_id
workflow:create.outputs.entry_key

For Each:

workflow:loop.outputs.items[0].result
workflow:loop.outputs.count

Using References in Templates

Template Syntax

Embed references in strings:

Hello {{ entry.answers.name }},

Your order total is ${{ workflow:calc.outputs.total }}.

Filters

Process values with filters:

{{ entry.answers.name|upper }}
{{ workflow:calc.outputs.total|round:2 }}
{{ entry.answers.items|pluck:"name"|join:", " }}

Available Filters

FilterDescription
upperUppercase
lowerLowercase
round:NRound to N decimals
default:valDefault if empty
date:"format"Format date
join:"sep"Join array
pluck:"key"Extract key from objects

Reference Discovery

The workflow editor helps you find available references.

Reference Picker

  1. Click the reference button in any field
  2. Browse available sources
  3. Navigate to the value you need
  4. Select to insert

Context-Aware

The picker shows:

  • Entry fields (from current form)
  • Previous step outputs
  • Available data tables
  • Metafields (if enabled)

Path Preview

Before inserting, see:

  • What the reference points to
  • Expected data type
  • Current value (if in preview)

Dynamic References

References can contain other references.

Nested References

entry:{{ entry.answers.linked_entry_id }}.answers.status
data_table:{{ entry.answers.table_name }}[id={{ entry.answers.row_id }}]

Conditional Access

{{ entry.answers.type == "premium" ? entry.answers.premium_rate : entry.answers.standard_rate }}

Best Practices

Use Descriptive Step Names

Step IDs become reference keys:

workflow:calculate_discount.outputs.result

is clearer than:

workflow:step_3.outputs.result

Handle Missing Data

Use defaults for optional values:

{{ entry.answers.middle_name|default:"" }}

Test References

Verify references in preview:

  1. Create test entry
  2. Run workflow
  3. Check step outputs

Document Complex References

For complex data access:

  • Add comments in configuration
  • Document expected structure
  • Include examples