Jan 13

Understanding Flow Elements

Contents

  • What are Flow Elements
  • Interaction Elements
  • Logic Elements 
  • Data Elements
  • Choosing the Right Elements
  • Best Practices
  • Key Takeaways

Introduction

So you've chosen the right Flow type. You know whether you need a Screen Flow or a Record-Triggered Flow. You understand Before-Save versus After-Save. That's great - you've laid the foundation.

But here's where many Salesforce Admins get stuck: "Now what? How do I get my Flow to do what I want it to?"

That's where Flow Elements come in.

In my years teaching Flow to thousands of Salesforce Professionals, I've noticed a pattern. People grasp Flow types fairly quickly, but element selection? That's where the real confusion starts. Should I use a Assignment or an Update Records? When do I need Get Records versus just using the triggering record? Why is my Flow hitting governor limits when it worked fine in testing?

These questions all come down to understanding Flow Elements - the individual actions and operations that make up your automation.

In this guide, we're breaking down all Flow Elements across three main categories. I'll explain what each element does, how it works, why you'd use it, and give you a real-world example for each one. By the end, you'll know exactly which element to reach for in any situation.

If you want to master Flow with hands-on practice and advanced techniques, check out the Salesforce Flow Masterclass. For now, let's build your foundational understanding of Flow Elements.

What Are Flow Elements

Flow Elements are the individual actions and operations that make up your Flow. If Flow Types determine when your Flow runs, Flow Elements determine what your Flow actually does.

I want to take you back to our coffee shop analogy. The Flow Type is how the order is received (in person, over the phone, via JustEats etc.) and the process starts. Flow Elements are the individual steps the barista takes - grind the beans, heat the water, steam the milk, and pour into the cup. Each step is a separate action with a specific purpose.

The Flow Builder Toolbox

When you're building a Flow, elements can live in two places depending on the layout style you are using - if you are using “freeform” you’ll find them in the toolbox on the left side of Flow Builder. If you are using “auto-layout” you will need to select the “+” icon on the connector on the Flow Builder Canvas. When you do you'll see elements organized into categories:

  • Interaction - Elements that interact with users or external systems.
  • Logic - Elements that control Flow behavior and manipulate data.
  • Data - Elements that interact with the Salesforce database.

To add an element to your Flow, click the + icon on the canvas or drag an element from the toolbox. Elements appear as cards on the canvas, connected by arrows that show the Flow's execution path.
Write your awesome label here.

How Elements Work Together

Elements execute sequentially - following the connectors you create. Each element has a specific job:

  • Some elements retrieve data (Get Records)
  • Some elements make decisions (Decision)
  • Some elements modify data (Assignment)
  • Some elements save changes to the database (Create Records, Update Records)
  • Some elements interact with users (Screen)


The power of Flow comes from combining these elements in the right sequence to solve business problems. A simple Flow might have 3-4 elements. Complex Flows might have 20-30. But regardless of complexity, each element is doing one specific thing.

Why Flow Elements Matter

Understanding Flow Elements is where theory meets practice. You can know every Flow type by heart, but if you don't know which elements to use, you can't build working automation.

Elements = Your Flow's Capabilities

Without elements, Flow types are just empty containers. A Record-Triggered Flow doesn't do anything until you add elements that define what happens when a record changes. A Screen Flow can't collect information until you add Screen elements.

Elements are where automation actually happens. They're your toolkit.

Choosing the Right Element

I see this mistake constantly: Administrators use the wrong element for the task. They use an Update Record when they need an Assignment. They put Update Records inside a Loop (huge performance problem). They use multiple Get Records when one would do.

Using the wrong element doesn't always break your Flow immediately. Sometimes it works fine with one record but fails spectacularly when processing 200 records or more at once. Other times, it just makes your Flow slower and harder to maintain than it needs to be.

The good news? Once you understand what each element does, choosing the right one becomes easy

Element Selection Framework

