Admins / Developers / Flow

How to Create a Salesforce Screen Flow

By Andreea Doroftei

Salesforce Flow – now the hottest out-of-the-box tool available – caters to anyone administering a Salesforce instance, from complete beginners to experienced architects, allowing them to automate processes within their org. 

There are multiple types of flow, and the sky’s the limit when it comes to choosing how simple or complex they can be. We will begin with Flow basics before focusing specifically on how you can get started using Salesforce Screen Flows. 

What Is a Flow in Salesforce?

Before jumping into Screen Flows, let’s talk about Salesforce Flow in general. Simply put, flows are the new best friend you didn’t know you needed. Since Salesforce announced that Workflow and Process Builder are being retired in favor of Flow, the demand (as well as curiosity) around this functionality has seen a drastic increase in the ecosystem. 

Salesforce Flow is an automation tool that can support most required business processes. It offers far greater capabilities and improved performance when compared to WorkFlow Rules or Process Builder. For example, flows can run before save (similar to Apex), which improves performance. There are several types of Flow, which you can see highlighted below. 

Salesforce has done a great job of including a short explanation for each type (directly in the Flow Builder) to help you make the right choice for your requirement. 

You can also find more information about each type in the official documentation.

While you can opt to start from scratch every time you are creating a flow, within the settings of each flow, existing ones can be marked as templates for you to reuse. Salesforce provides a variety of out-of-the-box templates for standard processes such as user provisioning, and there are also many more free templates you could try out from the AppExchange

What Is a Salesforce Screen Flow? 

Screen Flows guide users through a business process, providing instructions or call scripts, prompting users to complete certain fields, and performing actions behind the scenes such as Record Create or Record Update. 

Your users will move through a series of screens that you have created – all without you having to write a single line of code. 

When I first heard about Salesforce Screen Flows a few years ago, the functionality seemed very interesting; it looked as though it could open up a new realm of possibility. However, I never expected it to be so user-friendly, especially when creating from scratch without being an experienced developer. Salesforce proved me wrong! 

While Salesforce Flows are easier to get started with than Apex, this doesn’t mean that you should forget about best practices and potential implications of introducing a new automation that will alter your Salesforce data.

 Before creating a new Flow, you should consider if an existing one shouldn’t be modified instead, if another functionality could be used, and how it will behave alongside the other automations in your org it you decide to proceed with a new flow.

Layout and Features

The key element that differentiates this type of flow from all others is the Screen Element. This is what we will configure and what users will see when the flow is exposed to them.

As previously mentioned, a single Salesforce Screen Flow can have multiple screens. These displayed screens will sit on your Flow canvas alongside your other elements. You can find out more about each flow element here

On the Screen Flow, the components panel on the left represents the items available to be added within the screen element itself – these can be either input elements or display elements. This is where you will find both standard components, such as picklist and text, as well as custom components that have either been developed internally or come from managed packages. 

The screen properties on the right-hand side allow you to control the Header and Footer of each individual screen. For example, you can choose if you’d like to rename the buttons that users will click on, as well as use the new screen actions functionality if needed. 

Here are just a few examples of commonly used out-of-the-box screen components:

  • Email: This component is very handy when an email address is needed from the user running the Screen Flow. You can determine if it will be required or not, and similar to other components, you can control the visibility and validate the input users add –  for example, maybe your organization doesn’t want gmail.com emails to be added. 
  • File Upload: Exactly as the name says, this will allow your users to upload files into Salesforce directly through the Screen Flow. This is especially handy as users won’t have to navigate to other pages to add files. 
  • Toggle: A personal favorite of mine, this component is fun for the user experience within a Screen Flow as it can replace a checkbox or a yes/no picklist. 
  • Datatable: This component uses a collection variable as the source and allows users to select one or more records from a list or just view them if needed. While setting it up, you can control whether you allow searching or not, determine the columns, and even set a custom label for each column in case it needs to be different than the field name. 
  • Display Text: Perhaps the most versatile and used of the components, which allows you to display instructions, success messages, and custom error messages to your users. Within this component, you can use flow resources combined with static text and even images or hyperlinks. 

We will not be using the Fields section during this post. However, you should definitely explore this further, as it allows you to add on the screen fields directly from a record variable within the flow. This saves quite a bit of time, especially if you are adding multiple fields from the same record. 

Note that on the same screen, you can add both record fields as well as other components. You can find more information about this feature here.

Where Can a Screen Flow Be Used? 

I’d say almost everywhere! If the process can be broken down into steps that require user input (or acknowledgment), and it should be displayed for users based on record criteria or on previous choices in the flow, then a Screen Flow is appropriate. 

A Salesforce Screen Flow can be beneficial to many different types of users and teams. There are plenty of use cases for Screen Flows that can be accessed in different ways in Salesforce, including Lightning Record Pages, custom actions and buttons, Digital Experiences, or even within the utility bar

