Why Is Everyone Talking About Salesforce Flow Approvals?
In the Spring ’25 release, Salesforce introduced Flow Approvals to replace the legacy approval processes. This approval platform was based on the orchestration functionality. I recorded and released two videos and posts to share this functionality on Salesforce Break. The videos saw great interest from the community, they are about to reach 20K views soon. So, why is everyone talking about flow approvals?
There are multiple reasons:
- Flow approvals are orchestration-based, but they are entirely free unlike other orchestrations.
- Legacy approvals are really old. Salesforce has not been investing in them. They are past due for a remake.
- Legacy approvals are limited. To enhance the functionality, clients had to use AppExchange solutions or paid alternatives by Salesforce like advanced approvals for CPQ.
- Flow approvals allow for parallel approvals, dynamic steps, and flexibility in the approval process.
This is why I decided to create more content in this area, starting with:
- A live course that teaches Flow Approval processes in depth, with hands-on practice. See the details here, and reach out if you’re interested.
- Additional resources focused on solutions that bridge the gaps between Flow Approvals and Legacy Approvals, addressing the limitations of the new platform.
Here is the first post detailing a solution filling one of the gaps.
Flow Approvals Don’t Provide Sufficient Detail In The Related Lists
Here is the first point I would like to address: Flow approvals don’t provide good detailed information in the related lists of the object record like the legacy approvals did.
Solution: Build a screen flow with reactive data tables to show the approval submission records and their related records. Add the screen flow to a tab on the record page.
Salesforce provided a component that can be added to the record page. It is called the Approval Trace component. This provides some information about the approval process, but is not customizable. I asked myself how I can go beyond that, and decided to build a reactive screen flow with data tables to fill this functionality gap. Here is what the output looks like:
To build and deploy this flow, you need to follow these steps:
- Build the screen flow.
- Build the autolaunched flow that will fetch the data you will need. This flow will be used as the screen action in step one.
- After testing and activation, add the screen flow to the record page.
If you have never built a screen flow with screen actions before, let me be the first one to tell you that step one and two are not really completed in sequence. You go back and forth building these two flows.
Let’s get started.
Build the Flow Approval Submission Screen Flow
What I usually do, when building these flows is that I first get the screen flow started. Then I build the autolaunched flow, and go back to the screen flow to build out the rest of the functionality. The reason is that the screen flow data tables will need the outputs from the autolaunched flow to be fully configured.
This is what the screen flow looks like, once it is completed.
For now, you can just ignore the loop section. This is there to ensure that there is a default selection for the first data table, when the flow first runs.
This is the structure of the flow excluding that part:
- Get all approval submission records for the recordId that will be provided as input into the flow.
- Check if there are approval submissions found.
- Display a screen saying “no records were found,” if the get returns null.
- Display a reactive screen mainly consisting of three data tables with conditional visibility calling an autolaunched flow as a screen action.
Here is what this screen looks like:
After you build, test, and activate the autolaunched flow, configure the screen action under the screen properties as shown below.
How the Loop Section Works
The first data table has an input parameter that determines the default selection, when the flow first runs. This is a record variable representing one of the members of the collection record variable that supplies the data. You need to loop the collection of records to get to the record variable. Follow these steps:
- Loop the collection record variable which is the output of your get step. Sort the data by last modified date in your get step.
- Assign the first member to a record variable.
- Exit the loop without condition. Connect the path to the next element outside the loop.
- Add the resulting record variable to the default selection parameter under the configure rows section of your data table.
This loop always runs once, setting the default selection to the most recent approval submission. This populates the related data tables when the flow first runs.
Build the Screen Action Autolaunched Flow for Related Lists
The autolaunched flow receives a single approval submission recordId as input. Then it gets the related records and data the screen flow needs, and returns the data as output.
Here is a screenshot of the autolaunched flow.
This flow executes the following steps:
- Gets the approval submission data.
- Gets the user data for the submitter to resolve the full name.
- Gets approval work items.
- Checks null and sets a boolean (checkbox) variable when the get returns null. The output uses this variable to control conditional visibility of the relevant data table. If found this method yields the best results.
- Get approval submission details.
- Checks null and sets a boolean variable when the get returns null. This variable is then used in the output to drive conditional visibility of the relevant data table.
- Assigns the get results to output collection record variables.
Final Deployment Steps
After testing and activating the autolaunched flow, you need to add the flow to the screen flow as the screen action. The flow input will be fed from the selection of the first data table. You will see that this step will make all the outputs of the autolaunched flow available for the screen flow. Using these outputs build the additional two data tables and configure the conditional visibility.
After testing and activating your screen flow, add the flow to the record page on a dedicated new tab (or to a section on an existing tab). Select the checkbox to pass the recordId to the flow. Note that this flow will work with any record for any object.
Limitations and Suggested Improvements
While this screen flow provides a lot of detail and customization options it has two limitations:
- By default, the data table does not resolve and display record names in lookup fields when you add these fields as columns. To address this, I added the submitter’s full name in a read-only text field for display on the screen. Workaround: Create formula fields on the object and display those in the data table.
- The data tables do not provide a clickable link. Combined with the limitation above, you can create a formula field on the object to address both of these gaps: show the record name and make it a clickable link. Here is the formula example you need for this (shout out goes to Brad Weller for his contribution):
HYPERLINK("/" & Id, Name, '_self')
While I wanted to make these additions to these flows, I did not want to add custom fields to the objects. It should be your decision whether you want to do that or not.
Install the Package to Your Dev Org
Here is the second generation unprotected package for these two flows that you can install in your Dev Org:
For a more visual walk through of how these flows are built, watch the Salesforce Break YouTube video below.
With Salesforce phasing out legacy approvals, mastering Flow Approvals is essential to keep your org’s processes modern, flexible, and future-ready. Gain the confidence to handle any approval challenge with solutions that work seamlessly in real-world Salesforce environments HERE.
Explore related content:
Supercharge Your Approvals with Salesforce Flow Approval Processes
When Your DMLs Have Criteria Conditions Other Than Id
Start Autolaunched Flow Approvals From A Button
Get Ready for the New Time Data Type – Summer ‘25 Flow Goodness
#AutolaunchedFlow #FlowApprovals #FlowBuilder #Salesforce #SalesforceAdmins #SalesforceDevelopers #SalesforceTutorials