When building a Flow, ask yourself: "What am I trying to accomplish right now?"

  • Need to retrieve records from the database? → Get Records
  • Need to make a decision based on criteria? → Decision
  • Need to store or change a value? → Assignment
  • Need to create new records? → Create Records
  • Need to show something to a user? → Screen

Match your action to the element's capability. That's the core skill of Flow building.
Write your awesome label here.

Interaction Elements

Interaction Elements handle communication - with users, with external systems, and with other Flows. When you need something to happen outside your Flow's internal logic, you'll use an element from this category.

There are four Interaction Elements: Screen, Action, Subflow, and Custom Error.

Screen Element

What it does: The Screen element displays forms to users, collects their input, and stores that input in variables. It's the only element that pauses Flow execution and waits for user interaction.
How it works: When the Flow reaches a Screen element, it displays the configured screen to the user. The user fills out fields, makes selections, or clicks buttons. Once they click Next (or a custom button), the Flow captures their input and continues execution.
Why use it: Screen elements give you complete control over user experience. Instead of overwhelming users with 50 fields on a record page, you can guide them through a logical sequence, show only relevant options based on their choices, and prevent errors before they happen.
You'll use Screen elements when:
  • Building guided wizards or multi-step forms.
  • Collecting information that doesn't fit standard layouts.
  • Creating custom tools for users.
  • Showing conditional fields based on previous answers.
Example: Building an employee equipment request Flow. The first screen asks for department and role. Based on their department, the second screen shows only relevant equipment options. The third screen confirms their selections and submits the request. This guided experience is much clearer than a generic request form with every possible equipment option listed.
Important consideration: Every Screen element creates a new transaction, which resets certain governor limits. This can be useful for complex processes but also means data from before the screen might not be available after unless stored in variables.

Action Element

What it does: The Action element performs specific operations without requiring code. Actions can send emails, post to Chatter, call Apex methods, integrate with external systems, and much more.
How it works: Actions are pre-built operations available in Flow Builder. Some are standard Salesforce actions (Send Email, Post to Chatter, Submit for Approval). Others are custom actions created by administrators or developers. You configure the action by providing input values, and optionally store output values in variables.
Why use it: Actions extend Flow's capabilities beyond basic operations. Need to send an email? There's an action for that. Need to call custom Apex logic? Use an Invocable Action. Need to send Record for Approval? Use the Submit for Approval Action.
You'll use Action elements when:
  • Sending communications (email, Chatter, notifications).
  • Submitting records for approval.
  • Calling custom Apex methods.
  • Integrating with external systems.
  • Performing operations beyond standard Flow capabilities.
Example: When an Opportunity is Closed Won, use the Send Email action to notify the delivery team. Configure the action with the delivery manager's email, a subject line that includes the Opportunity name, and a body that provides contract details and next steps. The Action element handles all the email complexity - you just provide the data.
Important consideration: Actions have their own governor limits separate from Flow limits.

Subflow Element

What it does: The Subflow element calls another Flow from within your current Flow, creating modular, reusable automation.
How it works: You select an Autolaunched Flow to call, map input variables from your parent Flow to the child Flow's input variables, and optionally receive output variables back. The child Flow executes completely, then returns control to the parent Flow.
Why use it: Subflows prevent code duplication and make maintenance easier. Instead of copy-pasting the same logic across multiple Flows, you build it once as an Autolaunched Flow and call it wherever needed. When requirements change, you update one Flow instead of fifteen.
Example: You have address validation logic that standardizes addresses to a specific format. Rather than rebuilding this logic in every Flow that handles addresses (Lead creation, Contact updates, Account changes), you create one Autolaunched Flow called "Validate Address" and call it with a Subflow element wherever you need address validation.
Important consideration: You cannot call Subflows from Before-Save Record-Triggered Flows. Subflows also count toward your Flow interview limits - each Subflow call creates a new Flow interview.

Custom Error Element

