While rare, a race condition is when two servers update the status of a contact within seconds of each other. One server updates the contact, and the other server overwrites the first one. This can result in duplicate messages or an action showing that it has been executed but does not reflect the contact. This can cause loop lockouts and other unexpected behavior to occur with workflows.
Please take a look at our Loop Lockout article, as it’s a related topic.
Common Race Condition causes:
Multiple triggers for the same action
Actions being executed at the same time for a contact
Executions happening within automations for the same contact with similar timing
Example 1: Using both the Appointment Status and Customer Booked Appointment triggers to perform the same function will cause conflicts. Keep in mind that the Customer Booked Appointment trigger is deprecated, and you should use the Appointment Status trigger.
Example 2: Using opportunity changes and appointment triggers in the same workflow that fires off simultaneously.
Example 3: A contact tag being added at the same time in multiple workflows.
How do you know it's a race condition?
Investigating workflow execution History/Status + Time and finding issues based on similar timing
Repeating the same process and the tag is being added without it reflecting in the cont
Duplicate messages and workflow history reflect a different trigger than intended due to timing
Unexpected behavior due to timing
Example 1: A Contact tag trigger firing off instead of an appointment trigger because they are in the same workflow and happened at a similar time.
Example 2: You are adding the contact to a workflow with a tag, but you also have other workflows that will fire at the same time for the same contact. Using a Contact tag trigger and then expecting the appointment data to display correctly in an email using custom values. (Membership and Appointment custom values are dependent on their related triggers)
How can I prevent them from happening?
Adding a 2 minute Wait step above the race-affected actions will allow the system to process the action correctly
Do not use the same trigger or similar triggers on one/multiple workflows for the same actions
Be specific with your filters and keep in mind the action the lead would take and how the workflow would fire when that happens.
Do not use unspecific and similar triggers in one/multiple workflows
Pay attention to the timing and watch out for triggers firing at the same time
Use the PASS INPUT TRIGGER PARAMETERS with the Add To Workflow action when adding to another workflow when attempting to pass in values and data
Unexpected Behavior
An execution showing that it happened in the workflow, but it does not reflect in the contact card
Loop Lockouts
Duplicated messages sending
Multiple workflows firing off unexpectedly
Membership or Appointment information not populating or displaying undefined in a message
Best Practices and Troubleshooting
Check Enrollment History and Execution Logs inside the workflow
Check the Added to Workflow execution in the workflow and the action details, especially regarding timing
Add a wait step of 2 minutes before actions that may cause conflicts to offset these issues
Pay attention to the timing and watch for triggers firing at the same time
Get more specific with your filters as an example filter for a specific calendar when using appointment triggers
Investigate multiple workflows that fire off the same or similar triggers that may fire at the same time when an action by the customer is taken
Use unique trigger-to-action implementations instead of multiple workflows for the same actions
If you need to pass data between workflows, remember passing data on to other workflows won't happen with an Add tag action and its related trigger in a separate workflow. Use the Pass input parameters toggle with the Add To Workflow action. This will take all the data in the workflow and pass it into the other workflow
If you are using Zoom and see "undefined," Check that the Zoom user is integrated with their profile, and check if Zoom is added to the user's group calendar. After that, if race conditions apply, this may be due to the incorrect trigger adding a contact to the workflow.
For appointments, use the Appointment Status trigger + correct filters, including STATUS
Check added to workflow and what trigger was involved to know if data was passed correctly