---
title: Which Voice SDK should I use?
slug: voice-apis/which-voice-sdk-should-i-use
createdAt: 2026-08-10T07:14:52.921Z
---

# 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**         |

***

## Related docs

- [Voice SDKs](https://docs.exotel.com/voice-apis/voice-sdks)
- [IP-PSTN intermix: Customer onboarding and WebRTC SDK integration](https://docs.exotel.com/voice-apis/ip-pstn-intermix-customer-onboarding-and-webrtc-sdk-integration)
- [Subscriber Management API](https://docs.exotel.com/voice-apis/subscriber-management-api)
