Is your Tines story starting to look a little long and complicated? Groups can help you turn sprawling workflows into clean, organized, and easy-to-manage automated processes.
What is a group?
A group is simply a collection of actions within your story. It lets you bundle a series of related actions into one place, making your story more organized. By using groups, you make your complex stories much easier for anyone on your team to understand, troubleshoot, and maintain.
It's the perfect way to take a distinct part of your workflow—like checking an IP address, formatting a security alert, or creating a new ticket—and tuck it neatly away under a single, identifiable action.
How to create a group
In your storyboard, select the actions you want to combine. Then, choose Group, or use the keyboard shortcut Cmd/Ctrl + G.
Functionality
Passing data
Groups make it easy to control the information going in and out. You can define specific inputs to send data into your group and configure the output to return exactly the data you need back to the main story.
Handling lists with loops
If you have a list of items (like a list of 100 email addresses, or 50 security alerts) that all need the exact same process applied, a group can do it. You simply tell the group which list to process, and it will automatically run all of its internal actions for every single item.
This ability to automatically process lists makes your stories highly scalable.
Setting inputs and outputs for groups
Group inputs and outputs are used to create a clean interface for data to flow into and out of a group, making groups work like reusable components or functions. Every group you create will have both a group input and a group output, allowing you to manage the data exchange between the group and its parent story.
Group input
The group input allows you to define custom fields that can pass data into your group from the rest of your story. They act as the parameters for your group. This makes it easy to send necessary information to your group to execute its defined actions.
A group input can be configured with one or more custom options, each supporting a specific data type:
Object: Displays an object builder for structured data input.
Plain Text: Renders a simple plaintext input field.
Checkbox: Renders a single-option checkbox.
Number: Renders a number input field.
Formula: Renders an input field that supports Tines formulas.
Group output
The group output is where you configure the data that will be returned from the group back to the parent story. This ensures the results of the group's actions are correctly formatted and available for the next action in your workflow to reference the data.
Note: A group of actions can have only one output.
You can configure a group using triggers so that only one of the available outputs will be outputted from the group. For example:
Example use case
Imagine a group called "Enrich IP Address":
Group input: Receives ip_address from upstream actions
Internal sections: Looks up geolocation, threat intel, WHOIS data
Group output: Returns enriched data object with all findings
The result is that any action can send an IP to this group and get back enriched data, without knowing how enrichment works internally.
Without group inputs and outputs, actions inside a group couldn't receive data from outside, and actions outside couldn't access the group's results.
Using the loop option in groups
When building stories in Tines, you may need to perform a sequence of actions on every item in a list - for example; a list of users, security alerts, or IP addresses. Instead of manually creating separate workflow branches for each item, you can use the loop option in groups. Using the loop option when configuring your groups allows you to apply your logic to every element in an array automatically.
How it works
When you configure a group with the LOOP option, Tines will:
Take an array (a list of items) from a preceding event.
Invoke the entire group for each element in that array.
Emit a single output event containing an aggregated list of the results after all loop iterations are complete.
Loop object
When configuring the loop, specify the path to the array you want to iterate on. Within the group, you can refer to the current item being processed using the special LOOP object:
LOOP.value: The current element from the array (e.g., the IP address).LOOP.index: The position of the current element in the array (starting from 0).
Serial vs. parallel processing
Groups offer two main modes for processing the loop:
Serial: The elements are processed one after another to preserve the original order of your array in the final output. This option is selected by default.
Parallel: All elements are processed simultaneously. Use this option for better performance when the order of the items in the list doesn’t matter.
Note: The parallel processing option does not guarantee the order of the elements is maintained in the final output.
Important considerations
Loop size limit
A single loop can run on an array containing up to 20,000 elements. For larger arrays, it is recommended to:
Use the
CHUNK_ARRAYformula to break the list into smaller sub-lists.Use an explode mode event transformation action to emit an event for each of the sub-lists.
Loop over the lists contained in each emitted event
Error handling
If any single element in the array causes a failure within the group, the entire loop processing is stopped. You must build in error path handling (with a dedicated outgoing event from the group) to ensure your Story can continue processing if an element fails.
Group restrictions
There are a few actions you cannot currently place inside groups. Specifically, you cannot group the following action types:
Pages
Webhooks
Receive Email
Additionally, the actions within a group cannot be set up to run on a schedule.
Read more about groups in our docs here.

