Skip to main content

Code reviews rule: Multiple record-triggered flows on the same object

Written by David Martin

Multiple record-triggered flows on the same object

This rule applies only to auto-launched record-triggered flows (processType of AutoLaunchedFlow with a triggerType of RecordBeforeSave or RecordAfterSave). Process Builder workflows, screen flows, scheduled flows, and platform-event flows are not considered.

Two record-triggered flows are considered peers when they share the same <object>, an overlapping <recordTriggerType>, and the same <triggerType>.

Why is this an issue?

Having multiple record-triggered flows that fire on the same object and event can lead to:

  • Unpredictable execution order: Salesforce does not guarantee the order in which multiple flows execute.

  • Conflicting logic: Multiple flows may attempt to update the same fields with different values.

  • Debugging complexity: Tracing which flow caused a particular change becomes difficult.

  • Performance impact: Each additional flow adds overhead to record operations.

Salesforce recommends consolidating record-triggered flows when possible, especially when they target the same object, event, and trigger type.

Examples

Example of incorrect configuration β€” two flows share the same <object>, <recordTriggerType>, and <triggerType>:

Account_Validation_Flow.flow-meta.xml:

<Flow xmlns="http://soap.sforce.com/2006/04/metadata">
<processType>AutoLaunchedFlow</processType>
<start>
<object>Account</object>
<recordTriggerType>Create</recordTriggerType>
<triggerType>RecordBeforeSave</triggerType>
</start>
</Flow>

Account_Field_Update_Flow.flow-meta.xml:

<Flow xmlns="http://soap.sforce.com/2006/04/metadata">
<processType>AutoLaunchedFlow</processType>
<start>
<object>Account</object>
<recordTriggerType>Create</recordTriggerType>
<triggerType>RecordBeforeSave</triggerType>
</start>
</Flow>

Example of correct configuration β€” a single consolidated flow handles both validation and field updates:

Account_Before_Create_Flow.flow-meta.xml:

<Flow xmlns="http://soap.sforce.com/2006/04/metadata">
<processType>AutoLaunchedFlow</processType>
<start>
<object>Account</object>
<recordTriggerType>Create</recordTriggerType>
<triggerType>RecordBeforeSave</triggerType>
</start>
</Flow>

How can I fix violations?

  1. Identify all record-triggered flows on the affected object with the same event and trigger type.

  2. Review the logic in each flow to understand what they do.

  3. Consolidate the flows into a single flow with ordered elements.

  4. Use decision elements to organize the logic clearly.

  5. Deactivate and delete the redundant flows.

When should I disable this rule?

You may want to dismiss this issue if:

  • The flows are managed by different teams and consolidation is not practical.

  • The flows have clearly separated responsibilities with no overlap.

  • You are using subflows to organize logic and the entry flows are intentionally separate.

Resources

Did this answer your question?