- Fix Guides
- How to Fix Salesforce Flow Interviews Stuck in Paused State
How to Fix Salesforce Flow Interviews Stuck in Paused State
Step-by-step fix guide with AI-powered diagnosis from BuildForce.
Salesforce Flow interviews get stuck in 'Paused' state when: a Pause element's wait condition refers to a field or record that has since been deleted, the resume event (platform event or scheduled time) was never fired, or the flow was deactivated while interviews were waiting and reactivation orphans them. The fix: query FlowInterview via SOQL to identify paused interviews, attempt resume from the Paused Flow Interviews UI for fixable cases, and delete unrecoverable interviews in bulk. Deploys to the flow can fail until paused interviews are cleared.
Symptoms
Setup → Paused Flow Interviews showing hundreds of paused entries from months ago
Flow deployment failing with 'Cannot delete flow because it has paused interviews'
Scheduled-action flow steps not firing on the scheduled date
Users reporting that 'the approval never came through' for a flow with a wait condition
Flow audit log showing 'Resume Failed' events with no actionable error
Storage usage growing from FlowInterview records you can't see in the standard UI
Root Causes
Pause condition referencing a deleted record
A wait condition like 'wait until Opportunity.StageName = Closed Won' fails to evaluate if the Opportunity has been deleted since the pause. The interview remains paused indefinitely with no error surfaced to users.
Platform event resume never fired
Flows can pause and resume on a platform event. If the publisher of the resume event was disabled, the connected app expired, or the event channel was renamed, no interview ever resumes.
Scheduled resume time passed during a deactivation window
If a flow is deactivated while interviews are paused with a scheduled resume time, those interviews can't resume even after reactivation if the scheduled time passed during deactivation.
Bulk pause from a record-triggered flow during a mass update
A mass update (Data Loader, bulk API) that fires a record-triggered flow with a Pause element creates one FlowInterview per record. A 50,000-record update creates 50,000 paused interviews, eating storage and blocking the flow from being deleted.
Field references in pause condition were renamed
Renaming a field (or changing its picklist values) while interviews are paused on that field breaks the resume evaluation. The flow can't determine if the condition is met because the field reference no longer resolves.
How to Fix It — Step by Step
Query all paused interviews and their flow versions
Use the Tooling API or Workbench to query FlowInterview. This shows every paused interview, the flow version, and the pause time — the standard UI only shows interviews the current user owns.
SELECT Id, Name, InterviewLabel, InterviewStatus, PauseLabel, OwnerId, CreatedDate
FROM FlowInterview
WHERE InterviewStatus = 'Paused'
ORDER BY CreatedDate DESCGroup by flow and identify the largest backlogs
Identify which flow is producing the most stuck interviews. A single broken Pause element can create the entire backlog — fixing one flow can clear thousands of interviews.
SELECT InterviewLabel, COUNT(Id) cnt
FROM FlowInterview
WHERE InterviewStatus = 'Paused'
GROUP BY InterviewLabel
ORDER BY COUNT(Id) DESC LIMIT 20Identify resume-blocking conditions
For each affected flow, open the Pause element and check: is the field still present, is the platform event channel active, is the scheduled time in the past? Document each broken condition before deleting interviews.
Bulk-delete unrecoverable paused interviews
FlowInterview is deletable via SOQL DELETE through Data Loader or Apex anonymous. Delete in batches of 10,000 to stay under DML limits. Deletion is irreversible — confirm with the flow owner before bulk deleting.
// Anonymous Apex — run in Developer Console
List<FlowInterview> stuck = [
SELECT Id FROM FlowInterview
WHERE InterviewStatus = 'Paused'
AND InterviewLabel = 'Old_Approval_Flow {!$Flow.CurrentDateTime}'
LIMIT 10000
];
delete stuck;Re-design the Pause element to use a Wait With Default Path
In Flow Builder, replace open-ended waits with a Wait element that has a default path firing after N days. This guarantees every interview eventually completes (success or default) instead of waiting indefinitely.
Disable record-triggered flows before mass updates
Before running a Data Loader job that will trigger a flow with a Pause element on every record, deactivate the flow, run the import, then reactivate. This prevents creating thousands of paused interviews from a one-time data event.
Monitor paused interview count weekly
Set up a scheduled report or BuildForce health check on FlowInterview where InterviewStatus='Paused' and CreatedDate < LAST_N_DAYS:30. Alert when count grows by more than 10% week-over-week — that's the signal of a broken pause condition.
Let BuildForce diagnose and fix this automatically
Instead of following manual steps, connect your org and let our AI identify exactly what's broken and how to fix it — in minutes.
Book a DemoCommon Questions
More answers about this issue and how to resolve it.
Stop debugging manually. Let AI do it.
BuildForce runs 200+ automated checks across your Salesforce org and tells you exactly what's broken and how to fix it.