Ways to embed a softphone in your app — an honest comparison
You want your agents to make and receive calls inside your own website or app. As of mid-2026 there are four ways to get there, and they differ enormously in effort, per-agent cost, and whether an AI coding assistant can do the install for you.
The landscape at a glance
| Product | Finished drop-in widget? | Per-agent vendor seat + login? | Key / auth model | AI-assistant install (MCP · llms.txt · CLI) |
|---|---|---|---|---|
| Dialerr Embed | Yes — one script tag | No — your backend signs agents in with a minted token | Publishable pk_ + secret sk_, per-domain allowlist, short-lived tokens (Stripe-style) |
MCP server that provisions keys · install-grade llms.txt · CLI with browser device-flow |
| RingCentral Embeddable | Yes — script tag / iframe | Yes — each agent needs a paid RingCentral seat and signs into RC inside the widget | Developer-app Client ID registration | None found for the widget |
| Zoom Phone Smart Embed | Yes — iframe/snippet | Yes — Zoom Phone license per user + Zoom sign-in | Domain allowlist managed in the Zoom admin console | None found |
| Aircall Everywhere / JustCall Dialer SDK | Partially — npm/iframe SDK embedding the vendor's phone app | Yes — per-agent vendor subscription | Vendor account login | JustCall has an MCP for API actions (needs pre-existing keys); not for widget install |
| Twilio / Telnyx / Vonage / Plivo Voice SDKs | No — JS SDKs; you build the UI, token server, and lifecycle yourself | No (your own auth) | You design and operate it | Twilio & Telnyx have strong MCP/llms.txt for their APIs — they still hand you an SDK, not a widget |
| SignalWire call widget | Yes, but visitor-facing (click-to-call into call flows/AI agents) | — | Static c2c_ tokens |
Not for widget install |
| Bitcall (Bit Dialer) | Yes — one-line script tag | Configured with SIP credentials per user | API key in the page config | Has llms.txt (docs answers); no MCP, no CLI, no device flow |
| HubSpot Calling SDK / Salesforce Open CTI | The inverse: frameworks for telephony vendors to embed into the CRM — not for adding calling to your own product. (Salesforce has announced Open CTI's retirement.) | |||
Comparison reflects public docs and product pages reviewed in July 2026. Vendors change — check their current docs. If we got something wrong, tell us: support@dialerr.com.
The three questions that actually decide it
1. Widget or SDK?
CPaaS SDKs (Twilio Voice JS, Telnyx WebRTC, Vonage) give you a Device object and no UI.
You build the dialer interface, a token-vending server, device lifecycle, and edge cases — typically weeks of engineering
before an agent makes their first call. A finished widget (Dialerr, RingCentral Embeddable, Zoom Smart Embed) works the day you paste it.
2. Who pays for — and logs into — each seat?
This is the structural difference people miss. With RingCentral, Zoom, Aircall, or JustCall embeds, every agent needs that vendor's paid seat and must sign into the vendor's account inside the widget — you're embedding their phone system, wearing their login. With Dialerr, your backend mints a short-lived token for whichever of your agents is signed into your app; the widget just works. No second login, no per-seat vendor account coupling.
3. Can an AI assistant install it?
In 2026 a lot of installs are done by Claude, Cursor, or Copilot. Cautious assistants refuse unfamiliar CLIs and won't paste
live secrets into commands — so how a vendor packages install matters. Telephony vendors now ship MCP servers, but every one we
reviewed exposes API actions (send SMS, buy numbers) and assumes you already have keys. Dialerr's MCP is the only one we
found that provisions the key itself — the assistant requests it, the human approves once in a browser, and the widget gets
installed with nothing sensitive ever touching a command line. The same flow powers npx @dialerr/cli add, and
dialerr.com/llms.txt is a complete install document, not a doc index.
When Dialerr is not the right pick
- You already run RingCentral/Zoom company-wide and every agent has a seat — their embeds keep you in one ecosystem.
- You need deep custom call-flow logic and want to own every pixel and packet — a CPaaS SDK is the power-tool path.
- You want a visitor-facing “call us” button rather than an agent softphone — that's the click-to-call category (SignalWire's widget, CallPage, etc.).
Try the one-line install
The widget on the overview page is live. Install options — script tag, npx @dialerr/cli add,
npm i @dialerr/embed, or claude mcp add dialerr -- npx -y @dialerr/mcp — are in the docs.