Voice Calls & Scheduling
Erdo agents can place real outbound phone calls on your behalf. You tell an agent who to call and what to accomplish; it dials out, holds a natural spoken conversation, and reports back with a transcript. If the call involves scheduling, the agent can check your calendar availability live and book the meeting before hanging up.A call is always you asking an agent to make it — in chat, the agent
proposes the call and you approve it before anything dials out. Erdo never places
calls on its own.
What you can do
- Qualify or follow up with a lead — “Call this number, confirm they still want a demo, and note their timeline.”
- Confirm a detail — “Call the venue and check they have availability for 40 people on the 14th.”
- Book a meeting on the call — “Call this lead and, if they’re interested, book a 30-minute intro on my calendar this week.”
Before you start
Connect your calendar
1
Open Settings → Connectors
Find Google Calendar in the connector list.
2
Connect and authorize
Sign in with Google and approve calendar access. That’s it — the connection
is per user, so each person who wants the agent to book on their behalf
connects their own calendar.
Make a call
Just ask an agent in chat. Give it the number, what to say, and — for compliance — why the call is allowed (an opt-in, an existing relationship, an internal test, etc.). For scheduling, mention it explicitly and include the recipient’s email if you want them invited.“Call +1 555 010 0142 (Jordan at Acme). Confirm they’re still interested in the pilot, and if so book a 30-minute intro on my calendar sometime next week. They opted in on our site. Invite jordan@acme.com.”The agent will:
1
Propose the call for your approval
You see who it will call and why, and approve before it dials.
2
Hold the conversation
It introduces itself as an AI assistant, follows your instructions, and asks
one thing at a time.
3
Check availability and book (if scheduling)
It reads your real free/busy times, offers slots that actually work, and
creates the calendar event with the recipient invited.
4
Report back
Ask for the transcript afterward — “What did they say on the call?” — to see
exactly what happened.
Calling is compliance-gated
Voice calls are held to the same standard as SMS: a call is blocked before it dials — and never charged — if the recipient has opted out or is on your organization’s do-not-call list, or if it falls outside your organization’s configured calling hours. Suppression is per-organization, and a number can be added to it directly (an opted-out or DNC number never needs to be given a compliance reason again — the agent is simply told it can’t be called). Calling hours are shared with SMS — configure them once and both channels respect them — but opt-out/DNC, consent, and rate limits are tracked per channel: opting out of SMS does not by itself suppress voice calls to that number, and vice versa. To stop all outreach to a recipient, suppress them on each channel you use.Give an agent its own phone number (inbound calls)
Open Agents → Deployments to see voice runtimes and phone numbers alongside the agent’s website deployments. Choose Voice or phone there to start guided setup for an existing agent; Erdo will help cast the language and voice before it creates anything. By default a voice agent places outbound calls from Erdo’s shared number. If you want an agent to receive calls too, ask Erdo to give it its own phone number — “give my Sofia agent a phone number”. Erdo buys a number, assigns it to that agent, and from then on calls to it are answered by that agent (and it also becomes the agent’s outbound caller ID). It’s approval-gated, since it adds a number to your account. Agents running on your own connected voice provider account are the exception — assign a number to those in that account directly. Releasing a number is approval-gated too: it can’t be undone, so the approval card names the exact number about to go (read live from the agent, not from the conversation) before anything is released. If you want a number in a particular area code, say so — “give Sofia a 305 number” — rather than releasing and re-buying: buying and releasing numbers in quick succession can get the account temporarily blocked from buying more, and Erdo will tell you if that happens rather than keep trying. Calls that come in on that number are kept, the same way the calls your agent places are: who called, how long it lasted, a summary, and the full transcript. On an inbound call the agent also asks the caller for their name and the best email or phone to follow up on, since someone who dials in leaves no other trace — on an outbound call it never asks, because you already told Erdo who to reach. See Phone Call Records for how to read them from chat, the CLI, the API, or an MCP client. An inbound call is also saved as a lead. Someone who dials your number wants something from you, so every call that arrives with a caller ID becomes a row in your leads dataset — phone from the caller ID, name and email when the caller gave them, and the call’s summary saying why they rang. The row carriessource = phone_incoming_call, so callers are distinguishable from the leads your
landing pages and website widget capture in the same table, and a repeat call
from the same number merges into that caller’s existing lead rather than
duplicating it. Which dataset receives them is a setting on the phone deployment
(Agents → Deployments → the phone runtime → Save leads) — a dataset you
pick, else your organization’s leads dataset when you have exactly one, else a
“Widget leads” dataset Erdo creates for you. Turn it off there and calls are
still recorded, just not written as leads. Outbound calls never produce a lead:
you already knew who you were calling. See An inbound caller becomes a
lead.
Texting the number
The same number receives texts, and your agent answers them — from that number, with the same persona and the same knowledge it uses on a call. Texts are grouped as one conversation per person rather than as loose messages, with STOP and START honored the way they are for outbound SMS. Answering is on by default for an agent that has a number. The switch is on Agents → Deployments beside the number, or ask in chat (“stop my Ana agent answering texts”); with it off, texts still arrive and are still readable, the agent just does not write back. One thing has to happen first: US carriers require a local number to be registered before it can SEND texts, so until that is done your agent reads texts and cannot reply — Erdo puts an item in your work feed telling you so. Anything that stops replies this way — an unregistered number, a conversation that has had its day’s replies, an empty credit balance — clears itself from the feed as soon as a reply gets through, so what is listed is what is still true. The same switch is reachable outside the app:POST /v1/voice/agents/{slug}/sms-replies
with {"enabled": false}, erdo voice agents sms-replies <slug> --off from the CLI, and the
MCP tool erdo_set_voice_agent_sms_replies — all three take the agent’s slug, need
organization admin access, and change nothing else about the agent.
See Incoming texts for how a reply is written, the
24-hour posture, and how to read a conversation.
Receiving works from the day the number exists. Replying additionally needs
the number cleared by US carriers, which is a one-off business-details form and
an approval rather than anything technical — Registering a Number for
Texts walks through it, and erdo voice numbers list shows
where each of your numbers stands.
Call a lead yourself, from your organization’s number
Your team can also place a call themselves: Erdo rings their own phone, they press 1, and it dials the lead — from your organization’s number, with the call recorded and transcribed like any other. See Calling a Lead. It is the opposite of the live transfer below, where the agent is already on a call and hands it over.Live-transfer a call to a real person
You can have an agent’s calls hand off to one of your team’s own phone numbers when it makes sense — a qualified lead who wants to talk to someone, or anyone who explicitly asks for a person. Ask Erdo to set it up in chat, on the voice agent you want it for:“For my Sofia agent, transfer the call to +1 555 010 0199 whenever the caller is a qualified lead asking to speak with someone, during business hours — 9am-6pm Eastern, Monday through Friday.”Give Erdo the destination number and describe, in your own words, when it should transfer — including any hours you want it limited to. The agent checks that condition itself during the call, so phrase it the way you’d explain it to a new team member.
By default the agent introduces the handoff to your team member before
connecting the caller (“warm transfer”) — ask for a direct connect with no
announcement instead if you’d rather it just connect the call silently.
Business hours for calls INTO your number
By default, transfer is available always — any call, any hour. That’s the right default for most teams: the number a caller reaches is usually your own staff’s direct line, and they’d rather have every qualified call handed to them than miss one because it landed at 7pm. If you’d rather restrict it, ask Erdo to gate transfer to real business hours for calls that dial your agent’s own number directly (the number from “give my Sofia agent a phone number” above — for example, one printed on a landing page). This is an explicit opt-in — Erdo enforces your calling hours for real, rather than relying on the agent’s own sense of time:“For my Sofia agent, only transfer during business hours — 9am to 6pm Eastern, Monday through Friday.”Give Erdo the timezone and hours (and which days, if it’s not every day). Erdo checks the real time against that window at the moment each call comes in and tells the agent whether your team is open — the agent never has to guess or calculate it. Outside those hours, the agent never transfers, even if the caller insists or would otherwise qualify — it takes a message instead, the same way it does when nobody picks up (and the same way it does under the always-available default, any time your team simply doesn’t answer). This hours check applies to calls made to your agent’s number, and only when you’ve opted into it. Calls your agent places on your behalf still transfer purely on the condition you described above — describe any hours restriction for those calls in that condition’s wording, as before.
Good to know
- Consent matters. Every call needs a stated reason it’s permitted; the agent won’t place a call without one. If the person asks not to be called again, the agent acknowledges it and ends the call.
- The agent never claims to be human. It identifies as an AI assistant.
- Booking won’t guess. If the agent can’t read your calendar (not connected, or access revoked), it tells you rather than booking over your existing events.
- One calendar per call. Availability and the booked event belong to whoever asked for the call — not the person being called.

