Sign In

Phone Calls

Point a phone number at your agent and it answers. Callers reach the same agent as your website widget — same system prompt, same knowledge base, same escalation — over an ordinary phone call.

Overview

Phone is built on the same real-time stack as the Voice Assistant: LiveKit for the audio session, OpenAI Realtime for speech. The difference is how the caller arrives. Instead of tapping a microphone in the widget, they dial a number from your own Twilio account.

Bring-your-own Twilio means you keep your existing numbers, your carrier rates, and your own relationship with Twilio. Call minutes are billed by Twilio to you; the agent's time is billed in TIA credits at the same per-minute rate as widget voice.

Why bring your own account

  • Your numbers stay yours. Nothing is ported or resold.
  • Your carrier pricing, including any volume rates you already negotiated.
  • Your compliance posture — 10DLC, toll-free verification and call recording consent stay in the account you already registered.

Setup

You'll need a Twilio account with at least one voice-capable number.

1. Connect Twilio

  1. Go to Settings → Phone.
  2. Enter your Account SID and Auth Token from the Twilio Console.
  3. Select Connect.

We verify the credentials against Twilio before storing anything, so a typo fails immediately rather than when a customer calls.

Why the Auth Token, and not an API key. Twilio signs every webhook it sends us so we can prove a call really came from Twilio and not from someone who found the URL. That signature can only be verified with the account Auth Token — an API Key/Secret pair cannot do it. The token is encrypted before storage and never displayed again.

Because the Auth Token can place calls and send SMS at your expense, consider creating a Twilio subaccount for TIA rather than using your main account credentials.

2. Import your numbers

Select Sync numbers. We pull every voice-capable number from the account. Numbers without voice capability are skipped.

Syncing is additive: it never changes which agent answers a number, and it never removes a number you've already configured.

3. Choose the answering agent

Pick an agent from the dropdown next to each number. A number with no agent will not take calls.

4. Point the number at the agent

Select Point at agent. This writes TIA's webhook URL into that number's voice configuration in your Twilio account.

This is a separate step from syncing on purpose — it takes over the number's current voice behaviour, which may be serving something else of yours. If you'd rather do it by hand, copy the webhook URL shown under each number and set it as the A call comes in webhook (HTTP POST) in the Twilio Console.

Transferring to a person

Each number can have a transfer number. When a caller asks for a human — or the agent decides it can't help — the live call is transferred there.

Leave it blank and the agent cannot put anyone through. It will instead raise a handoff for your team to follow up on, and say so honestly rather than promising a transfer that won't happen.

What the agent does differently on the phone

The agent knows it is on a call rather than on a screen, and behaves accordingly:

  • It never says "click", "see below", or refers to anything visual.
  • It doesn't read out URLs or long reference codes unless asked, and offers to email or text them instead.
  • It reads names, email addresses and reference numbers back to you before acting on them, because phone audio is narrow and mishearing is routine.
  • It says what it's doing before a pause, so silence never reads as a dropped call.
  • It says goodbye and hangs up when you're done, instead of leaving the line open.

Calls in your dashboard

A phone call appears in the agent's Conversations with the channel marked phone, with the full transcript, exactly like a widget conversation.

Callers are identified by a stable, irreversible id derived from their number rather than by the number itself, so the same caller's calls thread together without copying phone numbers into analytics.

Billing

Two things are charged, the same split as widget voice:

  • Call time, per started minute, at the standard voice rate.
  • Each agent reply, at the agent's model rate.

A call cannot start unless the workspace can pay for its first minute, and a call in progress ends at a minute boundary if the balance runs out. Twilio bills you separately for the carrier side.

Limits and safeguards

Phone is the first channel where someone can reach your agent without visiting your site, so a few limits are enforced:

SafeguardBehaviour
Concurrent callsCapped per workspace, shared with widget voice. Callers beyond the cap hear a "lines are busy" message.
Repeat callersRate limited per calling number, and per number dialled.
Maximum call lengthSessions end after 15 minutes, so a handset left off the hook can't bill forever.
Unverified requestsAnything without a valid Twilio signature is rejected before it can cost you.

If we can't take a call for any reason — no agent assigned, out of credits, lines busy — the caller hears a short spoken explanation rather than an error tone.

Troubleshooting

IssueWhat to check
Caller hears "this line isn't set up"The number has no agent assigned, or its Live toggle is off.
Caller hears "we can't take your call right now"The workspace is out of credits, the plan no longer includes phone, or the Twilio connection needs reconnecting.
Caller hears "all of our lines are busy"The concurrent-call cap was reached, or the same caller has dialled repeatedly in the last minute.
Calls never arriveConfirm the number's A call comes in webhook in Twilio matches the URL shown in Settings → Phone, and is set to POST.
Transfers don't connectCheck the transfer number is in full E.164 form (+15551234567) and can accept calls from your Twilio number.
Sync imports nothingThe account's numbers may not be voice-capable — SMS-only numbers are skipped.

Next Steps