telvox

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.

crm.acme.com/leads

Leads

  • Ravi Deshmukh+91 98****41
  • Priya Nair+91 98****10
  • Amit Kulkarni+91 97****28
telvoxdialready
Today38 calls · 1:42 talk
On break Go Ready

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.

01

Add one script tag

In a footer template, a layout partial or your tag manager. That is the entire front-end change.

02

Add one endpoint

About five lines on your server. It answers "who is signed in?" and signs the answer with a shared secret.

03

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.

LIVE

2:34

Priya Nair · +91 98****10

MuteHoldTransfer
End call

Illustrative panel · sample values

Three modes

As much or as little UI as your CRM wants

Telvox.state() → 'full'
telvox dial
LIVE

4:27

MuteHoldXfer

The whole console: calls, dispositions, callbacks, breaks and the agent's own figures.

Telvox.state() → 'compact'
4:27Priya N.

One slim bar. The call stays visible; your CRM keeps the screen.

Telvox.state() → 'hidden'
Ravi D.+91 98****41
Priya N.+91 98****10

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

Step 1

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-SHA256
Step 2

The 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 use
Step 3

TelVox exchange

token → agent session

Verifies the signature, spends the token id, and signs the agent in. No second password exists.

replay rejected · kill switch

Works 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.

telvox dial
Go Ready

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.