---
title: Start iteration
description: Perform loop-based iteration over rows, files, or chunks within a workflow.
category: Control
tags: [iteration, loop, workflow, automation]
---

import { Aside } from "@astrojs/starlight/components";

# Start iteration

## **Description**

The **Start Iteration** activity enables iteration over incoming data, allowing workflow activities within the loop to execute repeatedly with varying values.

This control activity supports row-wise iteration, file-based iteration, and chunk-wise iteration. Each loop pass receives a different input slice, enabling dynamic data transformations, enrichment, or conditional logic.

> **Use case**:  
> In a data processing workflow, use **Start Iteration** to loop over rows of customer records fetched from a CRM system. Each iteration can process one customer — validating, enriching, and updating records individually. When used with **Parallel Execution**, processing time is drastically reduced.

## **Input**

- **Data** – Required input in tabular form for row or chunk iterations, or as a list of files for file iteration.

## **Output**

| Output Type       | Format | Description                          |
| ----------------- | ------ | ------------------------------------ |
| **Iteration Log** | JSON   | Logs and context from each iteration |

## **Configuration Fields**

| Field Name                  | Description                                                                                                                               |
| --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| **Operation**               | Specifies the iteration type: <ul><li>Iterate over each row</li><li>Iterate over each file</li><li>Iterate over a chunk of rows</li></ul> |
| **Iteration Limit**         | Defines the maximum number of iterations to execute.                                                                                      |
| **Identifier Column**       | Appends the value from this column to the activity name during execution (used in row/file iteration for better traceability).            |
| **Use Row for Replacement** | If enabled, values in the configuration of nested activities can be replaced by corresponding row values (for row iteration only).        |
| **Chunk Size**              | Applicable when iterating over chunks of rows. Defines the size of each chunk.                                                            |
| **Fail on Empty Input**     | If enabled, the workflow will terminate when this activity receives no input.                                                             |
| **Parallel Execution**      | When enabled, each iteration is executed in parallel for faster processing (use with caution for stateful operations).                    |

## **Sample Input**

_Not applicable_

## **Sample Configuration**

| Field                  | Value                   |
| ---------------------- | ----------------------- |
| `operation`            | `Iterate over each row` |
| `iterationLimit`       | `100`                   |
| `identifierColumn`     | `CustomerID`            |
| `useRowForReplacement` | `true`                  |
| `failOnEmptyInput`     | `true`                  |
| `parallelExecution`    | `true`                  |

## **Sample Output**

| Activity Name   | Activity Step | Replaced Values          |
| --------------- | ------------- | ------------------------ |
| SendEmail_12345 | Step 1        | CustomerName: John Doe   |
| SendEmail_67890 | Step 2        | CustomerName: Jane Smith |

<Aside>

![Auto Map Help](start-iteration-img.png)

**Tip**: The **Auto map** button intelligently matches column names from the previous activity and populates configuration fields with the first value of each matching column. This saves time in dynamic field replacement.

</Aside>
