Phone line and hand-off architecture

How we host a property's phone number and how Clara hands a caller off to a person — what we run today, what the vendors actually support, and the recommended path. Written for the Western Slope RingCentral onboarding and the Camellia missed-hand-off pain.

Proposed — this week vs. next · deep dive added 2026-09-08

The problem in one paragraph

A missed hand-off is a dead end for the team today. Clara bridges a caller to a person using ElevenLabs' built-in transfer tool, which is a black box: we can't choose what the team member's phone shows, we get no signal when nobody picks up, and the team member's phone log just shows a missed call from Clara's number — not the caller's.

Unless the team member opens the follow-up email Clara sends afterward, that call is simply lost. This is the single most-reported problem across AI-receptionist setups like ours, including two RingCentral community threads describing our exact configuration: a third-party AI running on Twilio, handing calls back into RingCentral.

Deep dive for 2026-09-08: how the market does it, and the vendor tools we are not using

Ask from Fede: "This is an old problem, done many times. Don't reinvent the wheel. If Twilio and ElevenLabs have tools that work reliably and we're not using them, I want to know." Target experience: everything recorded including the hand-off leg; the team phone shows the original caller; if the hand-off lands in voicemail or nobody answers, Clara pulls the caller back and offers to take a message; callers who are used to extensions can still reach a person. All claims below are sourced; anything unsourced is marked as such.

1. The four target behaviors are named, standard features across the market

Behavior we wantWho documents itWhat they call it
Team phone shows the original caller on hand-offRetell ("Displayed Caller ID: User's Number"), Vapi (callerId = customer number), Synthflow (caller's original number, Twilio-purchased numbers only), My AI Front Desk (admin picks caller's number or the AI's), EliseAI (warm transfer shows the original caller's number to the agent)Caller ID passthrough, gated behind a setting, works best on Twilio-owned numbers
Detect voicemail or no answer on the human leg, then return to the callerSynthflow ("Human Detection Timeout" plus six transfer outcomes), Retell (voicemail detection), Bland ("Hold Timeout" with fallback message), Funnel Leasing (after 2 to 3 failed attempts routes to the office line and proactively offers to reconnect), PATLive (returns to a live receptionist after N attempts), EliseAI (scripted line: "No one was available to answer the call. I can take a message for you, or is there anything else I can assist you with directly?")Transfer fallback
Record the whole call including the hand-offMy AI Front Desk ("entire call, including transferred portion"), Dialpad (segments before and after transfer), EliseAI (full call to portal). Caution: Amazon Connect documents that recording STOPS once an agent leaves an externally transferred call, so this is not a universal baselineContinuous recording
Reach a person by name, extension, or keypadDialpad and RingCentral and Nextiva (dial-by-name and dial-by-extension directories), GoTo ("Dial by Name Directory Routing"), Retell (keypad digits captured by default during the AI conversation), Vapi (native keypad input), Bland (interprets incoming keypad presses)Directory routing; keypad in parallel with speech

Surprises: the mature human receptionist services (Smith.ai, Ruby, Abby, Nexa, PATLive) do not publicly document what caller ID staff see on a transfer. The property-management AI vendors (AppFolio Realm-X, Knock, Entrata, Colleen, ResMan, Yardi) document almost nothing on any of the four; only EliseAI and Funnel are specific. Keypad-during-AI-conversation is a 2024 to 2025 feature, not settled tech, and most AI receptionist startups dropped the keypad entirely.

