> For the complete documentation index, see [llms.txt](https://docs.middle.app/middle-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.middle.app/middle-docs/product/accounts/workflow-parameters.md).

# Workflow parameters

Parameters select data and calculate values for workflow steps and triggers. You can use them to build an Action's inputs, make a Decision, set a variable, or decide whether a trigger should discard or requeue a record.

The pages below follow the groups in the parameter dropdown. Each option includes its JSON type, how its inputs work, and a complete example.

## Variables

Variables allow you to select data within your workflow, including Begin step inputs, module variables, and values saved by earlier steps. You can also [define your own workflow variables](/middle-docs/product/accounts/defining-workflow-variables.md).

See [Variables](/middle-docs/product/accounts/workflow-parameters/variables.md) for Variable Selector, Parameter-scoped variable, and the keys used in copied workflows.

### Now vs. Start time

**Now** is the time when the parameter is evaluated. **Start time** is when the workflow was queued or when the trigger activity occurred. If a workflow is re-executed or a trigger is requeued, its Start time does not change.

In JSON, `NOW_REAL` means Now and `NOW` means Start time. See [Now vs. Start time](/middle-docs/product/accounts/workflow-parameters/variables.md#now-vs-start-time) for examples.

## Constant and Calculated Values

Use a fixed value or calculate one from other parameters. See [Constants and Calculated Values](/middle-docs/product/accounts/workflow-parameters/constants-and-calculated-values.md) for Number, Parse Number, Text, Boolean, and Null.

## Flow Control

Flow controls allow you to build out decision logic within Decision steps and Action steps. See [Flow Control](/middle-docs/product/accounts/workflow-parameters/flow-control.md) for If, And, Or, Switch, and every comparison option.

## Dates and Datetimes

Create, format, and work with dates and times. See [Dates and Datetimes](/middle-docs/product/accounts/workflow-parameters/dates-and-datetimes.md) for Date, Time, Datetime, Construct Time, Construct Datetime, Timedelta, formatting, parsing, and timezone conversion.

## Text Manipulation

Text manipulation parameters can be added before a text variable or text constant. See [Text Manipulation](/middle-docs/product/accounts/workflow-parameters/text-manipulation.md) for stripping characters, splitting lines, and changing capitalization.

## Array Manipulation

An array is a list of values, such as the line items in an invoice. See [Array Manipulation](/middle-docs/product/accounts/workflow-parameters/array-manipulation.md) for Map, Reduce, Filter, Sort, First Match, Count, and De-duplicate.

## Advanced Parameters

Build an object or a list of values, often for an Action's inputs. See [Advanced Parameters](/middle-docs/product/accounts/workflow-parameters/advanced-parameters.md) for Construct Object and Construct Array.

## Special

Controls to delete, move, and duplicate parameters. These change the parameter tree in the editor; they are not values that run in a workflow. See [Special](/middle-docs/product/accounts/workflow-parameters/special.md) for each command and examples of the resulting JSON.

## Reading the JSON

For the surrounding workflow structure, step connections, and canvas positions, see [Workflow JSON](/middle-docs/product/accounts/create-or-copy-a-workflow/workflow-json.md). This section describes the parameters inside steps.

When you copy a workflow, each parameter is a tree: a parent parameter can contain other parameters in its `params` array. Their order matters. The examples in this reference use this copied-workflow format, not the editor's internal API format.

| Key           | Meaning                                                                     |
| ------------- | --------------------------------------------------------------------------- |
| `type`        | The raw parameter type, such as `template` for Text or `comparison` for If. |
| `expression`  | Value or setting: text, formula, variable key, or comparison operator.      |
| `params`      | Child parameters in order. Each child is another complete parameter object. |
| `key`         | The field name when a parameter supplies a field in a Construct Object.     |
| `props`       | Field path to select from the result, such as `["customer", "email"]`.      |
| `output_name` | Array operation's parameter-scoped variable name, such as `"items"`.        |

An `output_name` of `"items"` provides `items:value` and `items:index`.

Keys that are not needed can be omitted. A parameter's result has a type: text, number, boolean, date, time, datetime, null, object, array, or a reference to a synced record. The surrounding field determines which types are allowed. Null is a missing value; it is not the text `"null"`.

For example, this complete Text parameter returns `Hello Sally`. The first child supplies the first `{}` placeholder.

```json
{
  "type": "template",
  "expression": "Hello {}",
  "params": [
    {"type": "template", "expression": "Sally"}
  ]
}
```

The examples are parameter objects, rather than whole workflows, unless a page says otherwise. Variable examples state which inputs or saved values they require. To understand a copied workflow, follow its step connections, check the declared input and variable types, and then read each parameter tree using the pages above.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.middle.app/middle-docs/product/accounts/workflow-parameters.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
