Admins / Developers / Flow

The Complete Guide to Salesforce Flow

By Tim Combridge

Salesforce Flow empowers you to build complex business solutions using clicks, not code. Flow Builder is the most powerful tool that a Salesforce Admin has at their disposal, giving you similar powers that Salesforce developers have. If you need to perform mass updates across multiple unrelated records, or complex logic into opportunity conversion, these are common examples for when you should use Flow.

The use cases for Flow are endless, and its capabilities are growing with every Salesforce release. Formerly Visual Flow, Salesforce Flow has gone through significant upgrades to give us the Flow Builder interface, after being completely rebuilt from the ground up!

Today, I’ll take you through Salesforce Flow basics, and answer the following questions: What are Flows? What are Flow’s features? How can Flows be called? And finally, can Flows become the ‘one tool to rule them all’?

What are Salesforce Flows?

Flows allow you to build complex business automation using clicks instead of code. As an admin, Flows are going to be your best friend because you will be able to handle the majority of complex business requirements without the help of a Salesforce developer!

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.

Read More: Process Builder Vs Flows – Become the Ultimate Admin

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.

What Are the Basic Flow Features?

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.

Manager Tab

In the screenshot below, you can see the Manager tab that contains the existing elements and resources of the Flow (this is from an Auto-Launched 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. In the screenshot below, you’ll see a ‘Screen’ element (because I took the screenshot in a Screen Flow, which will not appear in a Flow type that doesn’t support Screens, such as an Autolaunched 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.

How Do You Call a Flow in Salesforce?

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 to 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.

Can Flows Be the ‘One Tool to Rule Them All’?

This is a question that I’ve been wondering about, each time Salesforce announcements huge amounts of updates for Flow in every release. But my suspicious have been confirmed. At Dreamforce ’21, Salesforce announced that Workflow rules & Process Builders will be retired, and Flow will be the only declarative automation solution on the platform.

Overall, I think this is inevitable. Salesforce has not updated the functionality of other automation solutions in many years, and due to Flow having “Apex code” like functionality, it’s by far the most powerful automation tool.

By learning and adopting Flow, you are able to help your business beyond what a declarative Salesforce Admin would have been able to do before. This means you can bring value faster to your business, without the need for expensive developers.

Summary

Today, I have taken you through the basics of Salesforce Flows to answer what Flows are, the features, and how Flows can be called. Finally, I shared my thought on why Flows could become the ‘one tool to rule them all’.

As you can see, Salesforce Flow is a powerful tool that empowers admins to build complex business solutions, possibly the most powerful tool that a Salesforce Admin has at their disposal! The use cases for Flow are endless, and its capabilities are growing with every Salesforce release.

I can’t stress enough just how much learning Flow Designer (back in the day) changed how I viewed Salesforce. I learnt that I could build a functional business system without having to learn Apex, and I could quickly assist department heads to implement custom logic in a few hours. I would recommend learning Flows to absolutely any admin who uses Salesforce (and I do!). That said, with great power comes great responsibility! There are a number of best practices that need to be followed to ensure your Flows are future proof and scalable (something we’ll go through in another post!)

The Author

Tim Combridge

Tim is the Managing Director at Sensible Giraffe, passionately educating others via high-quality blog content and training courses including the Ultimate Salesforce Flow Foundation Course.

Comments:

    Champakali
    March 12, 2018 4:33 pm
    Thanks for this post! Funny fact: I‘ve set up my very first Flow today before reading this! Looking forward for best-practices!
    ROB HANSEN
    March 12, 2018 4:41 pm
    I currently am working on a custom app and I have a lot of flows with loops in them. I have a few that have record creates in the loop and I have heard that may cause issues. Do you know if there is anything that may be a problem with creating records in a loop? It could be up to 500 at once.
    Jane Isaac
    March 12, 2018 4:44 pm
    This is very helpful - especially the translations/definitions of each of the terms! Thank you very much. I needed this.
    Jeff Susich
    March 12, 2018 5:09 pm
    Excellent summary of the incredibly powerful, But difficult-to-use Flow
    Roger Borges
    March 13, 2018 6:46 am
    Excellent, thanks Elgun for this post, looking forward to the series!
    Michael Bishop
    March 13, 2018 5:07 pm
    Great article. There’s a Flow “gotcha”- be aware of Flow limits, the main one being if you edit records in bulk, and the act of editing fires a flow, then you may hit the SOQL query limits resulting in horrible error messages as Salesforce strings it all together as one big flow. if using Flows try and limit use to occasions where you know they will be fired individually
    Elgun
    March 14, 2018 6:48 pm
    Thanks a lot for your kind words! Rob, As Michael mentioned you may hit SOQL limits. The best practice is "bulkification". In Another word, you use sObject collection variable with the help of Assignment and Loop elements. Basically, you store every record in the collection and when the loop ends you create/update records with fast create/update element. It will help to decrease your SOQL calls to the database by a lot (depending on the record count) because it is running as one batch instead of number of batches. So, in example of 500 records, if you have update/create element within the loop you will have 500 separate batches performed rather than 1 batch if you use fast update/create outside of the loop. For more on bulkification please refer to official guide: https://help.salesforce.com/articleView?id=vpm_admin_bulkification.htm&type=5 For more on Flow limits: https://help.salesforce.com/articleView?id=vpm_admin_flow_limits.htm&type=5 Since Flow limitation and bulkification are 2 major interests, I will write my next blog post on this. Kind regards, Elgun
    Elgun
    March 14, 2018 7:16 pm
    Rob, As Michael mentioned in below comment, you may hit SOQL limits. The best practice is “bulkification”. In Another word, you use sObject collection variable with the help of Assignment and Loop elements. Basically, you store every record in the collection and when the loop ends you create/update records with fast create/update element. It will help to decrease your SOQL calls to the database by a lot (depending on the record count) because it is running as one batch instead of number of batches. So, in example of 500 records, if you have update/create element within the loop you will have 500 separate batches performed rather than 1 batch if you use fast update/create outside of the loop. For more on bulkification please refer to official guide: https://help.salesforce.com/articleView?id=vpm_admin_bulkification.htm&type=5 For more on Flow limits: https://help.salesforce.com/articleView?id=vpm_admin_flow_limits.htm&type=5 Since Flow limitation and bulkification are 2 major interests, I will write my next blog post on this. Kind regards, Elgun
    Chetan
    July 11, 2018 4:06 am
    How can i make fields invisible in the form in the flow screem?
    Elgun
    August 26, 2018 3:47 pm
    Hey Chetan, if you mean making it invisible to a certain group (profiles?) of people, then you can create different screen elements and give access to those screens based on the group of the User through the decision element.
    Rosalina M Livingston
    January 21, 2020 10:08 pm
    I am starting my journey to understand the theory of Flow and then use cases, this was a great introduction. Please keep up the awesome blogs (I've been a subscriber for a few years now and have been working with the platform for over ten) when I read you blogs you really deliver in a logical and easier to read mode then Salesforce H&T.
    Lucy Mazalon
    January 23, 2020 1:19 pm
    Thank you Rosalina, we appreciate that!
    Deepak Kumawat
    April 17, 2021 4:29 am
    thanks for sharing...
    Leon Tunctson
    April 19, 2021 3:45 pm
    How do I reference multiple tables in a flow? How do reference inner and outer joins in Flows?
    John Sadler
    April 20, 2021 2:36 am
    Hey folks .. there's a Beta Auto layout function that looks OK for small flows. Interesting that Elements disappears from the sidebar replaced by + in the links between the Elements.
    Test
    June 07, 2021 11:10 am
    How to create an event on opp... through flows?
    Mandeep Deka
    August 16, 2021 3:09 pm
    It would be great to have the reusable components of flow as it becomes more robust and common components are made available and editable to suit the needs like common business logics. For example, looping through a related list of records to find a matching record and update a related record when found. Just my 2 cents thought.
    Daryl Moon
    September 13, 2021 10:25 pm
    I've created a Learning Salesforce Flow course that is ideal for beginners. I take you through step-by-step all of the features and you will build 24 flows during the course. Get started on your flow journey now: https://www.certifycrm.com/mod/page/view.php?id=4788
    Y Tu
    September 24, 2021 12:49 pm
    Yes, you can build a record-triggered flow + a validation rule to prevent a record from being deleted.
    Rafella
    December 08, 2021 9:38 am
    Hi, I'm currently studying for the Platform Developer 1 exam and I came across this article. Would you be able to advise that for the purpose of the exam, when given an option to use either workflow rules, process builder, flow, and trigger, which declarative feature should I choose (assuming I can only choose 1 and all 4 options can achieve the desired result)?
    Tom
    January 19, 2022 3:32 pm
    Can these still run as System Context? I do not see the new option in the sandboxes.
    Neha Verma
    February 24, 2022 3:40 am
    Hi, I am sending email alert using flow and it is going to spam folder , I want it in Inbox. Can you tell me how can I do this??
    Ash
    February 26, 2022 4:49 pm
    If you want to store the ID of a record type for later use in a flow, should I use a Text variable or Record Variable? I'm leaning toward text but just need confirmation. Thank you
    Hammad
    February 26, 2022 5:33 pm
    I need to understand if flow, visual flow and lightning flow are same thing and differenet names only for one or are these three different entities?
    Shelly Kukreja
    May 20, 2022 3:14 pm
    Flows are not one time solution especially while processing good volume of Data. We can hit SOQL governor limits. Since its a very common scenario to process data in loops, we may come across "Maximum number of executed elements at run time" which has a limit of 2000. All the individual blocks that are processed inside flow loop gets counted as an executable element . So even if we bulkify we may hit the Executed Elements limit for large volume of record
    Brian Mcfarlane
    September 02, 2022 5:58 pm
    I am practicing building flows in my dev org and encountered an issue when i built a formula resource. I seem to be missing the 'Check Syntax" feature is there away to activate it in my dev org?
    Kritik Garg
    February 13, 2023 5:18 am
    Great guide, Tim! Your in-depth explanation of Salesforce Flow is incredibly helpful. The step-by-step approach makes it easy to understand and follow. This resource will be a valuable tool for anyone looking to optimize their use of Salesforce. Thanks for sharing your knowledge and expertise!
    android apks game
    February 29, 2024 9:26 am
    Wow, this guide is exactly what I needed! I've been struggling to understand Salesforce Flow and this post has broken it down in a way that makes sense for me. Can't wait to start implementing these tips and tricks in my own org!

Leave a Reply