Which Voice SDK should I use?
Which Voice SDK should I use?
Use this guide to pick the right Exotel Voice SDK for your product and how you manage users.
Quick decision
If your users call from… | Choose |
|---|---|
A CRM or web portal, and you want Exotel to manage SIP users | CRM WebSDK |
A custom browser softphone with your own UI | Client WebSDK |
A native Android app | Client Android SDK |
A native iOS app | Client iOS SDK |
A Flutter (Android + iOS) app | Client Flutter SDK |
SDK comparison
SDK | Best for | Key capabilities | User management | Integration effort |
|---|---|---|---|---|
Client WebSDK | Custom web softphone / agent desktop | Register, answer, hangup, mute, hold, DTMF, diagnostics | You manage users via Subscriber Management API and your backend | Medium — you own UI + credentials/token flow |
Client Android SDK | Native Android apps | Outbound dial, incoming via push, mute/hold, call states | Subscriber Management API + subscriber_token from your backend | Medium–High — foreground service, FCM, permissions |
Client iOS SDK | Native iOS apps | Same as Android for iPhone/iPad | Subscriber Management API + subscriber_token from your backend | Medium–High — PushKit/APNs, mic & notification permissions |
Client Flutter SDK | One mobile codebase for Android + iOS | Cross-platform VoIP calling | Same subscriber + token model as native mobile SDKs | Medium — Flutter app + platform push setup |
CRM WebSDK | Embedding calling inside CRM / web portals | Softphone widget, inbound & outbound, click-to-call, IP ↔ PSTN toggle, CRM SSO | Exotel manages SIP ID & password. Provision via Customer → Application → Users APIs. Use email as app user ID. | Lowest — pass auth token + user ID |
User management comparison
Topic | Client Web / Android / iOS / Flutter | CRM WebSDK |
|---|---|---|
User model | Subscribers | Customer → Application → Users |
Who creates SIP credentials? | You create subscribers; auth via subscriber token | Exotel (on user creation) |
How agents start calling | Log in to your app → backend issues token → SDK initializes | Log in to CRM → SDK initializes & registers |
Multiple teams (e.g. Sales vs Support) | Separate subscriber groups / backends as needed | Create separate Applications under the same Customer |
Add users from Exotel dashboard? | Use Subscriber Management APIs | No — use APIs only |
Recommended by use case
Use case | Recommended SDK |
|---|---|
Fully custom web dialer UI | Client WebSDK |
Field agents on Android | Client Android SDK |
Field agents on iOS | Client iOS SDK |
Single mobile app for Android and iOS | Client Flutter SDK |
Softphone inside HubSpot, Freshdesk, Zoho, Salesforce, or custom CRM | CRM WebSDK |
Click-to-call from CRM contact pages | CRM WebSDK |
Agents switch between IP and PSTN when network is poor | CRM WebSDK |