To optimize the performance of your workflows, follow the best practices described in this document.
For specific questions about your project's workflows, talk to your customer success manager.
Table of contents
When defining segmentation queries, filter nodes and trigger nodes, use care when selecting the operators they'll use to compare data—as described below.
String comparison operators
Filters support six different text (string) comparison operators.
These operators can be sensitive to data volume and cardinality—the number of
unique values that exist in the Iterable project for the field in question (for
shirtSize field whose value is always
XL has a
cardinality of 4).
- Is Set, Equals, and Does Not Equal can be used without regard to data volume or cardinality.
- Starts With should generally be reserved for small datasets and fields with low cardinality.
- Contains and Matches Regex are sensitive to data volume and cardinality, and should only be used when searching small datasets and fields with low cardinality.
Email Domain operator
To search for contacts whose email addresses match a particular domain:
- Do not use an
email Contains domain.comquery.
- Instead, use an
Email Domain Equals domain.comquery.
Data quantity and use
Before you decide to send a particular kind of data to Iterable, make sure that your project will use it (whether immediately or in the future). It's quicker for Iterable to search through a smaller volume of data, so it's best to avoid sending along anything that your project won't need.
To determine whether or not you're storing more data than you need, review your contacts' user profiles.
Read Monitoring Custom Event Usage to learn more about how to analyze the custom events stored by your Iterable project.
In some cases, your project may store large quantities of a particular event for which it really only needs the most recent instance (for each contact). In these cases, instead of storing the events, you can store the data as user profile fields. This stores less data in your project, and you can segment and filter on it with Contact Property queries.
When using Iterable's segmentation tools, you can save static and dynamic lists:
- Static lists include all contacts that match the segmentation query when the list is saved.
- Dynamic lists re-evaluate their defining queries before each use, providing an up-to-date set of contacts.
When possible, simplify the segmentation queries associated with dynamic lists, especially lists associated with workflows that run frequently.
List Membership operations (combining dynamic lists)
In segmentation, List Membership criteria make it possible to combine members of multiple other lists into a single result set (for example, all "Premium Subscribers" and all "New Subscribers").
However, a List Membership search performs only as well as the dynamic lists it references. It's especially important to pay attention to this when using a List Membership operator to reference nested dynamic lists (a dynamic list that refererences a dynamic list, potentially many times over).
To minimize these concerns:
- Use static lists when possible.
- Generally avoid nested dynamic lists.
- When constructing segmentation queries that will drive dynamic lists, follow the best practices defined in this guide.
If you can't use static lists and want to discuss the best ways to optimize your workflows, talk to your customer success manager.
Workflow processing queues
If contacts enter a workflow faster than it can process them, you'll see user counts build up on individual workflow nodes.
A user count displayed on a node represents the number of contacts who are currently finished with that node but waiting to move on to the next. In the above example, 1713 contacts have entered the workflow but haven't yet received the Black Friday Coupon Deal email.
However, the presence of a user count on a workflow node doesn't necessarily mean that a workflow node is processing slowly. For example:
- For delay nodes, you may see a count as contacts wait for the delay to expire.
- If you trigger a significant number of contacts into a workflow at the same time, you may see a user count until the workflow finishes processing the queue.
If you continue to see user counts that do not decrease after refreshing the workflow page, it may be a sign that your workflow is processing contacts more slowly than expected (potentially because of the reasons described in this document).
For help determining the best way to optimize your workflows, contact your customer success manager.