What it does: The Custom Error element displays user-friendly error messages and rolls back the triggering transaction in Record-Triggered Flows.
How it works: When your Flow encounters an error condition, instead of showing a generic system error, you display a Custom Error element with your own message. The error appears either as a popup window on the record page or inline on a specific field. The transaction automatically rolls back, preventing partial saves.
Why use it: Generic Salesforce error messages confuse users. Custom Error elements let you explain what went wrong and what the user should do about it in plain language.
Example: Your Record-Triggered Flow on Opportunity requires an Account to be selected before saving. If someone tries to save an Opportunity without an Account, instead of letting it save and causing problems later, show a Custom Error: "Please select an Account before saving this Opportunity." The save is prevented, and the user knows exactly what to fix.
Important consideration: Custom Error elements are only available in Record-Triggered Flows. For Screen Flows, use validation rules on Screen components instead.
Write your awesome label here.

Logic Elements

Logic Elements control your Flow's behavior and manipulate data. This is the category you'll use most frequently - decisions, loops, assignments, and data transformations all live here.

Assignment Element

What it does: The Assignment element sets or changes variable values. It's your primary tool for storing and manipulating data as your Flow executes.
How it works: You select a variable and use an operator (Equals, Add, Subtract, Add at Start) to set or modify its value. You can perform multiple assignments in a single Assignment element, and they execute in the order listed.
Why use it: Variables don't update themselves - you use Assignment elements to store values, build collections, perform calculations, and prepare data for later use in your Flow.
You'll use Assignment elements when:
  • Storing values for Records.
  • Building collections of records to process.
  • Performing calculations.
  • Updating counter variables.
  • Preparing data for Create/Update Records.
Example: In a Before-Save Record-Triggered Flow on Lead, you need to set the Rating field based on Annual Revenue. Use a Decision element to check if Annual Revenue is greater than 1,000,000. If yes, use an Assignment element to set Rating = "Hot". If no, use Assignment to set Rating = "Warm". The Assignment element updates the field value before the record saves to the database.

Decision Element

What it does: The Decision element creates branching paths in your Flow based on conditions. Think of it as an "if-then-else" statement.
How it works: You define outcomes, each with their own conditions. The Decision element evaluates these conditions in order and follows the first matching outcome. If no conditions match, it follows the default outcome. Each outcome has its own connector, letting you build different logic paths.
Why use it: Not all records need the same treatment. High-value Opportunities might need different handling than small deals. Decision elements let you build conditional logic without code.
You'll use Decision elements when:
  • Different actions are needed based on field values.
  • Checking if records exist (after Get Records).
  • Validating data meets criteria.
  • Routing to different automation paths.
  • Implementing business rules.
Example: When an Opportunity closes, you need to assign it to the right delivery team. Use a Decision element to check the Opportunity Amount. If Amount is greater than $100,000, route to the Enterprise Delivery path (which creates high-touch onboarding tasks). If Amount is less than $100,000, route to the Standard Delivery path (which creates self-service onboarding tasks). The Decision element makes this routing automatic based on your criteria.
Important consideration: Decision outcomes are evaluated in order from top to bottom. The first matching outcome wins. Order your outcomes carefully - put specific conditions before general ones.

Loop Element

What it does: The Loop element iterates through each item in a collection, executing the elements inside the loop for every item.
How it works: You provide a collection variable as input. Flow automatically creates a loop variable that represents the current item. The loop executes the elements inside it for the first item, then loops back and executes for the second item, continuing until all items are processed. Then the Flow continues on the "After Last" connector.
Why use it: When you need to process multiple records individually - checking each one, transforming data, or building filtered collections - loops let you work with each record one at a time.
You'll use Loop elements when:
  • Processing each record in a collection individually.
  • Applying conditional logic to each item.
  • Building filtered or transformed collections.
  • Counting records that meet criteria.
