Loops are nodes in a workflow that allow you to repeat actions across multiple objects or data points, avoiding the need to duplicate steps. You can configure a loop to automatically iterate over items in your workspace or over data produced by earlier nodes. Loops make it easier to automate bulk operations, process lists, and handle dynamic inputs—all within the workflow canvas.
The two types of loops are Objects in workspace, which iterates over workspace objects, and For Each, which iterates over output from a previous node.
When the items you want to iterate over are not supported workspace objects, use For Each.
The Object loop iterates over objects that are already part of your workspace. Supported objects include:
Enhancements
Issues
Opportunities
Tickets
Meetings
Linked objects (for example, issues linked to tickets)
Users
All actions inside the loop execute once per object that satisfies the filter conditions.
To configure a workspace object loop:
On the workflow canvas, add a control node named Loop for [Object], where [Object] is the entity you want to iterate over.
Apply filter conditions to refine the set of objects included in the loop.
Define the actions to perform inside the loop on each matching object.
Example: To close all open tickets assigned to a specific user, add a Loop node for Tickets, apply a filter for Status = Open and Assignee = [user], then add an Update Ticket action inside the loop to set the status to Closed.
The For Each loop iterates over a list of items generated by a previous node. Each item is treated as a discrete unit, similar to a single row in a table. This is useful when working with dynamic datasets rather than static workspace objects.
To configure a For Each loop:
On the workflow canvas, add a control node named For Each.
From the data reference pane, select the list output from a previous node. The output must be an array type; selecting a non-array output causes a validation error.
Define the actions within the loop to execute for each item in the list.
Example: If an HTTP node returns a JSON array of user records, add a For Each node referencing that array output, then add a Create Ticket action inside the loop to create one ticket per user record.
Keep the following constraints in mind when designing loops:
Loops execute sequentially, not in parallel. Each iteration completes before the next begins.
A loop processes a maximum of 1,000 objects per execution. Objects beyond this limit are not processed.
The For Each node requires an array-type input. Providing a non-array value causes a validation error and the loop does not execute.
Variables defined inside a loop are scoped to that loop iteration. To pass a value to steps outside the loop, write it to a variable defined before the loop begins.
Issue: Loop executes but produces no results.
Solution: Verify that the filter conditions on the loop match at least one object in your workspace. Check that the object type selected is correct and that any referenced field values exist. If using a For Each loop, confirm that the upstream node is returning a non-empty array.