ConfigureActionBody

Body for Configure Action. Send only the fields you want to set — unset fields keep their current value.

Properties

inputsobject

Map of field name → value. Each entry's value is one of: - **string** — a literal, a `{{public.ref}}`, or a mix of both. - **boolean** — for radio / toggle fields. - **string[]** — used by two field types: waterfall providers (an ordered list of provider IDs, when the template field's `type === "stepDownSearch"`) and multi-dropdown / multi-select fields. The handler picks the right storage shape based on the action template's field `type`. - **Array of objects** — for `jsonArray` fields (e.g. Salesforce field/value pairs, Google Sheets column mappings). Each item is typically `{ name, value }`, where `value` can carry `{{public.ref}}` tokens. Extra keys per item are preserved verbatim. Reference translation runs on every string property — if you nest `{{public.refs}}` inside `value`, `prompt`, or any other string field on the item, they get translated independently. - **Array of condition groups** — for `path_filter` fields (filter action's `path_conditions`). Each group is `{ conditions: [{variable, operator, values?, combinator?}], combinator? }`. `variable` is a public reference token; `operator` is the comparison operator; `combinator` (AND/OR) joins the previous group at the group level and the previous leaf at the leaf level. See `/docs/action-detail/filter.txt` for the full body shape. **`label` defaulting on `jsonArray` items.** When an item carries a `name` but no `label`, the server stores `label: <name>` automatically — matches the `{ name, label, value }` triple the runtime engine consumes. Caller-supplied `label` values are always preserved, never overwritten. **Schema validation note.** This map's value type is intentionally permissive (`additionalProperties: true`) — Fastify's Ajv strict mode reliably rejects nested `anyOf` array-of-object schemas under `additionalProperties` (it returns a confusing "must be array" error against values that *are* arrays). The five shapes above are enforced at the handler instead, which inspects each value's runtime type and routes it through the right storage branch.

run_ifobject | null

Optional gate deciding whether this action runs for a given row. The action runs only when the resolved value of `variable` satisfies `operator` against `values`. Pass `null` to clear an existing condition. Omit to leave the existing condition unchanged. **Supported `operator` values depend on the variable's stored type** — the type is derived from the sheet's chain, so you don't pass it. - **Universal** (any type): `is`, `is not`, `is empty`, `is not empty`. `is empty` / `is not empty` ignore `values`. - **String / email / url / imageUrl**: `contains`, `does not contain`, `starts with`, `does not start with`, `ends with`, `does not end with`. Matching is case-insensitive. - **Number / currency**: `greater than`, `less than`, `greater than or equal to`, `less than or equal to`, `is between` (pass `[min, max]`). - **Date**: `is after`, `is before`, `is between` (pass `[start, end]`). Values are parsed by `moment(...)`. - **Array / structured_array / json**: `contains`, `does not contain`. Pass `values` as an array of strings — number / date matchers coerce as needed.

continue_workflow_if_action_failsboolean

When `true`, downstream actions still run for a row even if this action fails. When `false` (default), the row stops at this action on failure and downstream cells stay queued.

notestring

Optional free-text note to save on the action. Same upsert behaviour as Save Action Note — overwrites any existing note. Whitespace-only values are ignored.

Example

ConfigureActionBody example
{
  "inputs": {
    "linkedin_url": "{{input.linkedin_url}}"
  },
  "run_if": {
    "variable": "{{input.country}}",
    "operator": "is",
    "values": [
      "US",
      "CA"
    ]
  },
  "continue_workflow_if_action_fails": false
}