Web chat runs on the same managed conversations as two-way texting, so everything you know about conversations, memory, and the Messages API applies here too. Web chat messages appear in your Message Logs and Conversations pages with a Web badge.
How it works
- You enable the widget on an agent and list the websites it may run on.
- You paste one line of code into the website.
- Visitors click the bubble and chat. Replies come from your agent’s prompt, knowledge bases, and tools, with the recent conversation kept in context per visitor.
- Every conversation shows up in your dashboard under Conversations, and each message in Message Logs.
Setup
1
Turn on the widget
Open your agent, go to the Widget tab, and list the website domains the widget is allowed to run on (one per line, for example
www.example.com). Click Turn on the widget.2
Copy your embed code
The tab now shows your embed code. Copy it. It looks like this:
3
Paste it into the website
Paste the snippet once, ideally right before the closing
</body> tag, on every page where the widget should appear. Most site builders and CMSs have a “custom code” or “scripts” area for this.Make it yours
Everything visual is configurable on the agent’s Widget tab, with a live preview:- Display name and avatar image shown in the chat header
- Button label on the floating bubble (for example “Chat with Ava”)
- Welcome message shown when a visitor opens the chat for the first time
- Accent color, position (any corner), and light/dark theme
- Message placeholder text in the input
The web chat prompt
Replies use the agent’s Web chat prompt (set on the Widget tab) when you’ve added one, and otherwise fall back to the agent’s main prompt — so the widget works out of the box on any agent. Add a web chat prompt when website chat should have its own tone or rules, separate from calls and texting.Knowledge bases and tools in chat
Web chat uses the same knowledge bases and custom tools as the agent’s voice calls — there is nothing separate to set up. Attach a knowledge base or add a tool to the agent, and chat picks it up automatically.- Knowledge bases — chat looks up relevant information from the agent’s attached knowledge bases when answering, using the agent’s existing retrieval settings. Keep reference content (product details, policies, FAQs) in a knowledge base so it stays current without editing the prompt.
- Custom tools — when the conversation calls for it, chat invokes the agent’s custom tools (for example booking an appointment, requesting a callback, or looking up live data from your systems) and uses the result in its reply. The tool’s webhook receives the same request shape as on a call, with
callIdset tonullandconversationIdandchannel(web_chat) identifying the chat thread instead. - Live data — for values that change minute to minute (inventory, pricing, availability), a custom tool pointed at your own API is the best fit; the agent fetches fresh data at the moment it’s asked. Knowledge bases are best for content that changes occasionally.
What chat knows automatically
Each chat reply is generated with:- The current date and time in the agent’s timezone, so rules like opening hours or seasonal schedules apply on their own. You can also place
{{current_time}}anywhere in the prompt to control exactly where it appears. - The page the visitor is on (title and URL), so the agent can speak to what they’re looking at — a specific product or listing, for example. Available in the prompt as
{{page_context}}if you want to reference it explicitly. - The agent’s default variables, which render into the prompt with
{{variable}}templating, the same as on calls.
Voice calls
Let visitors talk to your agent by voice, right in the browser. Turn on Voice calls on the agent’s Widget tab and a call button appears in the widget next to chat.- Nothing to install for your visitors. They click the call button, allow their microphone, and start talking. The call happens in the browser, so there is no phone number and no ringing.
- Same agent, one place to manage. A voice call uses the same prompt, voice, and settings as the agent’s phone calls. Pick a professional voice on the agent’s Voice tab.
- Everything is recorded like a normal call. Voice widget calls show up in your Call Logs with full transcript, recording, and webhooks, exactly like phone calls. They’re marked as web calls (a
sourceofweb_widgetin the API), so you can tell them apart from phone calls at a glance. - Calls continue across pages. If a visitor clicks to another page or reloads mid-call, the same call picks back up automatically in a few seconds, with the same conversation in progress. No redial, no starting over. If they’re gone longer and the call has already wrapped up, coming back within a couple of minutes quietly starts a follow-up call where the agent picks up right where things left off (the two calls are linked in the API via
continuedFromCallId). On by default; turn off Resume calls across pages on the Widget tab to make each page a fresh call. - Chat and voice share one memory. The agent treats a visitor’s chat messages and voice calls as one ongoing relationship: on a call it already knows what was discussed in chat, and back in chat it remembers what was said on the call. Clearing the visitor’s conversation clears all of it. On by default; turn off Share memory between chat and voice on the Widget tab to keep them separate.
- HTTPS required. Browsers only allow microphone access on secure (https) pages, which any live website already uses.
Voice is off by default. Text chat keeps working whether or not you enable voice. You can offer chat only, voice only, or both.
Memory and conversations
The widget remembers each visitor automatically. A visitor who browses five pages, leaves, and comes back tomorrow continues the same conversation with full context. Voice calls are part of that same memory: after a call, the chat knows what was said, and the next call knows what was typed.- Threads appear on the Conversations page (and the Conversations API) alongside your texting threads, marked Web.
- After a period of inactivity the conversation starts fresh, using the same per-agent idle window as texting. See Managing conversations.
- Clearing a thread from the dashboard makes that visitor start over as brand new.
Staying in control
- Allowed websites. The widget only runs on the domains you list. On any other site it stays hidden and prints a short explanation in the browser console for your web team.
- Sensible limits. Conversations have per-minute and per-day message budgets so a stuck script or bad actor can’t run up your usage. Visitors see a friendly “come back later” note if a limit is reached.
- No secrets in the page. The embed key in your snippet is public by design and only works on your allowed domains.
Troubleshooting
The bubble doesn’t appear
Solution:- Open the browser console on the page. The widget logs one line explaining exactly why it did not start (domain not on the allowlist, widget turned off, or an invalid key) and what to change.
- Confirm the widget is on: agent Widget tab, the switch at the top.
- Confirm the page’s domain is listed under Allowed websites. Subdomains count separately, so
www.example.comandexample.comare different entries.
Replies stopped coming
Cause: the conversation hit its per-minute or daily message budget, or the site is offline. Solution: wait a moment and try again. Budgets reset automatically. If it persists, check the conversation on the Conversations page.The website has a strict Content Security Policy
Solution: allowhttps://widget.revring.ai in script-src and https://api.revring.ai in connect-src.
Next steps
Two-way texting
The same conversations and memory, over SMS
Conversations API
List and clear conversation memory programmatically
Prompting & Variables
Shape how your agent talks
Webhooks
Connect conversations to your systems