Example: You have all Contacts on an Account and need to separate them into two collections - one for Contacts who should receive marketing emails (EmailOptIn = True) and another for those who shouldn't. Loop through all Contacts. For each Contact, use a Decision to check EmailOptIn. If True, use Assignment to add that Contact to the OptedInContacts collection. If False, use Assignment to add to the OptedOutContacts collection. After the Loop, you have two separate collections you can process differently. This conditional separation based on individual record evaluation is what Loops do best.
Important Note: Never, ever put Create Records, Update Records, or Delete Records elements inside loops. This causes governor limit failures. Instead, use Assignment inside the loop to build a collection, then use one Data element after the loop to process all records at once.

Transform Element

What it does: The Transform element maps and converts data from one structure to another without using loops and assignments. 
How it works: You provide source data (records, collections, or individual values) and define the target structure. Then you map fields from source to target using the Mapping Canvas - a visual interface where you click on source fields and drag them to target fields. This drag-and-drop approach makes it easy to see which fields map where at a glance. Transform handles the iteration automatically - no loops needed.
Why use it: Transform is significantly faster than looping through records and using assignments. It's also cleaner and easier to maintain. When you need to convert data from one object to another, or restructure data in collections, Transform is your tool.
You'll use Transform when:
  • Converting records from one object to another.
  • Mapping fields between objects.
  • Creating new collections from existing ones.
  • Cloning records with modifications.
Example: Imagine you have a collection of Leads and you want to create a Task for each one. Instead of using a loop to process them one by one, you use the Transform element's Mapping Canvas to map Lead.Id → Task.WhoId and Lead.Company → Task.Subject. The Transform element acts like a "data mold," instantly stamping out a brand-new collection of Tasks based on your Lead info, without you ever having to build a manual loop or assignment.
Important consideration: Transform creates new records or collections - it doesn't modify the source data. Store the Transform output in a new variable.

Collection Sort Element

What it does: The Collection Sort element orders records in a collection by a specified field and optionally limits how many records to keep.
How it works: Select the collection to sort, choose the field to sort by, set the sort order (ascending or descending), and optionally specify how many records to keep. The element sorts the collection in place - the original collection is modified.
Why use it: When you need records in a specific order or just the top N results, Collection Sort is cleaner than complex SOQL queries.
Example: You've retrieved all Opportunities for an Account. You want to show only the top 5 by Amount in a report. Use Collection Sort to sort by Amount descending, limit to 5 records. Now your collection contains only the five highest-value Opportunities, ready to display or process.
Write your awesome label here.

Collection Filter Element

What it does: The Collection Filter element creates a new collection containing only records that meet specified criteria.
How it works: Provide a source collection and define filter conditions (field, operator, value). The element creates a new filtered collection while leaving the original collection unchanged.
Why use it: When you've already retrieved records but need to narrow them down based on criteria, Collection Filter is more efficient than running another Get Records query.
Example: You've retrieved all Contacts on an Account. You need to process only Contacts who have opted in to email marketing. Use Collection Filter with condition EmailOptIn equals True. This creates a new collection containing only opted-in Contacts, which you can then process separately while preserving the original collection if needed elsewhere in the Flow.
Important consideration: Collection Filter creates a new collection - the original remains unchanged. This is different from Collection Sort, which modifies the original collection.

Wait Element

What it does: The Wait element pauses Flow execution until specified conditions are met or a specified time passes.
How it works: The Flow creates a paused interview. When the wait condition is satisfied (time passes, record meets criteria, or platform event received), the Flow resumes from where it paused. 
Why use it: Some automation needs to happen later, not immediately. Checking if issues are resolved, or waiting for external systems to respond require Wait elements.
Example: Your Flow creates an Order in Salesforce and sends it to an external warehouse system for fulfillment. The warehouse system publishes a platform event when the order is confirmed. Use a Wait element configured to wait for that platform event. When the warehouse confirms the order, the platform event fires, the Wait element completes, and your Flow continues - perhaps sending a confirmation email to the customer or updating the Order status to "Confirmed."
Important consideration: Wait elements are only available in Autolaunched Flows and Schedule-Triggered Flows. If you need time-based delays in Record-Triggered Flows, use Scheduled Paths instead. Scheduled Paths let you define actions that execute at a specific time after the record is saved (like "3 days after Case creation, send follow-up email"). While Wait elements pause the same Flow interview, Scheduled Paths create a separate asynchronous path that runs independently.
Write your awesome label here.