2. What best-in-class sounds like when the human does not answer

  1. Clara dials the person. She waits to hear live speech before saying anything to them, so her whisper never plays into a voicemail box (Synthflow's human-detection timeout pattern).
  2. If nobody live picks up within the window, the attempt is marked failed with a reason: timeout, voicemail, busy, connection error.
  3. Clara comes back to the caller: "No one was available to answer the call. I can take a message for you, or is there anything else I can help with directly?" (EliseAI's line.)
  4. The message becomes a structured task with the caller's number, not a raw voicemail (EliseAI task, Funnel guest-card note; our missed-call email already has this shape).
  5. If the same caller was failed before, Clara offers to try again without making them re-explain (Funnel).
  6. Final fallback after repeated failures: the office main line, not a dead end (Funnel, PATLive).
  7. The whole thing is one continuous recording.

3. Extensions: why they exist and what modern desks do with that job

4. Vendor tools we are not using

ToolVendorWhat it gives usWorks with our current native setup?
Fallback URL on the phone numberTwilioIf ElevenLabs is unreachable, Twilio runs a simple backup: ring a person or take a voicemail. Five-minute console setting. None of our lines has one.Yes, it lives on the number, independent of who owns the call. Confirm with Twilio that an ElevenLabs-imported number still honors it.
Keypad input during the conversation ("dtmf_input_settings")ElevenLabs, added 2026-08-31Callers can press digits while talking to Clara. Directly serves the extension habit.Yes. No reliability data yet; test at the Willows.
Blind transfer modeElevenLabsThe only transfer mode documented to preserve the original caller's number on the team phone.Yes, one config flag. Loses the whisper; no no-answer signal.
Voicemail detection system toolElevenLabsDetects a voicemail greeting and can play a message or bail.Presumed yes. Accuracy not published.
Call token on the dialed legTwilioCarries the original caller's verified identity onto the leg we dial, so the team phone shows the real caller with proper trust signing instead of a low-trust forwarded number.Only if we run the dial ourselves.
Answering machine detection on the dialed legTwilio94% accuracy, near 100% in message-end mode. The mature way to know a hand-off hit voicemail.Only if we run the dial ourselves.
Dial action callback with the dial outcomeTwilioThe exact mechanism for "nobody picked up, bring the caller back to Clara."Only if we run the dial ourselves.
Whisper and "press 1 to accept" on the dialed legTwilioTeam member hears who is calling and accepts before the bridge.Only if we run the dial ourselves.
Dual-channel recording on the dialed legTwilioGuaranteed recording of the human leg.We already do this at call start; it stays true under our own dial.
Caller name lookupTwilioName, not just number, on the team phone and in the email. US only, small per-lookup fee.Yes.
Voice Integrity registrationTwilioRegisters our numbers with the carrier spam-analytics programs so our calls stop being labeled.Yes.
ConversationRelayTwilioTwilio-first architecture where Twilio owns the call and uses ElevenLabs voices. Native keypad, hand-off, recording.No, it is a different architecture. Large rebuild.
Workflows visual builder with transfer nodesElevenLabsSuccess and failure edges on tool nodes.Yes, but failure-edge behavior for transfers is not fully documented.

Gaps confirmed on the ElevenLabs side: no documented caller ID behavior for conference transfers, no ring timeout, no "resume after failed transfer," no transfer outcome in the post-call webhook, and an open bug where the transfer cuts Clara off mid-sentence.

5. Three ways to get there, sized

PathWhat it gets usWhat it cannot doSize
A. Stay native, configure harderFallback URL; keypad input; blind transfer for caller ID; voicemail detection; caller name lookupNo reliable "bring the caller back" on no-answer; no whisper if we go blind; caller ID on conference mode stays undocumentedSmall, settings plus a Willows bench
B. Native conversation, our own hand-off through TwilioEvery target behavior: original caller with trust signing, whisper, voicemail detection, return to Clara on no-answer, structured message, continuous recording, keypad and name routingNeeds a custom transfer tool, a small bridge handler, and confirmation that Clara can take the caller back after a failed dialMedium, the June "own the dial" option; the same shape Retell, Vapi, and Bland implement internally
C. Twilio-first (ConversationRelay or SIP trunk)Cleanest controlA rebuild of the call layer; ElevenLabs SIP mode has no whisperLarge, not now

6. Proposed staging (for Fede to accept or change)

This week (Western Slope goes live on forwarding):

  1. Fallback URL on every production line, pointing at a human line.
  2. Turn on the missed-call email for Western Slope (already carries the caller's number).
  3. Team directory on the property record: name, role, direct number, old extension. Clara routes by name or spoken extension. Repoint the "talk to a person" bridge off the main number.
  4. Willows bench: blind transfer (does Kat's phone show the caller?) and the new keypad input.

Next two to four weeks, one property at a time:

  1. Path B for the hand-off: our own dial with original caller, whisper, voicemail detection, and return-to-Clara. Bench, soak, Western Slope first, then Camellia.
  2. Recognize known callers by number and route straight to their person (the modern replacement for extensions).
  3. Register numbers with Voice Integrity; add caller name lookup to the email.

Questions to put to support before relying on anything: ElevenLabs, what caller ID does conference transfer present, is there any ring timeout or resume-on-failure, does recording continue after the agent leaves. Twilio, does the fallback URL fire on an ElevenLabs-imported number, and can an agent regain the caller after our own dial reports no-answer.

Sources for this section

What we run today (Camellia, Yale 25 Station, Western Slope test line)

What the vendors actually support (documented)

ElevenLabs transfer to number

Twilio (we own the number and the account)

RingCentral

How peers do it

Most-reported pitfalls in the field

RankPitfallSource
1Caller ID replaced by the AI's number on the transfer legRingCentral forums, Retell community, Canadian carrier reports
2ElevenLabs conference transfer cutting off earlyElevenLabs / Twilio field fix
3Voicemail mistaken for a person, so the AI "succeeds" into a voicemail boxField reports
4Codec and touch-tone distortion on multi-hop bridgesField reports
5Echo and half-duplex audio right after a transferRetell community
6Unowned caller ID blocked or spam-flaggedTwilio spam remediation docs
7Per-leg cost stacking — Twilio bills each leg, plus a small fee to receive a transferred callTwilio billing docs
8Single-vendor outage with no fallbackElevenLabs status history
9Ring-timeout and busy-line handling gapsField reports
10Recording consent on the transferred leg in all-party-consent statesRecording-law surveys

Options

OptionWhat it isFixesLeaves broken / cost
AKeep everything as isNothing — cheapest, zero reworkDead-end missed calls, late no-answer detection, the cut-off bug
BSwitch ElevenLabs to blind transferCaller ID on the team phone shows the real callerLoses the whisper and Clara's announcement; still no no-answer signal; still nothing on failover. Not enterprise-grade.
C
recommended
Own the hand-off on Twilio. Clara's transfer becomes a tool call to our backend, which moves the live call into our own bridge: dial the team member with the caller's real number (or Clara's, per property), whisper who's calling, detect voicemail, ring up to N seconds, and if nobody answers bring the caller back to Clara to take a message, then email the team with the caller's number.Real no-answer signal instead of after-the-fact recording analysis (a deletion, not an addition); two-channel recording of the human leg comes for free; full control over caller ID, ring timeout, voicemail detectionRewiring the transfer tool on every specialist agent; a new Twilio bridge handler; a bench run at the Willows; an overnight soak; then rollout one property at a time. Risk of spam labels when presenting the caller's real number — default is Clara's number plus whisper, with "show the caller" as a per-property switch.
DTwilio-first with ElevenLabs behind a SIP trunkMaximum control and recording regardless of transfer modeBigger rebuild; ElevenLabs SIP mode has no whisper; ElevenLabs SIP routing had the July incident. Not now.

Option C was called "own the dial" in the June design note and was deferred then as too much rewiring.

Recommendation

Answers to Fede's direct questions

Does "press extension X" go away?

Yes, once the main number forwards to Clara. Callers say the name; Clara transfers to that person's direct number. Direct lines keep working for anyone who already has them.

What does Kat's phone show today on a hand-off?

A PropFlow number, not the caller's. Under option C it can show the real caller instead, with the spam-label trade-off described above.

Are hand-off calls recorded?

Yes — with Clara at the top we record every call end to end, including the hand-off leg, today and under option C. Only the SIP REFER transfer mode would lose the recording, and we don't use it.

Sources

Internal: docs/planning/unknown-caller-transfer-no-answer-detection.md (June 2026 design, options 2a–2d); agents/clara/lib/voice/post-transfer.ts (recording at answer, outcome classification); config/phone-registry.json; agents/clara/lib/voice-agents/prototypes/western-slope-portfolio-triage.ts (bridge callerId).

PropFlow Docs