Issue
Customers report that their inbound text messages or webchat messages are not receiving replies, and agents see no incoming tasks in the Flex UI. Upon checking the Twilio Debugger, there may be no explicit errors, but inspecting Studio > Flows > [Flow Name] > Logs reveals that the customer's contact record has an old execution stuck in an Active state from hours or days ago. New inbound interactions from that specific contact are entirely blocked or ignored by the Flow.
Product
Twilio Flex
Environment
Twilio Console
Cause
By default, Twilio Studio limits a unique contact address to a single active Execution loop. If a previous interaction does not cleanly hit an end-state widget (such as a completed TaskRouter assignment or an explicit hangup/disconnect transition), the execution remains alive in Twilio's backend.
The most common reasons an execution becomes stuck include:
- Abandoned Webchat/SMS Sessions: A customer closes their browser window or stops replying mid-conversation while the flow is sitting on a Send & Wait for Reply widget. Studio will keep this execution open waiting for a reply that will never come.
-
Missing TwiML/Status Callbacks: The underlying messaging channel failed to pass a final
completedevent back to the Studio webhook web register. - Unresolved Subflows or Functions: The execution passed to a Twilio Function or an HTTP Request widget that timed out or threw an unhandled exception, failing to return a transition path to the parent Studio Flow.
Resolution
To clear blocked channels and restore routing for affected customers, use either the manual console method or the bulk API method below.
1. Manually Terminate the Active Studio Execution
If only a few customers are experiencing a routing blackout, you can manually stop their stuck sessions via the Twilio Console.
- Navigate to Studio > Flows and select the active routing Flow.
- On the left-hand menu of the canvas, click Logs.
- Click the checkbox filter for Show Active Executions Only.
- Locate the customer's phone number or identifier in the Contact column.
- Click the hyperlinked Execution SID (
FNxxxx...). - Review the step history to see which widget it is stuck on, then click Stop Execution at the top of the summary screen.
Once terminated, ask the customer to send a new message. The inbound trigger will now successfully fire a fresh execution.
2. Bulk Clear Inactive Executions via the Twilio CLI
For large contact centers experiencing systemic blockages, manual termination is inefficient. You can use the Twilio CLI to script the termination of executions that have been open past your standard timeout threshold (e.g., older than 4 hours).
Run the following command structure to flip an execution's status from active to ended:
twilio api:studio:v2:flows:executions:update \
--flow-sid FWxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx \
--sid ENxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx \
--status ended
3. Long-Term Prevention: Implement Flow Timeouts
To stop executions from remaining stuck indefinitely in the future, audit your Studio Flow configuration:
- Switch from "Send & Wait" to Dedicated Handlers: Avoid leaving a Send & Wait for Reply widget open indefinitely. Instead, utilize custom timeouts or routing rules where possible.
- Verify "Allow Concurrent Calls": Click the Trigger (Start) widget at the very top of your Studio canvas. Under the Config tab, verify if your flow version supports concurrent sessions for the same address, allowing a new inbound message to override or duplicate an old state safely.