Data Elements

Data Elements are how your Flow interacts with the Salesforce database. These elements perform CRUD operations - Create, Read, Update, and Delete. They're the most powerful elements in Flow because they actually change your data.

There are five Data Elements: Get Records, Create Records, Update Records, Delete Records, and Roll Back Records.

Get Records Element

What it does: The Get Records element retrieves records from the Salesforce database using criteria you define. It's like running a SOQL query without writing code.
How it works: Select the object to query, define filter conditions (field, operator, value), choose which fields to retrieve, and specify whether you want one record or all matching records. The results are stored in a variable.
Why use it: Most Flows need data from somewhere other than just the triggering record. Get Records lets you query related records, check if records exist, retrieve reference data, or find records meeting specific criteria.
You'll use Get Records when:
  • Retrieving related records (Contacts on an Account).
  • Checking if a record exists before creating it.
  • Getting reference data (price lists, configuration settings).
  • Finding records that meet specific criteria.
  • Looking up information from another object.
Example: When a high-value Opportunity closes, you want to email all Contacts on the Account. Use Get Records to retrieve all Contacts where AccountId equals the Opportunity's AccountId. Store the results in a collection variable. Now you have all the Account's Contacts available to loop through or process.
Critical tip: Always handle the "no records found" scenario. After Get Records, use a Decision element to check if your variable is null. If no records are found and you try to use that variable, your Flow will error.
Important consideration: Get Records uses SOQL queries, and you have a limit of 100 SOQL queries per transaction. Plan your queries carefully.

Create Records Element

What it does: The Create Records element creates new records in Salesforce.
How it works: You can create records in a few ways: (1) Create a single record by setting field values manually or through a record variable, or (2) Create multiple records from a collection variable. After creation, you can optionally store the new record IDs in a variable.
Why use it: When your Flow needs to generate new records - related records, child records, or entirely new data - Create Records makes it happen.
You'll use Create Records when:
Creating related records (Tasks after Opportunity closes).
Generating child records automatically.
Creating records based on templates.
Inserting data from external systems.
Example: When an Opportunity reaches Closed Won, automatically create a Contract. Use Create Records with Object = Contract, set AccountId from the Opportunity's Account, set Status = "Draft", set StartDate = today. A new Contract is created automatically without anyone having to remember to do it manually.
Bulkification tip: When creating multiple records, always use a collection variable. Build the collection with Assignment elements (typically inside a loop), then use one Create Records element (outside the loop) to insert all records at once. This is dramatically more efficient than multiple Create Records calls.
Important consideration: Create Records counts as a DML statement, and you're limited to 150 DML statements per transaction. Creating 10 records from a collection counts as ONE DML statement. Creating 10 records with 10 separate Create Records calls counts as TEN DML statements.

Update Records Element

What it does: The Update Records element modifies existing records in Salesforce.
How it works: You have two modes: (1) Use record variables - the Flow finds records by their ID and updates them, or (2) Use conditions - the Flow finds all records matching your criteria and updates them. Set the field values you want to change.
Why use it: When data changes, related records often need to change too. When business rules require updates across multiple records, Update Records handles it automatically.
You'll use Update Records when:
  • Updating related records based on changes.
  • Mass updating records meeting criteria.
  • Keeping data in sync across objects.
  • Applying business rules through automation.
Example: When an Account's BillingAddress changes, you want all related Contacts' MailingAddresses to match. Get Records retrieves all Contacts where AccountId equals the Account's ID. Loop through the Contacts, use Assignment to update each Contact's MailingStreet, MailingCity, etc., and add to a collection. After the loop, use Update Records with that collection to save all changes at once.
Important Consideration: When using the "specify conditions" mode, Update Records affects ALL records matching your conditions. If your conditions aren't specific enough, you might accidentally update hundreds of records. Test thoroughly in a sandbox first. Like Create Records, Update Records counts as one DML statement when updating a collection but multiple DML statements when called multiple times. Always use collections.

