Platform · Widgets
Voice and chat on your site, in one drop-in.
The same Vocily AI agent that handles your calls can answer questions on your website — by text or by voice — without your team building a chat UI.
Problem · Solution
The problem today
Your phone agent, your website chat, and your WhatsApp bot are usually three different products with three different brains. A visitor who started in chat ends up repeating themselves to the phone agent. The WhatsApp bot quotes last quarter's pricing because nobody copy-pasted the latest. Building a custom widget — chat UI, voice UI, mic permissions, transcript rendering, mobile fallbacks — takes a sprint nobody on your team has. Adding WhatsApp on top is another quarter of work.
How Vocily AI handles it
One drop-in, two modes
A single widget supports threaded chat and browser voice. Visitors type or tap the mic; the same agent answers either way.
Same agent as your calls
The widget runs the agent you've already defined — same KB, same tools, same escalation rules. No 'website version' to keep in sync.
Configurable per agent
Welcome message, voice, enabled modes (chat / voice / both), and accent are set on the agent — change them once, they reflect on the widget.
Session-scoped tokens
Each widget session opens with a short-lived token bound to a widget id. No long-lived API keys ever ship in browser code.
Web and mobile, no install
The widget works in desktop and mobile browsers — no app to download, no SDK to compile, no native build steps.
WhatsApp Business as a sibling channel
The same agent runs on WhatsApp via Twilio's WhatsApp Business API — interactive buttons, templates, media. Shares prompt, KB, and tools with phone + web channels.
What's in it
What's in the widget.
A small embed footprint with full chat + browser-voice capability — and no permanent credentials in browser code.
Modes
What a visitor can do once the widget opens.
- Chat
- Threaded text conversation with the agent, full transcript persisted.
- Browser voice
- Mic-to-mic voice with the agent — no install, no plugin.
- Switch in-session
- Visitor can swap between chat and voice without losing context.
- Escalate
- Chat or voice session can hand off to a teammate's number per agent rules.
Customisation per agent
Configured once on the agent, reflected on every widget instance.
- Welcome
- First message the visitor sees when the widget opens.
- Voice
- Same TTS voice as the agent's calls — Cartesia, ElevenLabs, Sarvam, or Smallest.
- Languages
- Same languages as the agent — visitor's input language is matched live.
- Modes
- Chat-only, voice-only, or both — toggled per agent.
Session security
What ships in the browser and what stays on the server.
- Widget ID
- Public identifier that picks the agent — safe to ship in browser code.
- Session token
- Short-lived, bound to one widget id and one session — generated server-side.
- Workspace credentials
- Never appear in the browser. Token issuance is server-to-server.
- Origin allowlist
- Restrict which sites can open a session for a given widget id.
Integration
What it takes to embed.
- Embed
- Script tag + widget id. No build step, no framework lock-in.
- Browsers
- Modern desktop and mobile browsers. Voice needs mic-permission grant.
- Position
- Floating bubble or inline container — choose per page.
- Events
- JS callbacks fire on open, message, voice start/stop, escalation, close.
WhatsApp Business
Same agent, native messaging channel.
- Provider
- Twilio's WhatsApp Business API.
- Messages
- Interactive buttons, templates, media — full rich-message support.
- Shared brain
- Same prompt, KB, and tools as your phone + web channels.
- Sessions
- Multi-turn conversations persisted on the workspace; user identity carries across.
On your site
A live widget your visitors can actually talk to.
One drop-in, two modes. Visitors can type a question or hit the mic to talk — the agent answers in real time using the same knowledge base and tools that power your phone calls.
Chat
Type to chat with the agent.
Common questions
What teams ask before they switch.
A small script tag and the widget id from your workspace. No build step, no framework dependency.