ElevenLabs · Termination Insights

How & Why Calls End

2,261 calls · deterministic (no LLM)

Note — excluded data: Excluded from these insights: (1) 49 historical 'exceeded maximum duration' cutoffs (Kazumi, Apr 15–17 2026, ~3-min cap since raised to 60 min) — a config artifact; (2) 'exceeds your quota limit' rejections — account-level credit/usage-cap refusals that bounce calls ~2s at connect (infra, not call-termination behavior). Both removed to avoid polluting insights. See exclusions.py.

Termination distribution & time-to-end

User disconnected (normal close) 1666 · 74% · med 42s · 16% <10s
Agent ended call (end_call tool) 352 · 16% · med 55s · 0% <10s
Connection dropped (abnormal) 81 · 4% · med 38s · 14% <10s
User left (going away) 73 · 3% · med 22s · 19% <10s
Silence / inactivity timeout 62 · 3% · med 61s · 0% <10s
Client disconnected (1005) 9 · 0% · med 42s · 0% <10s
Non retryable error during text to speech 9 · 0% · med 1s · 100% <10s
Call ended by remote party 6 · 0% · med 14s · 33% <10s
Client disconnected (1012) 2 · 0% · med 302s · 0% <10s
Unknown / not recorded 1 · 0% · med 0s · 100% <10s

'User silent' terminations — trailing silence before hang-up (172 calls)

32

clear (>15s silent)

0

never spoke at all

138

borderline (8–15s)

2

premature (<8s)

Measured signal: seconds the user had been quiet (call end − last user utterance) when the agent ended for silence. Most cluster in the 8–15s borderline band — right at the agent's re-prompt threshold — so a definitive true/false-positive verdict needs the LLM pass, not this timing heuristic.

premature? Lena The Plug · 37s

agent said: “user not responding”

User's last words at 33s — only 4s of silence before the agent ended.

premature? Sophie Dee · 91s

agent said: “User has gone quiet and is not responding.”

User's last words at 87s — only 4s of silence before the agent ended.

Per-agent termination profile

AgentCallsAgent-ended Abnormal dropSilence TONormal
PureOceanEyes 22 32% 9% 0% 55%
Cowgirl J 18 28% 6% 0% 61%
Rachel Jane 16 25% 0% 0% 75%
Nicole Thibeault 16 25% 6% 0% 62%
Tayuh Lynn 23 22% 13% 0% 61%
Sophie Dee 823 22% 2% 6% 67%
Desirae Fraser 99 18% 5% 1% 74%
Mrs Poindexter 29 17% 7% 0% 76%
Rebecca J 100 16% 6% 1% 70%
Ana Nello 27 15% 0% 0% 81%
Beatriz 7 14% 0% 0% 86%
Lena The Plug 279 13% 4% 0% 81%
CeCe Lynn 31 13% 6% 0% 68%
Kiki D'Aire 49 12% 6% 0% 80%
Kazumi 184 11% 2% 1% 76%
Savannah Bond 40 10% 8% 0% 80%
Princess Frenxh 50 10% 6% 0% 78%
Alexis Mucci 124 9% 3% 1% 80%
Brody Jean 23 9% 4% 4% 83%
Ashley Belle 22 9% 5% 0% 82%
Miss Lexa 61 8% 2% 2% 87%
Ellie Meyers 25 8% 0% 4% 84%
Nova Frog 33 6% 15% 0% 76%
Nicole 22 5% 0% 0% 91%
Janna Moller 37 5% 5% 5% 76%
Amazon Victoria 19 5% 11% 0% 84%
Anastasia 19 5% 5% 5% 79%
Reese 43 5% 5% 2% 84%
Lisa Daniels 8 0% 12% 0% 88%
Kylie Kennedy 2 0% 0% 0% 100%
Barbara Silva 10 0% 0% 0% 90%

Red agent-ended ≥25% / amber abnormal-drop ≥10% flag outliers worth a look.

Operational-error terminations & bounces

Error/limit terminations

  • Non retryable error during text to speech9

Short-call bounces

<5s: 88 · <10s: 302 (13% of calls)

<10s by reason: User disconnected 265, User left 14, Connection dropped 11, Non retryable error during text to speech 9

Recommendations

  • 1 Re-engage instead of hanging up when the user goes quiet — convert the silence-triggered end_call into a re-engagement beat ('you still there, babe? want me to…') and let the USER disconnect.
    ↳ ~155 silence ends ≈ 48% of all agent-initiated hang-ups
  • 2 Never end for explicitness — enforce the agents' own rule ('never say you can't be explicit; redirect to a photo/text CTA') and rewrite the end_call tool description to safety-only.
    ↳ ~40+ explicitness-tone ends, the clearest false positives in the safety bucket
  • 3 Fix the 'Stage 4' prompt gap — it's referenced ('advance to Stage 4') but never defined, so the model improvises a close. Define it as a re-engage / loop that never ends the call.
    ↳ arc-complete / 'Stage 4 close' proactive ends
  • 4 Preserve the required-safety ends as-is — underage/minors, threats, real-world meetups, PII extraction, crisis. These are working correctly; do not loosen them.
    ↳ ~32 likely true-positive safety ends
  • 5 Extend the existing `no_premature_end` eval beyond content-explicitness to also fail on silence / arc-complete / disengagement ends — so the fix above is measurable.
    ↳ eval currently only catches content-explicitness premature ends
  • 6 Human-adjudicate the gray-area cases to set policy — taboo/extreme content, fantasy-vs-real non-consent, abuse without the consent-check, and user-initiated exits.
    ↳ ~54 needs-human cases in the review packet
  • 7 Route operational call-killers to eng/ops — TTS errors that fail calls at ~1s, and abnormal connection drops that bounce users right after connect.
    ↳ ~9 TTS fails + abnormal drops among the sub-10s bounces
  • 8 Instrument user identity — pass a user/anon-device id into 11labs, or join call_id → your backend — to unlock new-vs-returning analytics.
    ↳ 11labs carries no usable web user_id; ~94% of sessions are anonymous

Prioritized next steps (stack-ranked by impact ÷ effort)

Impact ●●● high → ○○ low · Effort ●●● high → ○○ low. P0 = do now (high impact, prompt-only).

PriStep ImpactEffort
P0 Silence → re-engage (prompt + end_call description edit)

Biggest single lever — ~48% of agent hang-ups. Prompt-only change.

●●● ●○○
P0 Block explicitness-triggered ends; redirect to CTA

Highest-volume false-positive cluster; already against the agents' own rule.

●●● ●○○
P1 Define 'Stage 4' as a re-engage loop (remove arc-complete close)

Removes the improvised-close behavior at the prompt level.

●●○ ●○○
P1 Extend `no_premature_end` eval to silence/arc/disengagement

Turns the fix into a measurable metric per agent.

●●○ ●○○
P1 Run the LLM policy review (add ANTHROPIC_API_KEY)

Precise per-call verdict + per-agent offender ranking; tightens the needs-human set.

●●○ ●○○
P2 Human review the ~54 needs-human cases; codify gray-area policy

Taboo content, fantasy-vs-real non-consent, user-initiated exits. Needs reviewer time.

●●○ ●●○
P2 Ops fix: account quota/credit exhaustion + TTS errors

Calls failing at connect waste first impressions. Separate team.

●●○ ●●○
P3 Instrument user identity for new/returning analytics

Requires eng + data work (call_id → backend join or anon-id passthrough).

●○○ ●●●