DEV Community

Rohan Mehta
Rohan Mehta

Posted on

Salesforce Fault Paths: How to Stop Flow Errors From Silently Failing

Every Salesforce admin has lived this moment: a Flow that ran "successfully" for weeks, while records quietly went un-updated in the background. The record didn't change, nobody got an error email, and the problem only surfaced when a user asked why their case was still sitting unassigned. In most cases, the culprit is a missing Fault Path.

A Fault Path is the branch a Flow takes when an element fails — a record update that hits a validation rule, a create that violates a duplicate rule, or a lookup that returns nothing. If you don't draw that branch, the Flow simply stops at the failed element. For a screen Flow, the user sees a generic error. For a record-triggered Flow, the failure is nearly invisible: the transaction rolls back, the debug log fills up, and nobody is notified unless someone goes looking.

Here are five practices that make Fault Paths actually useful.

1. Add a Fault Path to every data element, not just the risky ones. The elements that fail in production are rarely the ones you expect. A "safe" update can fail when a new validation rule ships, when a required field is added, or when a permission set changes. Drawing the branch takes seconds; debugging a silent failure takes hours.

2. Log the failure to a custom object or a Chatter post. When a Fault Path runs, capture what happened: the Flow name, the element that failed, the record ID, and the error message from the $Flow.FaultMessage variable. A simple "Flow Error Log" custom object gives your team a single place to check, and it turns invisible failures into a visible queue.

3. Send a notification, not just a log entry. A log nobody reads is barely better than no log. Pair the log record with a custom notification to the admin group or the record owner, so failures surface the same day they happen. Our guide to sending custom notifications with Flow walks through the no-code setup.

4. Decide what "safe failure" means for each Flow. Some failures should stop everything — a failed opportunity update, for example. Others should degrade gracefully: if an optional task creation fails, the Flow can continue and flag the record for follow-up instead. The Fault Path is where you make that call explicitly, rather than letting the platform decide for you.

5. Test the Fault Path, not just the happy path. In Flow Builder's debug mode, you can force failures by feeding in data that violates a rule or references a missing record. Run those cases before every deployment. A Fault Path that has never executed is a guess, not a safeguard.

One more thing worth knowing: Fault Paths interact with run context. A Flow running in system context can fail for different reasons than one running in user context — see our explainer on Flow run context — a sharing rule, a field-level security gap, or a permission the running user lacks. If a Flow fails only for certain users, check who it runs as before you rewrite the logic.

Silent Flow failures are a process problem, not a platform problem. The tooling to catch them is already in Flow Builder; it just needs to be wired up deliberately. Add the branch, log the error, notify a human, and test the failure case. Your future self — the one not debugging a month of missing updates — will be grateful.


Originally published at Way2Force — practical guides on Salesforce Flow, automation, and CRM.

Top comments (0)