FormWork documentation

Step Types

Choose and configure the actions in a workflow.

Steps perform the work after a trigger fires. Available outputs appear in the reference picker for later reachable steps, and each step records its output in the workflow run.

This page helps you choose a step. Open Step Settings when you need every configuration control.

Send Email

Queue an email to respondents, admins, or external recipients. Configure recipients, subject, content, and optional generated-file attachments. Content can be inline or come from a reusable template.

Recorded outputs include sent, delivery_status, job_id, to, and subject. delivery_status is queued when the workflow step completes; final delivery may happen later. These email outputs are visible in the run log but are not currently available in the reference picker.

Example downstream reference:

workflow:current.steps.send_confirmation.outputs.job_id

Generate PDF

Render inline or reusable template content as a PDF and save it as an entry file. A later Send Email step can attach the returned file ID.

Outputs are generated, file_id, filename, mime_type, size_bytes, access_level, and download_url.

workflow:current.steps.generate_quote.outputs.file_id

Condition

Evaluate rules and follow either True or False. Use a Condition to guard actions, route categories, or check a prior result.

Its result output is the evaluated boolean. It appears in the run log but is not currently available in the reference picker:

workflow:current.steps.check_total.outputs.result

Calculation

Define one or more formula outputs for totals, discounts, scores, and dates. Each calculation has its own ID, and that ID becomes the output name.

If the step calculate_quote contains a calculation with ID total, use:

workflow:current.steps.calculate_quote.outputs.total

There is no automatic result output for the whole Calculation step.

Create Entry or Row

Create an entry in another form or a row in a data table. Select the form or table as the source and map values into its fields or cells.

The step returns created_id:

workflow:current.steps.create_order.outputs.created_id

Update Entry/Row

Update an existing entry, answer, metafield, data table row, or cell selected by a reference. Map one or more values into the selected target.

Outputs are updated, updated_field_cnt, and, when an entry was resolved, updated_entry_id.

workflow:current.steps.update_customer.outputs.updated_entry_id

If the current entry is updated, subsequent steps use the refreshed current-entry data.

Delete Entry or Row

Delete the entry or data table row selected by a reference. The step returns deleted when successful.

The record disappears from active lists and references, and the current interface has no restore action. Prefer a status such as Cancelled or Archived when the record may be needed for history or audit.

For Each Loop

Evaluate a list and run Loop Body once per item, then continue through After Loop. Inside the body, use iteration:<for-each-step-id> for the current item, key, index, and body-step outputs.

The loop does not expose a collected array of body outputs after it completes. See For Each Loops for scoping and persistence patterns.

Extension Action

Call an action supplied by a built-in extension or API Connector. Choose an enabled environment and an action, then map values into its request.

For HTTP actions, common outputs include:

workflow:current.steps.lookup_customer.outputs.status_code
workflow:current.steps.lookup_customer.outputs.headers
workflow:current.steps.lookup_customer.outputs.raw_body
workflow:current.steps.lookup_customer.outputs.parsed_body.id

A completed 2xx response follows Next. A completed non-2xx response follows Error. Configuration, reference, and connection failures fail the workflow run instead of taking the Error path.

Choose a Step

GoalStep
Queue a messageSend Email
Create a fileGenerate PDF
Split execution by rulesCondition
Produce calculated valuesCalculation
Add a recordCreate Entry or Row
Change a recordUpdate Entry/Row
Remove a recordDelete Entry or Row
Repeat work for a listFor Each Loop
Call a built-in service or external APIExtension Action

Good Practices

  • Give every step a descriptive, stable ID; output references include it.
  • Use the reference picker so a step sees only valid upstream outputs.
  • Store results on an entry when they must outlive the current workflow run.
  • Check a step’s input, output, path, and error in Workflow Runs before retrying it.
  • Use a test environment for external actions before switching to Live.

Next: configure every step option.