---
schema_version: "1"
id: 10ca35b272e456342f0baaf3e5ff903609445be87e72a2fe0a804892d9f51665
title: Handle Stage Errors in Flow Approval Processes
collection: admin
version: current
locale: en-us
portal_url: https://docs.salesforce.com/admin/current/en-us/platform/264-0-0/automate_automated_approvals_add_error_handling.md
canonical_url: https://help.salesforce.com/s/articleView?id=platform.automate_automated_approvals_add_error_handling.htm&release=264.0.0&type=5
source_site: help.salesforce.com
content_type: documentation
content_hash: 685da957cfd5cc0e33269ea998ee4eb7cc192c9542811dcd13e041b8962574c8
description: Set up fault paths to handle errors in flow approval processes. Create fault paths for each stage and add elements that trigger when errors occur in that stage or its steps. This approach minimizes the likelihood of approval submissions failing due to stage errors.
products:
  - Flow Builder
  - Salesforce Platform
release: "264"
---
# Handle Stage Errors in Flow Approval Processes

Set up fault paths to handle errors in flow approval processes. Create fault paths for each stage and add elements that trigger when errors occur in that stage or its steps. This approach minimizes the likelihood of approval submissions failing due to stage errors.

### Required Editions

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small edition"><colgroup><col style="width:100%"></colgroup><tbody><tr class=""><td class="slds-cell-wrap" style="vertical-align:top;"><a href="https://help.salesforce.com/s/articleView?id=platform.automate_automated_approvals_about_supported_editions.htm&amp;release=264.0.0&amp;type=5" title="Review the supported products and editions for Flow Approval Processes.">View supported editions for Flow Approval Processes.</a></td></tr></tbody></table>

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small permission">
        <colgroup>
          <col style="width:50%">
          <col style="width:50%">
        </colgroup>
        <thead class="slds-text-title_caps ">
          <tr class="">
            <th scope="colgroup" class="slds-cell-wrap" colspan="2" style="text-align:center;vertical-align:top;" id="d96342e66">User Permissions Needed</th>
          </tr>
        </thead>
        <tbody>
          <tr class="">
            <td data-label="User Permissions Needed" class="slds-cell-wrap" style="vertical-align:top;" headers="d96342e66 ">To open, edit, or create a flow approval process in Flow Builder:</td>

            <td class="slds-cell-wrap" style="vertical-align:top;" headers="d96342e66 "><span>Manage Flow</span></td>

          </tr>
        </tbody>
      </table>

