Flow / Admins

Your Guide to Debugging Salesforce Flows

By Mariel Domingo

Updated June 02, 2026

A huge part of becoming comfortable with Flow is learning how to debug and test. Whether you’re building something simple like an automated email alert or even a more complex record-triggered flow that involves multiple objects, you’ll eventually encounter a situation where something doesn’t behave as expected.

The good news is that some of Salesforce’s latest releases have focused on Flow Builder’s debugging tool. With plenty of new features designed to help ensure your flow runs exactly as intended, let’s dive in.

What Debugging Is

I like to think of debugging as a bit of detective work. Even in the literal sense, the word itself gives it away: “de” meaning to remove and “bug” referring to an issue, right? Debugging, then, is about removing issues or figuring out why your flow isn’t behaving the way you expected.

When you’re working with complex flows, there can be so many elements, paths, decisions… that’s a lot of possible culprits! Maybe your condition logic isn’t being met, a variable didn’t store the right value, or a record update quietly failed – debugging gives you visibility into what’s actually happening “under the hood”, so it’s easier to trace where things might have gone off track.

Debugging in Flow Builder

Let’s say you’ve finished building your flow, as in every element and every fault path is all set. When you click Debug in Flow Builder, Salesforce opens the Debug Panel on the left and lets you simulate how your flow will run. 

Your flow on the canvas remains visible on the right side of the screen, so you can easily go through element configurations and figure out what changes may be needed. Clicking into an element opens up its configuration on the right side as usual, opposite the debug panel on the left.

The initial options available on the Debug Panel depend on the type of flow you’re working with. For instance, in a record-triggered flow, you can choose which record will trigger it. You’ll also see other options, such as whether to commit changes to the database, run the flow as another user, set input variables, or skip the start condition requirements.

Once you’ve completed the initial debug setup, click Run. This executes your flow based on the conditions you’ve defined. When it finishes, check your canvas to see which path the flow followed by tracing the bold line that appears.

The triggering record in this sample flow turned out to be a high-value claim. The bold line shows which path it took, making it easy to follow which decision outcomes were taken along the way.

On the panel is where you’ll find more information, like:

  • Whether or not the start conditions were met.
  • Which elements executed successfully.
  • Which decision outcomes were taken.
  • The values assigned to your variables.

These details are displayed in the order they occurred, so it’s easy for you to trace your flow’s exact sequence of events. If you find that the bold line on your canvas ends somewhere unexpected, check the panel for the finer details, as it’ll show you where things might have taken a wrong turn.

Each step in the flow run appears in its own box. To view more information about a specific step, click the arrow dropdown to expand it. Let’s take a look at how to read these details.

Parentheses

When a value appears in parentheses, it represents the value for that field. In the example below, “Status__c (Approved)” tells us that the triggering record’s status is Approved, while the start conditions require the record to have any of the following statuses: Approved, Incomplete, or Rejected.

From this, we can already infer that the record met the start conditions – which is why we see the message, “The triggering record met the start conditions” at the top.

The same is true for this one, where it appears that the Amount__c field for the triggering record is 500. The executed outcome is Mid_Claim, where it satisfies the conditions: greater than or equal to 100, but less than or equal to 500. 

Data Element Results

For your data elements like Get Records, Create Records, and so on, I particularly like how the expanded details almost read like a SOQL query. It’s as if the debugger is showing you exactly what it did behind the scenes to retrieve or create data. For example:

The above example shows how the Mid Claims Queue ID was retrieved.

I do notice the way details are written might look a little plain – readable enough, but not exactly beginner-friendly. If you’re familiar with SOQL, you’ll probably recognize the pattern right away and find it quicker to interpret. For everyone else, it might take a second longer to mentally separate the fields, operators, and values since the formatting doesn’t highlight them.

Personally, I think this could be easier on the eyes if Salesforce added a bit of visual distinction, for example, bolding field names, italicizing operators, or using subtle color differences. That said, the most important thing is that it tells me what I need to know, so I’ll take it!

Here’s another example, but on an Update Records element:

This section conveniently displays the final, updated values of the fields on the triggering record. While they’re mostly Ids, it’s still a faster way to verify results compared to running the flow live!

Panel Preferences

Another thing I really like about the Debug Panel is that you can set your own viewing preferences – just click the small gear icon!

If you prefer seeing elements by their API Names instead of their labels, you can easily switch that on.

Notice how the Update Records element here is displayed using its API Name, which explains the underscores. Otherwise, this would’ve simply shown as “Assign to Mid Claims Queue”.

Turning on the option to display governor limit consumption is another useful one! Normally, you wouldn’t notice these limits until something breaks, right? But here you can easily see how much of your limits the flow is consuming.

And while we’re on the topic of preferences, don’t forget that you can easily expand the panel to its widest with just one click, or drag to resize to a custom size. 

Debug Logs

If you ever need a copy of the debug results outside of Flow Builder, say, for documentation, troubleshooting with another admin, or maybe sharing with your developer, you can easily grab a complete text version. Just click the clipboard icon in the upper-right corner of the Debug Panel.

From there, paste it into your notes or a text editor so you can review it later, share it with your team, or keep it for reference when comparing runs. It’s a small feature, but one that’s super handy when you’re trying to track what went right (or wrong) in your flow.

Sample of how the debug log text looks when pasted into Notepad.

What About Screen Flows?

Screen flows can be debugged too! The Debug Panel opens on the left side as expected, but the right side now has two tabs: one for your screen and another for your flow canvas.

Debug panel on the left, screen on the right. No details on the debug panel yet because no input values have been entered on the screen.

You can switch between the two tabs to see both what the user experiences and what’s happening behind the scenes, which makes it a great way to trace how your screen inputs translate into flow actions in real time.

Final Thoughts

Debugging might not sound as exciting as building the flow itself, but it’s one of those steps that separates a working automation from a reliable one. 

Taking the time to understand how your flow behaves behind the scenes helps you catch small mistakes before they snowball into bigger issues in production. 

And with the enhanced Debug Panel in Flow Builder, it’s easier than ever to see exactly what your flow is doing at every step.

READ MORE: Mastering Salesforce Flow in 90 Days: A 12-Step Learning Plan

The Author

Mariel Domingo

Mariel is a Technical Content Writer at Salesforce Ben.

Leave a Reply