Delete Records Element

What it does: The Delete Records element removes records from Salesforce. Deleted records move to the Recycle Bin, where they can be recovered within 15 days.
How it works: Similar to Update Records, you can delete in two ways: (1) Delete records in a variable (by ID), or (2) Delete all records matching specific conditions.
Why use it: Data cleanup, removing duplicates, cascading deletions, and maintaining data hygiene all require Delete Records.
Example: Every quarter, you want to remove Tasks older than two years to keep the database clean. A Schedule-Triggered Flow runs quarterly with Delete Records using conditions: Object = Task, CompletedDate is less than TODAY() - 730 days. Old completed Tasks are deleted automatically.
Safety note: Be extremely careful with Delete Records, especially in condition mode. Test thoroughly in a sandbox. Make your conditions very specific. Remember that deleted records go to the Recycle Bin for 15 days - they're recoverable if you make a mistake, but only for a limited time.
Important consideration: Deleting records can trigger other automation (other Flows, triggers). Make sure you understand the cascade effects of deletions in your org.

Roll Back Records Element

What it does: The Roll Back Records element reverses all database changes made in the current transaction. It's only available in Screen Flows.
How it works: Place Roll Back Records in a fault path. If an error occurs, instead of saving the partial changes, Roll Back Records undoes everything and returns the database to its pre-Flow state.
Why use it: Transaction integrity. If a multi-step process fails halfway through, you don't want partial data saved. Roll Back ensures it's all or nothing.
Example: Your Screen Flow creates a new Customer record, then tries to create a related Subscription record. If the Subscription creation fails (perhaps due to a validation rule or required field error), you don't want the Customer record left in the system without a Subscription. Add a fault path to the Create Records element that creates Subscriptions. In that fault path, place a Roll Back Records element. If Subscription creation fails, Roll Back Records reverses the Customer creation, maintaining data integrity. Then show an error screen explaining what went wrong.
Important tip: Place Roll Back Records BEFORE displaying an error screen. If you show the error screen first, the user might close the window before seeing your message, and the rollback might not execute.
Important consideration: Roll Back Records only works in Screen Flows and only for changes made in the current transaction. It doesn't roll back changes from previous transactions.
Write your awesome label here.

Common Scenarios with Element Solutions

Scenario 1: Update a field on the triggering record in a Before-Save Record-Triggered Flow
Elements needed: Assignment (no Update Records needed - Before-Save automatically saves Assignment changes)

Scenario 2: Create a Task for each Contact on an Account
Elements needed: Get Records (retrieve Contacts) → Loop (process each) → Assignment (build Task collection) → Create Records (insert all Tasks)

Scenario 3: Different actions based on Opportunity Amount
Elements needed: Decision (check Amount) → multiple outcome paths with different Actions/elements

Scenario 4: Send email if Case not resolved in 24 hours
Elements needed: Wait (24 hours) → Decision (check if still open) → Action (Send Email)

Scenario 5: You have a collection of Opportunities and need to create a Task for the owner of each one to follow up
Elements needed: Get Records (retrieve Opportunities) → Transform (create Task collection from Opportunity data, mapping fields like OwnerId and related information) → Create Records (insert all Tasks)

Best Practices for Using Elements

Understanding what elements do is step one. Using them correctly is step two. Here are the critical best practices that separate working Flows from great Flows.

Bulkification: The Most Critical Concept

The Golden Rule: Never put Data Elements (Create Records, Update Records, Delete Records) inside Loop elements.
Why it matters: Salesforce processes multiple records simultaneously. If your Flow has a DML element inside a loop and processes 200 records, that's 200 DML statements in one transaction. You'll hit the DML statement limit and the Flow will fail.
The correct pattern:
Get Records (retrieve collection).
Loop through collection.
Inside loop: Use Assignment to build a new collection.
After loop: Use single Data Element to process entire collection.
This processes 200 records with ONE DML statement instead of 200.