One of the most common examples is using a Screen Flow to collect data in order to create a record – which is what we will be creating next.  

How to Create a Salesforce Screen Flow

Now that we have covered the basics of a Screen Flow, it’s time to get hands-on! We’ll go through a step-by-step tutorial on how to create a Screen Flow, how to expose it to your users, and, of course, how to make sure your flow works as expected.

Create the Flow 

For this example, I chose to create a flow that will allow users to create a Contact. Keep in mind that while I have only used a few fields, multiple fields, and screens can be added to support your use case. Don’t forget to account for any existing validation rules!

49 STEPS

1. After navigating to the Automation app and clicking new, the New Automation screen will come up. The first step is to choose the Screen category.

Step 1 image

2. Select Screen Flow as the type.

Step 2 image

3. Click the “+” to add a new Element.

Step 3 image

4. Click Screen.

Step 4 image

5. Add a Label for your element. This will automatically complete the API Name. You can optionally enter a Description too.

Step 5 image

6. Click the arrow next to Configure Footer.

Step 6 image

7. For the Next or Finish Button, choose “Use a custom label“.

Step 7 image

8. Enter “Create Contact” as the new label.

Step 8 image

9. In the left panel, search for “lookup“.

Step 9 image

10. Drag and drop the Lookup component.

Step 10 image

10b. Drop

Step 10b image

11. Type Account for the API Name.

Step 11 image

12. Type AccountId for the Field API Name. This is the API name of the Account field from the Contact object.

Step 12 image

13. Type “Choose Account” for the Label.

Step 13 image

14. Type Contact for the Object API Name.

Step 14 image

15. Scroll down and click Required.

Step 15 image

16. Choose $GlobalConstant.True.

Step 16 image

17. In the Search on the left side panel, type “Name“.

Step 17 image

18. Drag and drop the Name component under the Choose Account field.

Step 18 image

18b. Drop

Step 18b image

19. Type an API Name for the component.

Step 19 image

20. Type Contact Name for the Label.

Step 20 image

21. Search for Email in the list of components.

Step 21 image

22. Drag and drop the Email component under the Contact Name.

Step 22 image

22b. Drop

Step 22b image

23. Input an API Name for the component.

Step 23 image

24. For the Required attribute, set the value to $GlobalConstant.True.

Step 24 image

25. Click Done.

Step 25 image

26. Click the “+” to add another Element.

Step 26 image

27. Click Create Records.

Step 27 image

28. Type “Create Contact” for the component label. The API Name will be automatically filled and you can opt to add a Description too.

Step 28 image

29. Click How to set record field values and choose Manually.

Step 29 image

30. Select Contact as the object.

Step 30 image

31. Since Last Name is a mandatory field on the Contact, it will appear as a field value to map.

Step 31 image

32. Map Last Name to the Last Name from the Contact Name component on the New Contact screen.

Step 32 image

33. Click Add Field.

Step 33 image

34. Click Search fields…

Step 34 image

35. Choose First Name then map it to the First Name value from the Contact Name component. Repeat this step for all the other fields from the New Contact screen.

Step 35 image

36. Review the fields you mapped, and once done click on the “+” to add one more Element.

Step 36 image

37. Type Success as the Label. The API Name will be automatically completed.

Step 37 image

38. Search for “Display” within the list of components.

Step 38 image

39. Drag and drop the Display Text component.

Step 39 image

39b. Drop

Step 39b image

40. Type SuccessMessage for the API Name.

Step 40 image

41. Enter the message you would like your users to seem including any Flow resources if needed.

Step 41 image

42. Once the message is written, it can be formatted. Select the text and click the “center align text” button.

Step 42 image

43. Set the Font Size to 14.

Step 43 image

44. Once happy with the formatting, click Done.

Step 44 image

45. For now, this is the Screen Flow. Click Save so that you don’t lose what you did so far.

Step 45 image

46. Enter a descriptive Flow Label. The API Name will be automatically completed.

Step 46 image

47. Even if it’s optional, make sure to add a Description for the Flow, so that future you and your colleagues know what the flow is meant to do.

Step 47 image

48. Click Save.

Step 48 image

49. That’s it. You’re done.

Step 49 image

Here’s an interactive tutorial

** Best experienced in Full Screen (click the icon in the top right corner before you begin) **

https://www.iorad.com/player/2515541/How-to—Create-Screen-Flow-2025

Note: The Name component doesn’t have a “Required” attribute within the component itself as other components do. However, you can use the Validate Input option to require the First and Last Name in this example. With Spring ‘25, flow validations are now displayed in real time, rather than the users having to click the Next or Finish buttons to trigger them.  

Prepare for Potential Errors with Fault Paths

