Flow / Admins / Developers

The Complete Guide to Salesforce Flow

By Tim Combridge

Updated May 05, 2026

Salesforce Flow empowers you to automate complex business processes using clicks, not code. Flow Builder is the most powerful tool that a Salesforce Admin has, giving you similar powers that Salesforce Developers have. If you need to perform mass updates across multiple unrelated records, or complex logic for 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. Let’s dive deep into the core of what Salesforce Flow does 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 enable the automation of business processes while also eliminating the need for coding. What this means is that you’ll be able to create in a similar fashion to a developer, but use Flow as your paintbrush instead of a code-based solution like Apex. As an admin, Flows will be your best friend, because you will be able to handle many complex business requirements without the help of a Salesforce Developer!

The benefit of Salesforce Flow is that they are relatively easy to maintain because anyone (assuming they know Flow) should be able to follow along with what you have built.
There are two ways to access and manage your Flows. Firstly, Flows are accessible through the Setup menu. Simply enter ‘Flows’ into the Quick Find box, and create a new Flow to get started.

Another way that was added recently is through the main application, a new Lightning App called Automation. From the Automation App, simply click the New button either on the Home or Flows tabs.

READ MORE: Process Builder Vs Flows – Become the Ultimate Admin

There are three main “building blocks” of any Flow:

  1. Elements are the individual building blocks of the Flow. They sit on the Flow Canvas as cards or blocks and 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. Most of the time, you’ll be using the Auto-Layout mode, which automatically aligns your Elements and joins them together without you needing to.
  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. The example Screen Flow begins with a green Start element followed by a pink Get Records element. It then moves into a Loop element (which allows you to process a collection of variables one-by-one) and an Assignment. Finally, it ends in an Update Records element. 

Salesforce Flow’s Key Features

On the left-hand side of your Flow Canvas, you’ll see the Toolbox (If you don’t see it, expand it by clicking the button at the top-left of your screen).

Once the Toolbox is open, you’ll be presented with a list of Resources, Elements, a Search bar, and a New Resource button. This list groups all the different parts of your Flow into logical groupings. Resources are grouped by type (i.e., Variables, Constants, Formulae). Elements (the cards on your Flow Canvas) are also listed and grouped logically. 

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, Times, 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. These can be displayed in text-based options like Radio Buttons or Checklist Items, or you can use Visual Picker to provide an icon-based selection method.

Creating Elements in the Flow Canvas

Regardless of the type of Flow you choose to create, you’ll notice a plus button underneath the Start Element (we’ll assume that you’re using Auto-Layout instead of Free Form going forward, as this is the more common and easier way to begin working with Flow).

This is where you can create new 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. For example, in the screenshot below, you’ll see I can add a series of orange Logic elements and some dark blue Interaction elements, but I can’t add a Screen. This is because the Flow I am working with is an Autolaunched Flow and Screens, for example, are not a supported Element for this Flow Type. 

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, Transforms, Filters, Sorts, 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.
  • Transforms empower you to map data from one or more variables (an individual one or a collection) to a new variable (again, one or multiple). Transform outputs can be all the standard types (Record, Text, Number, etc.) or an Apex-defined variable.
  • Filters can help reduce the number of Get Records elements you need to use by gathering a larger collection of records and filtering them down into only those you need in specific circumstances. 
  • Sorts are similar to filters except that they let you sort your variables from top to bottom in a specific order without removing any records.
  • Loops allow you to handle multiple variables at once using collections.

Data elements include Create, Update, Get, or Delete records.

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’ (Fast Field Updates) Record-Triggered Flow, you’ll only be able to use ‘Get’ and ‘Update’, for example.

How Do You Call a Flow in Salesforce?

To ‘call’ a Flow means that something happens to trigger the Flow to run. This could be a Salesforce record change, triggered by another process in Apex, called as a Subflow from another Flow, 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.

There are a growing number of Flow Types (which you can read more about here), but the key ones you’re likely to encounter are below:

  • A Screen Flow is called through a button or action, or embedded 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 on 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 or another Flow. They can be used to perform actions automatically behind the scenes. Examples of these are Flows that contain a series of actions that will be performed across multiple Flows, or Flows that can be called from a Screen Flow’s Action Buttons or Screen Actions.
  • Record-Triggered Flows begin when a record is created, updated, or deleted, very similar to an Apex Trigger (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’?

By this point, I’m sure you’re as convinced of Salesforce Flow’s power and flexibility as I am. It becomes tempting to want to use it for ALL automation on the Salesforce platform. I want to caution you here, though. Flow isn’t the only tool Salesforce is working on, and for good reason. 

If we think about the simple use case of creating a form for users to fill in that streamlines the creation of a record, this is definitely something Flow can do… but should it always? Salesforce has another tool that may be better suited for this, depending on the scenario: Quick Actions. 

Another slightly more complex scenario you may be faced with is an integration with an external tool. Yes, Flow supports the ability to post HTTP Callouts and be triggered on Platform Events, but this may not be the best approach. Apex exists for a reason, and can handle the more complex processing requirements for your org. 

With that said, 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

There you have it! You’re now well-versed in the fundamentals of Salesforce Flow, its features, how it can be called, and when it is a good time to use it. 

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.

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.

The Author

Tim Combridge

Tim is a Technical Content Writer at Salesforce Ben.

Leave a Reply

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!