Performance Optimization

Get Records sparingly: You have 100 SOQL queries per transaction. Each Get Records element uses one. Plan your queries carefully. Can you get related data through relationships instead of separate queries?

Transform over Loop + Assignment: When mapping data between objects, Transform is significantly faster than looping and assigning each field. Use it when possible.

Collection Filter over Get Records: If you've already retrieved records but need to narrow them down, use Collection Filter instead of running another Get Records query. It's more efficient.

Avoid unnecessary queries: Before using Get Records, check if the data you need is already available through relationships on records you already have.

Element Sequencing

Get all data first: Run all your Get Records elements at the beginning of your Flow. Having all the data upfront makes the rest of your logic simpler.

Make decisions before expensive operations: Use Decision elements early to avoid unnecessary processing. Why create 50 records if a Decision would have told you not to?

Handle errors: Place fault paths and error handling at the end of your Flow logic. Process the happy path first, handle problems second.

Error Handling

Add fault paths to Data Elements: Get Records, Create Records, Update Records, Delete Records, and Action elements all support fault paths. Add them. When (not if) something goes wrong, you want to handle it gracefully instead of showing users a cryptic system error.

Use Custom Error for user-friendly messages: In Record-Triggered Flows, replace generic errors with Custom Error elements that explain what went wrong in plain language.

Test with bad data: Don't just test your Flow with perfect data. Test with missing required fields, invalid values, and edge cases. Your fault paths need to handle real-world messiness.

Naming Conventions

Name elements with action verbs: "Get Open Cases" not "Get Records 1". "Create Task for Manager" not "Create Records 2". "Decision - Is Enterprise Account?" not "Decision".

Be specific: Future you will thank present you for clear, descriptive names. So will other admins who need to understand your Flow.

Use consistent formatting
: Pick a naming convention and stick to it. This makes Flows scannable and professional.

Ready to Build Flows with These Elements?

Understanding what elements do is one thing. Knowing which element to use, how to configure it correctly, and how to combine elements effectively is another.

In the Salesforce Flow Masterclass, you'll build real Flows using all these elements in practical scenarios. I'll show you:
  • How to combine elements to solve complex business problems.
  • Bulkification patterns that prevent governor limit failures.
  • Element configuration best practices (the settings that matter).
  • Common element mistakes and how to avoid them (I've made them all).
  • Real-world builds using Get Records, Loops, Decisions, and more.
  • Debugging techniques when elements don't behave as expected.

Enroll in the Flow Masterclass → Enroll Now

Stop guessing which element to use. Build Flows that work.

Summary: Key Takeaways

  • Flow Elements are the actions your Flow takes - without elements, Flows don't do anything
  • Three main element categories organize elements by function: Interaction (user/external), Logic (control flow/data manipulation), Data (database operations).
  • Interaction Elements (Screen, Action, Subflow, Custom Error) handle user input and external operations.
  • Logic Elements (Assignment, Decision, Loop, Wait, Transform, Collection Sort, Collection Filter) control Flow behavior and manipulate data.
  • Data Elements (Get/Create/Update/Delete/Roll Back Records) interact with the Salesforce database..
  • Choose elements based on your task: user input = Screen, branching logic = Decision, database query = Get Records, creating records = Create Records.
  • Bulkification is critical: Never put Data Elements inside Loops - build collections with Assignment, process after the Loop.
  • Transform Element is your friend for data mapping and transformation - it's faster and cleaner than loops.
  • Add fault paths to Data Elements to handle errors gracefully instead of showing cryptic system messages
  • Element sequencing matters: Get data first, make decisions second, perform expensive operations last.
  • Name elements descriptively: "Get Open Cases" and "Decision - Is Enterprise Account" are better than "Get Records 1" and "Decision 2".
Next in the series: You know which Flow type to use and what elements can do. But where do you store the data your Flow uses while it runs? Next up: Understanding Flow Resources - Variables, Collections, Constants, Formulas, and more.