> For the complete documentation index, see [llms.txt](https://docs.jetadmin.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.jetadmin.io/workflow/build-workflow-steps/process-multiple-records-with-iterators.md).

# Process multiple records with iterators

In this section you will learn about Iterators

An iterator runs its nested steps for each item in a collection or array. Use it to process several tickets with the same action.

## Choose the input mode

| Mode                | Use it when                                             | Configure                         |
| ------------------- | ------------------------------------------------------- | --------------------------------- |
| **Load Data**       | The iterator should query a connected collection        | Resource, collection, and filters |
| **Specify Iterate** | A previous step or parameter already contains the items | The array to iterate              |

<figure><img src="https://3448227606-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LQ08RFAKZvFADEiXKFy%2Fuploads%2FJVIPz6SNArlQr2l1Qem7%2Fimage.png?alt=media&amp;token=d887bf51-8b91-4710-8569-4e36abe2156b" alt=""><figcaption><p>Iterator settings</p></figcaption></figure>

A filtered collection and a user's explicitly selected records are different inputs. For selection-based processing, see [Process selected records](/workflow/practical-guides/process-selected-records.md).

## Add the iterator

1. Open the component workflow, or open **Automation** and add an automation.
2. Configure the trigger.
3. Add an iterator and select its input mode.
4. Add the repeated actions inside it. You can also move existing steps into the iterator.
5. Bind each action to the current item's fields.

{% @arcade/embed url="<https://app.arcade.software/share/QP5qx9WJgYAGSaSnoQix>" flowId="QP5qx9WJgYAGSaSnoQix" %}

For a ticket update, use the current item's ID. Binding every iteration to a single trigger ID would repeatedly target the same ticket.

## Example: process a filtered collection

The existing walkthrough uses customers filtered by city. Apply the same pattern to Tickets filtered by priority or status.

<figure><img src="https://3448227606-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LQ08RFAKZvFADEiXKFy%2Fuploads%2FBS2SIjGT45vJvha5i6q3%2Fimage.png?alt=media&amp;token=9308960a-4352-4054-bddf-b1d820a6196f" alt=""><figcaption><p>A table with customers, multiple-select filter and button with a workflow action</p></figcaption></figure>

1. Display records in a table and configure the filter component.
2. Pass the filter value into a workflow parameter.
3. Choose **Load Data** and configure the same filter for the iterator's collection query.
4. Add a temporary in-app notification to inspect the current item in a component workflow.
5. After checking the selected scope, configure the intended action.

{% @arcade/embed url="<https://app.arcade.software/share/S6oREqJWf6Dzv91I9xVD>" flowId="S6oREqJWf6Dzv91I9xVD" %}

{% @arcade/embed url="<https://app.arcade.software/share/CyuvyHn4OULwyYZZKc0o>" flowId="CyuvyHn4OULwyYZZKc0o" %}

The iterator's query must include the filter; do not assume it automatically inherits a table component's filter.

## Test before processing the full list

Start with two fictional records and confirm each is processed once. Test an empty array or a filter returning no rows. Inspect the current item binding and final records. The existing email walkthrough should be tested only with recipients you control.

For actions that can be repeated or partially fail, see [failure handling and duplicate processing](/workflow/handle-outcomes/handle-failures-and-prevent-duplicate-processing.md).


---

# 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.jetadmin.io/workflow/build-workflow-steps/process-multiple-records-with-iterators.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.
