> For the complete documentation index, see [llms.txt](https://help.tillit.cloud/tillit/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.tillit.cloud/tillit/knowledge-base/setting-up-tillit/integrations/wire-flow/advanced-configuration.md).

# Advanced Configuration

Advanced configuration options in Wire Flow — task timeout, iteration, retry, error handling, branching logic, and fail end events.

## Task Timeout

Only available for some tasks. Set a maximum execution time per task:

<figure><img src="https://352909507-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrNT40XJFAFlAhUX8CcQS%2Fuploads%2Fgit-blob-f928f8be3b281033ea96d996f8148f594bebba66%2FPasted%20image%2020260415151109.png?alt=media" alt=""><figcaption></figcaption></figure>

| Field                 | Description                                      |
| --------------------- | ------------------------------------------------ |
| **Timeout (seconds)** | If exceeded, the task fails with a timeout error |

A timeout error can be caught by an Error Boundary event and routed to a fallback path.

{% hint style="info" %}
JSONata and Wait tasks do not support timeout. JSONata is a pass-through operation; Wait has its own timing mechanism.
{% endhint %}

## Iteration (Map)

Any task (except JSONata) can iterate over an array from the previous step's output:

<figure><img src="https://352909507-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrNT40XJFAFlAhUX8CcQS%2Fuploads%2Fgit-blob-f261a769f2c7a80206665349ede778a4465f3560%2FPasted%20image%2020260415151125.png?alt=media" alt=""><figcaption></figcaption></figure>

| Field               | Description                                                   |
| ------------------- | ------------------------------------------------------------- |
| **Items Path**      | Path to the array in the workflow state, e.g., `$.body.items` |
| **Max Concurrency** | Number of parallel iterations (empty = unlimited)             |

When set, the task executes once per item. A **Map** label appears on the node.

## Retry Configuration

Any task (except JSONata) can retry automatically on failure:

<figure><img src="https://352909507-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrNT40XJFAFlAhUX8CcQS%2Fuploads%2Fgit-blob-9a88db2ab5a11374248a1ab127a5a05721df82ba%2FPasted%20image%2020260415151134.png?alt=media" alt=""><figcaption></figcaption></figure>

| Field                  | Default | Description                      |
| ---------------------- | ------- | -------------------------------- |
| **Max Attempts**       |         | Number of retries                |
| **Interval (seconds)** | 1       | Initial delay between retries    |
| **Backoff Rate**       | 2.0     | Exponential multiplier per retry |

Example — Max Attempts: 3, Interval: 2, Backoff Rate: 2.0:

* 1st retry after 2s, 2nd after 4s, 3rd after 8s

## Error Handling

To catch errors from a specific task and route to a fallback:

1. Drag an **Error Boundary Event** from the palette.

   <figure><img src="https://352909507-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrNT40XJFAFlAhUX8CcQS%2Fuploads%2Fgit-blob-17bd3c9448ac91e9b1efeb8dc99f1d67c0bff28c%2FPasted%20image%2020260415150610.png?alt=media" alt=""><figcaption></figcaption></figure>
2. Drop it on the edge of the task node (it snaps to the border).
3. Connect the boundary event to a fallback task or End Event.

   <figure><img src="https://352909507-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrNT40XJFAFlAhUX8CcQS%2Fuploads%2Fgit-blob-6a7894aa0cb0e10baf66fad0ea7356e453a4447d%2FPasted%20image%2020260415150622.png?alt=media" alt=""><figcaption></figcaption></figure>

   <figure><img src="https://352909507-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrNT40XJFAFlAhUX8CcQS%2Fuploads%2Fgit-blob-a1b4f6bf8faa61091f1f0ce1540b4a69e9bfc9e6%2FPasted%20image%2020260415150712.png?alt=media" alt=""><figcaption></figcaption></figure>

| Field           | Description                                           |
| --------------- | ----------------------------------------------------- |
| **Error Codes** | Comma-separated list. Leave empty to catch all errors |

## Branching Logic

### Exclusive Gateway (If/Else)

1. Place an **Exclusive Gateway** on the canvas.

   <figure><img src="https://352909507-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrNT40XJFAFlAhUX8CcQS%2Fuploads%2Fgit-blob-003d9cdaf95b424aed82b001dcd5f93f6d3ca919%2FPasted%20image%2020260415150844.png?alt=media" alt=""><figcaption></figcaption></figure>
2. Connect it to two or more downstream tasks.

   <figure><img src="https://352909507-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrNT40XJFAFlAhUX8CcQS%2Fuploads%2Fgit-blob-29d14015cc62c0265f83aebf04386580e93eec9e%2FPasted%20image%2020260415150902.png?alt=media" alt=""><figcaption></figcaption></figure>
3. Click each **sequence flow arrow** to set its condition, or click the **gateway** to set all conditions at once.

   <figure><img src="https://352909507-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrNT40XJFAFlAhUX8CcQS%2Fuploads%2Fgit-blob-d1345256a4ee5173c3d42bb2ab1ae7a232949415%2FPasted%20image%2020260415150933.png?alt=media" alt=""><figcaption></figcaption></figure>

| Field                         | Description                                                     |
| ----------------------------- | --------------------------------------------------------------- |
| **JSONata Gateway Condition** | Evaluates to true/false, e.g., `$states.input.statusCode = 200` |
| **Default flow**              | Checkbox — taken when no other condition matches                |

{% hint style="warning" %}
Always mark one outgoing flow as **Default** to prevent dead ends.
{% endhint %}

### Parallel Gateway

<figure><img src="https://352909507-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrNT40XJFAFlAhUX8CcQS%2Fuploads%2Fgit-blob-6ae7ff7fb4f3e8cfa6c8576d9974d1ba0f3b6189%2FPasted%20image%2020260415151501.png?alt=media" alt=""><figcaption></figcaption></figure>

1. Place a **Parallel Gateway** to fork execution.
2. Connect it to multiple downstream paths.

   <figure><img src="https://352909507-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrNT40XJFAFlAhUX8CcQS%2Fuploads%2Fgit-blob-850d1c5298c2a37f3b107cb9c03397b0ccb3c3ff%2FPasted%20image%2020260415151525.png?alt=media" alt=""><figcaption></figcaption></figure>
3. Optionally, place a second **Parallel Gateway** downstream to join all branches.

   <figure><img src="https://352909507-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrNT40XJFAFlAhUX8CcQS%2Fuploads%2Fgit-blob-4e63fbc3e1ddd5d848b6b33854033f5242100d69%2FPasted%20image%2020260415151725.png?alt=media" alt=""><figcaption></figcaption></figure>

All branches execute simultaneously. The join waits for all branches to complete before continuing.

## Fail End Event

<figure><img src="https://352909507-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrNT40XJFAFlAhUX8CcQS%2Fuploads%2Fgit-blob-9eb4f4ad7c2ed6fcc9e2eb54a7f01f767f4462cd%2FPasted%20image%2020260415151751.png?alt=media" alt=""><figcaption></figcaption></figure>

By default, reaching an End Event means success. To terminate with an explicit failure:

1. Click the **End Event** node.
2. Set ***Error Code*** (e.g., `ValidationError`) and ***Error Cause*** (human-readable description).

   <figure><img src="https://352909507-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrNT40XJFAFlAhUX8CcQS%2Fuploads%2Fgit-blob-331da17927839f7f0a442661c994fe3e4188ff54%2FPasted%20image%2020260415151803.png?alt=media" alt=""><figcaption></figcaption></figure>

When an Error Code is set, the workflow terminates with a labelled failure — useful for signalling different failure modes to calling systems.
