Salesforce Flow empowers you to build complex business solutions using clicks, not code. Flow Builder is the most powerful tool that a Salesforce Administrator has at their disposal, giving them similar powers as a Salesforce developer. If you need to perform mass updates across multiple unrelated records, or complex logic into opportunity conversion, these are common examples of when you should use Flow. The use cases for Flow are endless, and its capabilities are growing with every Salesforce release.
Flows allow you to build complex business automation using clicks instead of code. The benefit of Salesforce Flow is that they are easy to maintain because anyone (assuming they know Flows) should be able to follow along with what you built.
Flows are accessible through the Setup menu. Simply enter ‘Flows’ into the Quick Find box, and create a new Flow to get started.
There are 3 main “building blocks” of any Flow:
1. Elements are the individual building blocks of the Flow. These perform logical actions such as assignments, decisions, or loops. There are also data elements that will query the database or commit record changes.
2. Connectors determine which element leads to which. Winter ‘21 enables Auto-Layout, and connects the Elements together automatically.
3. Resources are the individual variables of data that are to be used in a Flow – these can be strings of text, numbers, records, formulae, or collections.
You can see these in action on the Flow Canvas below. This example Flow below is a declarative replacement for a ‘before’ trigger. In the ‘Start’ element at the top, you can see that the trigger is when a record is created or edited, and it should run before the record is saved.
On the left-hand side of your Flow Canvas, you’ll see the Toolbox. Depending on the type of Flow that you’re working on (whether it’s a Screen Flow, Auto-Launched Flow, etc.) you’ll see a different set of tools, but it will consist of two tabs, Manager and Elements.
The Manager tab contains the existing elements and resources of the Flow:
This is where your Resources are kept. Some examples of Resources are Variables, Collections, Constants, Formulae, or Choices.
- Variables are where you can store data to use in the Flow. These can be Text, Number, Record, Dates, Currency, Boolean, or Picklists just to name a few.
- Collections are a group, or ‘list’, of Variables stored together. Collections allow you to process multiple records at once, or ‘bulkify’ your Flows.
- Constants are values you set once and never change. They are useful when you want to refer to a single value multiple times through your Flow – if you ever need to change that value, you just need to change it once and it is reflected throughout the Flow.
- Formulae display a dynamic value depending on other values within your Flow. If you need to calculate a future date based on when the Flow was run, a Formula will be helpful. If you need to calculate and set a currency based on an interest rate, a Formula can be used.
- Choices are used within Screen Elements to display an option to the user.
Elements – Interaction, Logic, Data Elements
Next, you have the Elements screen. This is where you can create new Resources and Elements in the Flow. There are a number of different elements that will dynamically show up depending on the type of Flow you’re working with.
Interaction elements include Screen, Action, or Subflow.
- A Screen element, only available in a Screen Flow, allows you to present a screen to the user. This screen can display information from the data your Flow is working on, or it can be used to collect information from the user.
- An Action element allows you to pass data through to a pre-existing standard or custom action such as Send Email, a Quick Create, or a custom Apex action.
- A Subflow element allows you to call another Flow within your current Flow – this means that if you have another complex Flow set up, you don’t need to replicate the logic in your new Flow. This also makes maintenance easier as you only need to update your logic once if you design your Flows well enough!
Logic elements include Decisions, Assignments, and Loops.
- Decisions allow you to split your Flow depending on the data that’s being sent through it.
- Assignments allow you to give a value to a variable.
- Loops allow you to handle multiple variables at once using collections.
Data elements include Create, Update, Get, or Delete records.
Essentially, any time you want to edit a record in the Salesforce database, you’ll need to use one of these Data elements. These will also dynamically display depending on the type of Flow you’re running. If you’re running a ‘before triggered’ Flow, you’ll only be able to use ‘Get’, for example.
To ‘call’ a Flow means that something happens in order to kickstart the Flow process. This could be a Salesforce record change, from another process in Apex/Process Builder, or automated on a recurring schedule. When you create a new Flow, you’re prompted to select the type of Flow you wish to create.
- A Screen Flow is called through a button or action, or displayed in a Lightning Page or the Utility Bar, and appears as a screen for the user to interact with. This cannot be automatically called.
- A Schedule-Triggered Flow runs automatically to a recurring schedule. This is handy for tasks that need to be performed daily on a set of records or to handle jobs that run frequently.
- Autolaunched Flows are called through Apex, Process Builder, or another Flow. They can be used to perform actions automatically behind the scenes.
- Record-Triggered Flows begin when a record is created or updated, very similar to Process Builder (more on this later).
- Platform Event-Triggered Flows are called when a platform event is received, similar to an Autolaunched Flow.