To understand the value of and strategies for error handling in flow approval processes, see, see [Error Handling in Flow Approval Processes](https://help.salesforce.com/s/articleView?id=platform.automate_automated_approvals_error_handling.htm&release=264.0.0&type=5 "Error handling addresses how to manage unexpected issues that can occur when a flow approval process runs. Configure fault paths for stages to define actions to take if issues occur, ensuring that approval submissions are approved or rejected instead of failing.").

## Add a Fault Path

Define a fault path for a stage in the flow approval process.

You must have a flow approval process with at least 1 stage.

1. Hover over a stage in the flow approval process.
2. Click ![The actions icon](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-platform-platform_automation-264-0-0-production-enus/60568438-ec7e-4665-acd1-7c80dcbe60d5/platform_automation/images/actions_icon.png), and then select **Add Fault Path**.
3. Save your work.

Add at least 1 element to the fault path.

## Add a Decision Element to a Fault Path

Use decision elements to create conditions that control what stages are run in a fault path.

You must have a flow approval process with a stage that has a defined fault path.

Use a Decision element to avoid approving an approval submission without anyone completing an approval work item. See Avoiding Fault Path Auto Approvals in [Error Handling in Flow Approval Processes](https://help.salesforce.com/s/articleView?id=platform.automate_automated_approvals_error_handling.htm&release=264.0.0&type=5 "Error handling addresses how to manage unexpected issues that can occur when a flow approval process runs. Configure fault paths for stages to define actions to take if issues occur, ensuring that approval submissions are approved or rejected instead of failing.").

When a fault path is configured for a stage that contains multiple steps, use a Decision element to determine which step encountered an error.

1. In the Fault Path, click ![Add element](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-platform-platform_automation-264-0-0-production-enus/60568438-ec7e-4665-acd1-7c80dcbe60d5/platform_automation/images/orchestration/orchestrator_fbuilder_circleplus.png), and then select **Decision**.
2. Enter a label, API name, and description.
3. Select the type of decision logic to use for the Decision element.
    - To determine which outcome runs based on traditional logic expressions and explicitly defined data from your flow approval process, select **Define Manually (Default)**
    - To dynamically determine which outcome runs based on AI evaluating data from your flow approval process, select **Define with AI (Advanced)**.
4. If you selectedDefine Manually (Default), define the conditions and outcomes for the element. Outcomes for a Decision element with manual conditions are evaluated in the order that they’re listed. Therefore, the order that you define your outcomes in can impact the outcome that the orchestration run associated with a parent approval submission takes.
    1. Enter a label and an outcome API name. The outcome API name must be unique within the flow approval process.
    2. Define the condition requirements to use for the first outcome.
        
        <table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small ">
                  <colgroup>
                    <col style="width:50%">
                    <col style="width:50%">
                  </colgroup>
                  <thead class="slds-text-title_caps ">
                    <tr class="">
                      <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d96342e267">Option</th>
                      <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d96342e270">Behavior for Decision Outcomes</th>
                    </tr>
                  </thead>
                  <tbody>
                    <tr class="">
                      <td data-label="Option" class="slds-cell-wrap" style="vertical-align:top;" headers="d96342e267 ">
                        <samp class="parmname">All Conditions Are Met</samp>
                      </td>

                      <td data-label="Behavior for Decision Outcomes" class="slds-cell-wrap" style="vertical-align:top;" headers="d96342e270 ">If one of the conditions is false, the flow approval process
                        evaluates the next outcome’s conditions. </td>

                    </tr>
                    <tr class="">
                      <td data-label="Option" class="slds-cell-wrap" style="vertical-align:top;" headers="d96342e267 ">
                        <samp class="parmname">Any Condition Is Met</samp>
                      </td>

                      <td data-label="Behavior for Decision Outcomes" class="slds-cell-wrap" style="vertical-align:top;" headers="d96342e270 ">If one of the conditions is true, the flow approval process
                        immediately takes this outcome’s path. </td>

                    </tr>
                    <tr class="">
                      <td data-label="Option" class="slds-cell-wrap" style="vertical-align:top;" headers="d96342e267 ">
                        <samp class="parmname">Custom Condition Logic Is Met</samp>
                      </td>

                      <td data-label="Behavior for Decision Outcomes" class="slds-cell-wrap" style="vertical-align:top;" headers="d96342e270 ">
                        <p>If you select this option, provide the condition logic by entering up
                          to 1,000 characters. Use: </p>
                        <ul>
                          <li>Numbers to refer to each condition</li>

                          <li><kbd>AND</kbd>, <kbd>OR</kbd>, or
                            <kbd>NOT</kbd> to identify which combination of
                            conditions must be true
                          </li>

                          <li>Parentheses to group parts of the string together</li>

                        </ul>
                        <p>If you enter <kbd>AND</kbd>, it’s the same as if you
                          selected <strong class="uicontrol">All Conditions Are Met</strong>. If you enter
                          <kbd>OR</kbd>, it’s the same as if you selected
                          <strong class="uicontrol">Any Condition Is Met</strong>. If you enter any other
                          logic, make sure that you include a number for each condition.
                        </p>
                        <p style="margin-bottom:0;">For
                          example, for <kbd>1 AND NOT(2 OR 3)</kbd>, the flow
                          evaluates whether the first condition is <code>true</code> and
                          neither the second nor third condition is
                          <code>true</code>.
                        </p>
                      </td>

                    </tr>
                  </tbody>
                </table>
    3. Define the logic conditions for the first outcome.
        
        <table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small ">
                  <colgroup>
                    <col style="width:24%">
                    <col style="width:76%">
                  </colgroup>
                  <thead class="slds-text-title_caps ">
                    <tr class="">
                      <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d96342e381">Column Header</th>
                      <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d96342e384">Description</th>
                    </tr>
                  </thead>
                  <tbody>
                    <tr class="">
                      <td data-label="Column Header" class="slds-cell-wrap" style="vertical-align:top;" headers="d96342e381 ">
                        <strong class="uicontrol">Resource</strong>
                      </td>

                      <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d96342e384 ">
                        <p>Options: </p>
                        <ul>
                          <li>Select an input variable or automatic output from a stage or step.</li>

                          <li>Select a Decision element.</li>

                          <li>Select a global variable.</li>

                        </ul>
                      </td>

                    </tr>
                    <tr class="">
                      <td data-label="Column Header" class="slds-cell-wrap" style="vertical-align:top;" headers="d96342e381 ">
                        <strong class="uicontrol">Operator</strong>
                      </td>

                      <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d96342e384 ">The available operators depend on the data type selected for
                        <samp class="parmname">Resource</samp>. See <a href="https://help.salesforce.com/s/articleView?id=platform.automate_automated_approvals_ref_operators_condition.htm&amp;release=264.0.0&amp;type=5" title="Use condition operators to verify the value of a selected resource. Conditions are used in Decision elements.">Flow Approval Processes Operators in Decision Elements</a>.
                      </td>

                    </tr>
                    <tr class="">
                      <td data-label="Column Header" class="slds-cell-wrap" style="vertical-align:top;" headers="d96342e381 ">
                        <samp class="parmname">Value</samp>
                      </td>

                      <td data-label="Description" class="slds-cell-wrap" style="vertical-align:top;" headers="d96342e384 ">
                        <p><strong class="uicontrol">Resource</strong> and <strong class="uicontrol">Value</strong> in the same
                          row must have compatible data types. </p>
                        <p>Options: </p>
                        <ul>
                          <li>Select a flow approval process resource, such as an input variable or
                            automatic output from a stage or step.</li>

                          <li>Select a global variable.</li>

                          <li>Enter a literal value.</li>

                        </ul>
                        <p style="margin-bottom:0;">When you add or subtract a number from a date value, the date adjusts in
                          days, not hours.</p>
                      </td>

                    </tr>
                  </tbody>
                </table>
5. If you selected Define with AI (Advanced), define the instructions and outcomes for the element.
    1. For Decision Instructions, enter text that describes what decision the element makes. Include resources from the flow approval process to improve AI accuracy.
    2. Enter a label and an outcome API name. The outcome API name must be unique within the flow approval process.
    3. For Outcome Instructions, enter text that tells AI when to take the outcome. Include resources from the flow approval process to improve AI accuracy. Outcomes for a Decision element with AI conditions are evaluated simultaneously. Therefore, the order that you define your outcomes in has no impact on the outcome that the orchestration run associated with a parent approval submission takes.
6. (Optional) To add a decision outcome to a Decision element, click ![The new outcome button](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-platform-platform_automation-264-0-0-production-enus/60568438-ec7e-4665-acd1-7c80dcbe60d5/platform_automation/images/decision_element_add_outcome_button.png). Repeat the steps appropriate for the Decision element type to configure the outcome. For manual conditions, see Step 3b. For AI conditions, see Step 4b.
7. (Optional) To reorder a decision outcome in a Decision element, click ![The reorder icon for a decision outcome](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-platform-platform_automation-264-0-0-production-enus/60568438-ec7e-4665-acd1-7c80dcbe60d5/platform_automation/images/decision_outcome_reorder_icon.png) and drag the item to its new location. You can’t move a decision outcome with conditions to the last position on the list because the default outcome is always last.
8. (Optional) To improve the readability of the Decision element, rename the default outcome.
    1. Under Outcome Order, select **Default Outcome**.
    2. Enter a label.
9. Save your work.

## Add a Stage Element to a Fault Path

Use Stage elements to group steps that are run in a fault path.

You must have a flow approval process with a stage that has a defined fault path.

1. In the Fault path, click ![Add element](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-platform-platform_automation-264-0-0-production-enus/60568438-ec7e-4665-acd1-7c80dcbe60d5/platform_automation/images/orchestration/orchestrator_fbuilder_circleplus.png), and then select **Stage**.
2. Enter a label, API name, and description.
3. (Optional) Under Select When to Complete the Stage, select a condition.
    - To complete the stage when all its steps are completed, select **When all steps have been marked Completed, the stage is marked Completed**.
    - To specify up to 10 requirements to meet before the stage can be completed, select **When the specified requirements are met, the stage is marked Completed**. Then configure the requirements.
    - To use complex requirements to determine when the stage can be completed, select **When the specified evaluation flow returns True, the stage is marked Completed**. Then select an active evaluation flow.
4. Save your work.

Add steps to the stage.

## Add an Approval Step to a Stage

When a flow approval process stage has a configured fault path, and an error occurs in the associated orchestration run’s stage, the associated approval submission can automatically be approved without any completed approval work items. Add an approval step to a stage in a fault path to assign an approval work item to reviewers.

To understand how errors impact the final disposition of an approval submission associated with a flow approval process, see Fault Path in [Stages in Flow Approval Processes](https://help.salesforce.com/s/articleView?id=platform.automate_automated_approvals_concepts_stages.htm&release=264.0.0&type=5 "A stage groups related steps, organizing them into a logical phase. Stages are executed sequentially, and only one stage in a flow approval process can be in progress at a time. You configure the conditions that must be met for the stage to be considered complete.").

An approval step can be completed without running the flow associated with it. Reference a screen flow for an approval step, that includes only actions that are directly relevant to the approval work item. To perform additional actions, like updating related records or sending error notifications to stakeholders, use a background step.

1. In the stage element, click **\+ Add Step**, and select **Approval Step**.
2. Enter a label, API name, and description.
3. (Optional) Under Select When to Start the Step, select a condition.
    - To automatically start the step when the stage starts, select **When the stage starts, the step starts**.
    - To start the step after another step is completed, select **When another step is marked Completed, the step starts**. Then enter the name of the step to be completed first.
    - To specify up to 10 requirements to meet before the step can start, select **When the specified requirements are met, the step starts**. Then configure the requirements.
    - To use complex requirements to determine when the step starts, select **When the specified evaluation flow returns True, the step starts**. Then select an active evaluation flow.
4. Under Select an Action to Run, select an active screen flow that contains a text output variable named `approvalDecision` to run for the step. Provide values or the API names of resources for the selected flow’s required inputs. See Select an Action to Run in [Approval Steps](https://help.salesforce.com/s/articleView?id=platform.automate_automated_approvals_concepts_approval_step.htm&release=264.0.0&type=5 "Approval steps require user interaction and create approval actions that assigned approvers or delegates can complete asynchronously. Approvers can complete reviews without running the associated flow, so include only actions directly relevant to the approval work item. Use a background step after the approval step to update related records or send other notifications.").
    
    ![Tip](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-platform-platform_automation-264-0-0-production-enus/60568438-ec7e-4665-acd1-7c80dcbe60d5/images/icon_tip.png)
    
    Tip Approvers can approve or reject approval work items without running the associated screen flow. Because the screen flow might not run, include only information needed for the approval decision. To perform other actions, use a background step after the approval step.
5. Under Select an Approver, select an assignment type.
    - To specify a user, select **User**.
    - To specify a regular public group, select **Group**.
    - To specify a group that’s a queue, select **Queue**.
    - To specify a resource that contains a user’s username, a group’s API name, or a queue’s API name when the orchestration run associated with an approval submission runs, select **Resource**.
6. Specify the assigned user, group, or queue.
    
    - If you selected User, search for the name of an internal user or a credentialed Experience Cloud site visitor, and select it from the list.
    - If you selected Group, search for a group’s label, and select it from the list.
    - If you selected Queue, search for a queue’s label, and select it from the list.
    - If you selected Resource, select the API name of the variable that contains the assignee’s username, group’s API name, or the queue’s API name when the orchestration run associated with an approval submission runs.
    
    ![Important](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-platform-platform_automation-264-0-0-production-enus/60568438-ec7e-4665-acd1-7c80dcbe60d5/images/icon_important.png)
    
    Important Don’t select $User for Resource. The $User global variable evaluates to the system user when the flow approval process is running in system context. An approval step can’t be assigned to the system user.
7. (Optional) To send a custom email notification to approvers and their delegates when an approval work item is created for this step, select **Customize notification email**. Create text templates for a personalized email subject and body and enter their API names for **Subject** and **Body**. Or enter text for the email’s subject and body.
8. Under Select Where to Complete the Action, select the API name of the variable that contains the ID of the record to be approved.
    1. To lock the record under review when the orchestration run associated with an approval submission runs and the approval step starts, select **Lock the record**. The record is automatically unlocked when the approver or their delegate completes the approval step.
    2. To allow the approver to update the record under review when it’s locked, select **Allow approver to edit the locked record**.
9. (Optional) Under Select When to Complete the Step, select a condition.
    - To complete the step when an approver or their delegate has completed the associated work item, select **When the assigned user has completed the screen flow, the step is marked Completed**.
    - To specify up to 10 requirements to meet before the step is completed, select **When the specified requirements are met, the step is marked Completed**. Then configure the requirements.
    - To use complex requirements to meet before the step is completed, select **When the specified evaluation flow returns True, the step is marked Completed**. Then select an evaluation flow that you’ve created, tested, and activated.

## Add a Background Step to a Stage

Add background steps to a stage in a fault path to take actions like updating a record or communicating with stakeholders.

If the orchestration run associated with an approval submission encountered an error, use a background step to notify stakeholders if it was approved before all associated approval work items were approved.

1. In the stage element, click **\+ Add Step**, and select **Background Step**.
2. Enter a label, API name, and description.
3. (Optional) Under Select When to Start the Step, select a condition.
    - To automatically start the step when the stage starts, select **When the stage starts, the step starts**.
    - To start the step after another step is completed, select **When another step is marked Completed, the step starts**. Then enter the name of the step to be completed first.
    - To specify up to 10 requirements to meet before the step can start, select **When the specified requirements are met, the step starts**. Then configure the requirements.
    - To use complex requirements to determine when the step starts, select **When the specified evaluation flow returns True, the step starts**. Then select an active evaluation flow.
4. Under Select an Action to Run, select an active, autolaunched flow.
5. Under Select Who to Run the Action As, select an option.
    - (Default) To run the step as the automated process user, select **Automated Process User**.
    - To run the step as a specific user, select **A Selected User**. Then select the user to run the step as.
    - To run the step as a user that’s determined at run time, select **A User Specified by a Resource at Run Time**. Then select the flow approval process text resource that contains the username of the person to run the step as at run time.

## Continue Processing After a Fault Path Runs

By default, a fault path is added to a flow approval process with an end element. To connect the fault path back into the flow approval process, use a Go To connector.

When a flow approval process includes final actions, use a Go To connector to direct fault paths to the Decision element that manages these actions. This practice ensures the orchestration run associated with a flow approval process proceeds to its intended conclusion, even if a stage error triggers a fault path.

1. In a fault path, directly before the End element that you want to change the connector for, click ![../images/flow\_builder\_new\_plus\_sign\_icon.png](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-platform-platform_automation-264-0-0-production-enus/60568438-ec7e-4665-acd1-7c80dcbe60d5/platform_automation/images/orchestration/orchestrator_fbuilder_circleplus.png).
2. Click **Connect to element**.
3. Click ![plus sign on an element in the connect to element mode](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-platform-platform_automation-264-0-0-production-enus/60568438-ec7e-4665-acd1-7c80dcbe60d5/platform_automation/images/flow_builder_element_plus_sign_for_connector.png) on the element that you want to connect to.

Instead of an end element, the fault path now has a dotted line connection to the specified element.