Skip to main content

Using groups

Organize your actions in Tines with groups

Written by Jamie Gaynor
Updated yesterday

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:

  1. Take an array (a list of items) from a preceding event.

  2. Invoke the entire group for each element in that array.

  3. 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:

  1. Use the CHUNK_ARRAY formula to break the list into smaller sub-lists.

  2. Use an explode mode event transformation action to emit an event for each of the sub-lists.

  3. 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.

Did this answer your question?