Sometimes, things do not go smoothly; changes will keep happening in your organization after this flow is created. For example, a new required field may be added in the future, which will make the Contact creation through this flow error out unless the new field is added, right?

While you can’t foresee the future, when building the flow, you can account for unexpected changes such as these or unexpected errors by adding a Fault Path to your Create Records component. 

This way, your users will be provided with clear instructions of what to do and with the error message from the $Flow.FaultMessage global variable if you choose to expose it to them. 

Test Your Screen Flow

Once the flow is ready and saved, it should be thoroughly tested before reaching your user base in production. The easiest way to test the Screen Flow is through the Debug button, or you could opt to use it in the interface in a Sandbox and see if it works as expected.

However, in order to use it in the interface, you will need to save and activate it, then create new versions if changes are needed. The debug option, on the other hand, allows you to just save, test, make changes, and then save again if needed. 

Considering the flow complexity, testing in a developer sandbox might be sufficient for a simple automation. But if a Flow has a broader impact, either on the existing implementation or on the user experience, testing should be completed A-Z, including the UAT – as well as any integration testing, if needed.

When clicking the Debug button – which appears within Flow Builder – the screen behavior will be the same as the interface (including the required fields, for example), but it will give exact information as far as the values for each component, as well as any errors if they occur and where. Once you’re happy that it works as intended, go back to Flow Builder and activate the flow! 

If any errors appear within the process when a record insert or update is done, you will receive an email with details to help you troubleshoot. The users will also see the actual error on screen, which is not the ideal experience. 

So make sure to consider this when building and adding a fault path with a nicer user-facing error message and screen, as well as accounting for any additional error logging mechanism you may be using in your org. 

Don’t forget that Trailhead is a great resource to learn, with modules, trails, and even Superbadges dedicated to Salesforce flow – there is a whole lot to choose from! Here are a few examples you should explore: 

Testing should be done for any Flow, automation, and functionality you add, not just for Screen Flows! 

Make the Flow Available in the Interface 

As mentioned above, the flow can be accessed in a few different ways – we will explore one of them, but feel free to try any other option that suits your use case best. Make sure that your flow is active before reaching this step. 

We will add the flow we just created to the Home Page within the Sales Lightning App. For the sales team in particular, it is important to make this process as seamless and accessible as possible (with the least number of clicks).

If this flow had been added on the Account Record Page instead of the Home Page, we would need the Account Id from the current record rather than allowing users to select any of them. Make sure that the record Id is passed onto the flow variable accordingly through the Lightning component checkbox. 

After the Home Page changes are saved, you can go ahead and use the flow directly from the page, just like your users will!

Take Einstein for Flow For a Spin

Once you’re comfortable with the elements and overall Screen Flows yourself, why not give Einstein for Flow a try? With generative AI functionality embedded in Salesforce to enhance the admin’s productivity, you could save some time and also explore how these can optimize your way of working within Salesforce. 

Einstein for Flow became generally available in the Spring ’25 release and can create simple draft flows from scratch based on detailed instructions you can input in natural language, be it Screen Flows, record-triggered ones, or scheduled ones, for example, which you can then continue expanding on. 

Additionally, you can leverage the summarization feature to automatically generate descriptions for new or existing Flows and even work with Einstein to build formulas for you within a flow formula resource. 

Keep in mind that the instructions should be as detailed as possible and include the names of objects, fields, or directly any referenced resource and its type when it comes to formulas. You can review the recommended best practices here

READ MORE: Einstein for Flow Now Generally Available: Tutorial and First Steps

Key Considerations

  • Salesforce Screen Flows always require some sort of user interaction. If you’d like a fully automated flow, consider one of the other flow types, such as “record-triggered” or “scheduled” flows.
  • There is no actual limit as to how many Screen Flows you can have, but keep in mind that having multiple components will increase the complexity or the time the user has to spend completing the flow. Instead of using multiple individual screens, you could take a look at the repeater component or simply use conditional visibility to add components that may not be needed all the time, and you can hide on fewer screens. 
  • Screen Flows can be accessed in many ways. They can be embedded into a Lightning Record Page, custom actions, custom Lightning Web components, Visualforce pages, and more. 
  • You can choose when and if a screen is actually displayed to the user running the flow by leveraging Decision Elements within the flow or conditional visibility on the Lightning Record Page to show or hide the entire flow. 

Summary

Now that you have built your first Salesforce Screen Flow and are familiar with Flow basics, it’s time to get hands-on and continue your journey. Be sure to keep practicing in a developer org and check out our other Flow articles to keep building your skills!

Here are a few suggestions to get you started:

Have you already created Screen Flows for your users? Let us know in the comments section below! 

The Author

Andreea Doroftei

Andreea is a Salesforce Technical Instructor at Salesforce Ben. She is an 18x certified Salesforce Professional with a passion for User Experience and Automation. 

Leave a Reply