CRM Call Widget
Your dialer,inside their CRM.
One script tag puts the whole TelVox seat inside the tools your agents already live in. Calls, dispositions, callbacks and breaks, without leaving the CRM.
Leads
- Ravi DeshmukhKisan Agro+91 98****41
- Priya NairSunfield Seeds+91 98****10
- Amit KulkarniDeccan Farms+91 97****28
Illustrative panel · sample values · simulated loop, hover to pause
The install
One script tag and one endpoint
The whole integration is about half a day for your CRM team. No SDK, no keypair ceremony, no new domain.
Add one script tag
In a footer template, a layout partial or your tag manager. That is the entire front-end change.
Add one endpoint
About five lines on your server. It answers "who is signed in?" and signs the answer with a shared secret.
Register your origins
Exact domains only, no wildcards. The browser refuses to render the widget anywhere else.
<!-- one script tag, on every page -->
<script src="https://dial.telvox.dev/widget/loader.js"
data-client-id="YOUR_CLIENT_ID"></script>
<!-- optional: only if your handoff route lives elsewhere -->
<script src="https://dial.telvox.dev/widget/loader.js"
data-client-id="YOUR_CLIENT_ID"
data-handoff-url="/your/custom/path"
data-handoff-method="POST"></script>That is the whole integration. A window.Telvox API is there when you want events, click-to-call and screen pop: read the quickstart.
What agents get
The full seat, in a small panel
Not a cut-down softphone. The widget is the same agent seat the workspace ships, shaped to live inside another product.
SSO handoff
Agents sign in through your login. No second password, ever.
Click-to-call scanner
Finds phone numbers on your pages and puts a call button beside each one.
Screen pop
Opens the matching record in your CRM when a call connects, routed client-side.
Dispositions & wrap-up
Every call closes on an outcome, same as the full workspace.
Callbacks with due chips
Scheduled callbacks surface inside the panel when they come due.
Breaks & approvals
Agents request breaks in the widget; supervisors approve from the command center.
Live stats
Calls, talk time and outcomes for the day, right in the panel.
Transfer & follow-ups
Warm transfer mid-call, WhatsApp and email follow-ups after it.
The live-call moment
A timer an agent reads two hundred times a day
So it does not move. A solid phase pill that never claims LIVE while the far end is still ringing, a large tabular timer, and mute, hold and transfer one tap away.
2:34
Priya Nair · +91 98****10
Illustrative panel · sample values
Three modes
As much or as little UI as your CRM wants
4:27
The whole console: calls, dispositions, callbacks, breaks and the agent's own figures.
One slim bar. The call stays visible; your CRM keeps the screen.
No panel at all. Click-to-call buttons and the JavaScript API, your UI on top.
Security
Built like something you embed in a hospital's CRM
An embed runs inside someone else's product, so the boundaries have to be structural, not polite.
The embed is pinned to you
A per-organisation frame-ancestors policy lists your exact origins. On any other page the browser refuses to render the widget at all.
Tokens die in 60 seconds
The handoff token is HMAC-signed by your server, valid for 60 seconds and single use. A replayed token is rejected at the exchange.
No PHI in your page
Call data renders only inside the iframe, a separate origin your analytics and session-replay tools cannot read. Events that cross into your page carry masked numbers only.
Revocation is instant
Signing out of your CRM ends the TelVox session, within about a second with backchannel logout. An admin kill switch revokes every widget session in the org at once.
The handoff, step by step
Your CRM server
GET /telvox/handoff
Answers "who is signed in?" from your own session, then signs the answer with your shared secret.
{ p, s } · HMAC-SHA256The widget iframe
dial.telvox.dev/widget/embed
Fetches the token same-origin, so your session cookie does the vouching. It holds no secret of its own.
valid 60 seconds · single useTelVox exchange
token → agent session
Verifies the signature, spends the token id, and signs the agent in. No second password exists.
replay rejected · kill switchWorks with your CRM
If it can load a script tag, it can host the widget
There is no per-CRM plugin to wait for. Any web CRM, helpdesk or homegrown tool qualifies, three ways in:
A page you control
Any web CRM, helpdesk or homegrown tool that lets you add a script tag can host the widget.
A footer template
Put the loader in a layout partial or persistent shell and the widget survives client-side navigation.
A tag manager
No template access? The loader ships fine through your tag manager, on every page.
Powered by your brand
Your customers see your product
Agencies and platforms resell TelVox under their own name. The widget's branding is set per organisation, so the panel inside your customer's CRM carries your mark, your accent and your product name.
Reselling TelVox under your own name? The panel carries your brand and accent per organisation, so your customers see your product, not ours.
FAQ
The questions integrators ask
An iframe the loader injects into your page, docked bottom-right. It is a separate origin pinned by a per-organisation frame-ancestors policy, which is what keeps call data out of your DOM and away from your analytics tools. There is no popup window to lose behind the CRM.
Put it in your CRM
Half a day for your CRM team. A dialer for every agent.
Also see pricing: widget seats are ordinary agent seats.