How to Make or Receive Calls
This guide covers how to handle both inbound and outbound calls using Exotel.
Receiving Incoming Calls​
Prerequisites​
- An active ExoPhone (virtual number). See What is an ExoPhone?
- A call flow assigned to the ExoPhone. See Setting Up a Call Flow
How It Works​
- A customer dials your ExoPhone.
- Exotel receives the call and triggers the assigned call flow.
- The call flow processes the call (greeting, IVR, routing).
- The call is connected to an agent or handled by an automated system.
Setting Up Incoming Calls​
- Buy an ExoPhone -- Go to ExoPhones in the dashboard and purchase a number.
- Create a call flow -- Build a flow with at least a Greeting and Connect applet.
- Assign the flow -- Map the call flow to your ExoPhone.
- Add agent numbers -- In the Connect applet, enter the phone numbers of agents who should receive calls.

Incoming Call Flow Diagram​
Customer dials ExoPhone
↓
Exotel Cloud
↓
Call Flow (Greeting → IVR → Connect)
↓
Agent's phone rings
↓
Agent answers → Call connected
Making Outgoing Calls​
There are multiple ways to make outgoing calls through Exotel.
Method 1: Via the Dashboard​
- Log in to the Exotel Dashboard.
- Navigate to the dialer or click-to-call option.
- Enter the customer's phone number.
- Select the ExoPhone to use as caller ID.
- Click Call.
Exotel will first call your agent number, and once the agent answers, it will call the customer. The customer sees the ExoPhone as the caller ID.
Method 2: Via API (Connect Two Numbers)​
Use the Connect Two Numbers API to programmatically connect an agent to a customer:
curl -X POST 'https://<api_key>:<api_token>@api.exotel.com/v1/Accounts/<account_sid>/Calls/connect.json' \
-d 'From=<agent_number>' \
-d 'To=<customer_number>' \
-d 'CallerId=<exophone>'
Parameters:
| Parameter | Description |
|---|---|
From | The agent's phone number (called first) |
To | The customer's phone number (called after agent answers) |
CallerId | The ExoPhone to display as caller ID |
Method 3: Via API (Connect to Flow)​
Use the Connect to Flow API to call a number and connect them to a call flow (IVR):
curl -X POST 'https://<api_key>:<api_token>@api.exotel.com/v1/Accounts/<account_sid>/Calls/connect.json' \
-d 'From=<customer_number>' \
-d 'CallerId=<exophone>' \
-d 'Url=http://my.exotel.com/exoml/start/<app_id>'
This is useful for scenarios like automated reminders or IVR surveys.
Method 4: Via Campaigns​
For bulk outbound calls, use the Campaigns API to call a list of numbers:
- Create a campaign with a list of phone numbers.
- Assign an IVR flow to the campaign.
- Schedule or start the campaign.
- Exotel dials each number and connects them to the flow.
Outgoing Call Flow Diagram​
API Request (Connect Two Numbers)
↓
Exotel calls Agent first
↓
Agent answers
↓
Exotel calls Customer
↓
Customer answers → Both connected
↓
Customer sees ExoPhone as caller ID
Call Recording​
Both incoming and outgoing calls can be recorded. Enable recording in the Connect applet configuration or via the API Record parameter.
See: Call Recording
Viewing Call Details​
After a call completes, you can view details via:
- Dashboard: Go to Call Logs to see all calls with timestamps, duration, status, and recordings.
- API: Use the Call Details API to fetch call information programmatically.
- Webhooks: Configure Status Callbacks to receive call details in real time.
Troubleshooting​
| Issue | Possible Cause | Solution |
|---|---|---|
| Incoming calls not ringing agents | Flow not assigned to ExoPhone | Check ExoPhone settings |
| Outgoing call fails | Invalid phone number format | Use E.164 format or 10-digit number |
| Customer hears nothing | No Greeting applet in flow | Add a Greeting applet as the first step |
| Call drops immediately | Call flow has no Connect applet | Ensure the flow routes to an agent or voicemail |
| Agent number busy | All agents occupied | Set up Call Queue or Voicemail |