๐Ÿค– The only softphone your AI assistant can install

Add a phone to your product
in one line of code

Drop the Dialerr softphone into any website as a floating widget. Your agents make and receive real calls without leaving the page โ€” no telephony stack to build.

<script src="https://dialerr.com/embed.js" data-key="pk_live_xxx"></script>
Next.jsReactViteWebflowPlain HTMLWordPress
Install

Three ways to add it

Same widget, your choice of workflow. All point at the same secure, per-domain key.

<script src="https://dialerr.com/embed.js" data-key="pk_live_xxx" data-token-url="/api/dialerr/token"></script>

Paste before </body>. Nothing to install or run โ€” it's the official Dialerr snippet, loaded from dialerr.com and sandboxed in an iframe. Your pk_ is publishable (safe in client code, like Stripe's). Drop data-token-url to let users log in inside the widget.

npx @dialerr/cli add

No key needed to start โ€” it opens a browser, you approve once, and it provisions a key and wires everything up (publishable key + secret land in your env; nothing sensitive on the command line). Already have a key? Add --key pk_.... Detects Next.js / Vite / CRA / HTML. Built for AI coding assistants โ€” see llms.txt.

claude mcp add dialerr -- npx -y @dialerr/mcp

Then just tell your assistant: โ€œAdd a phone dialer to my app with Dialerr.โ€ It provisions a key for you (you approve once in your browser โ€” sign in or create an account there) and installs the widget. Works with Claude Code, Claude Desktop, Cursor, and any MCP client. The server only talks to dialerr.com โ€” it reads no files and runs no commands.

npm i @dialerr/embed // render once near your app root import { DialerrToolbar } from '@dialerr/embed/react'; <DialerrToolbar dataKey="pk_live_xxx" tokenUrl="/api/dialerr/token" />

Typed, no build step, React as an optional peer.

Why Dialerr

The other options make you choose

SDKs give you power and weeks of build. Seat-based widgets work day one but chain every agent to a vendor account. Dialerr doesn't make the trade.

๐Ÿงฑ

vs. CPaaS SDKs

Twilio/Telnyx/Vonage hand you a Device object โ€” you build the UI, token server, and lifecycle yourself. Dialerr is a finished widget: paste one line, dial.

๐Ÿ’บ

vs. seat-based embeds

RingCentral/Zoom/Aircall embeds require every agent to hold that vendor's paid seat and log into it inside the widget. Dialerr signs agents in with a token minted by your backend โ€” no second login, no per-seat coupling.

๐Ÿค–

vs. everyone, on AI install

Telephony MCP servers expose API actions and assume you have keys. Dialerr's MCP is the only one that provisions the key itself โ€” approve once in a browser, and your assistant installs the rest. See the full comparison โ†’

Why teams use it

A full softphone, none of the plumbing

โšก

One line to install

A single script tag, CLI command, or React component. No SDK wiring.

๐ŸŽง

Real WebRTC calls

Browser-native inbound & outbound calling, SMS, voicemail โ€” no plugins.

๐Ÿงฉ

Any framework

Next.js, React, Vite, Webflow, WordPress, or plain HTML. It runs in a sandboxed iframe.

๐Ÿ””

Call events

React to call_connected, call_ended, sms_received and more in your own UI.

๐Ÿ”

Per-domain keys

Publishable + secret keys, locked to your domains. Short-lived tokens minted on your server.

๐Ÿš€

No rebuild

Ships from your account. Update once, every embed gets it โ€” nothing to redeploy on your side.

How it works

Live in three steps

1

Create a key

In Dialerr โ†’ Settings โ†’ API Access, add a key and list the domains allowed to embed it.

2

Add the snippet

Paste the script, run the CLI, or drop the React component. Add a tiny token route for seamless sign-in.

3

Call from your app

The ๐Ÿ“ž launcher appears. Agents dial from your page; call events flow back to your code.

Seamless sign-in

Sign your agents in automatically

Add one route on your backend that mints a short-lived token with your secret key. The secret never touches the browser.

// app/api/dialerr/token/route.ts (Next.js) export async function GET() { const r = await fetch('https://dialerr.com/api/v1/embed/token', { method: 'POST', headers: { Authorization: `Bearer ${process.env.DIALERR_SECRET}` }, body: JSON.stringify({ /* agentEmail: user.email */ }), }); return new Response(await r.text(), { headers: { 'content-type': 'application/json' } }); }
Try it

The widget on this page is real

This page embeds the actual Dialerr toolbar with the very snippet above. Look bottom-right โ†’ click the ๐Ÿ“ž launcher.

Get your key โ†’
Publishing your own page? Swap pk_live_xxx for a real publishable key and allowlist your domain in Settings โ†’ API Access. Your site must be served over HTTPS for the microphone.