The three chat surfaces
An end user meets your agent in one of three places. The web widget and the full page are the same chat rendered in different frames, so almost everything on this page applies to both. WhatsApp renders the same flow through WhatsApp messages, and the differences are called out where they matter.
The header of the widget and the full page shows the agent’s avatar and name from the Design page. The Menu button opens Restart, Download transcript, and, when the header auto-play toggle is on, Turn on auto-read. A Draft preview badge appears only when a member opens a draft preview link. When the Footer disclaimer field on the Design page has text, that text sits under the composer, for example “Tars can make mistakes.”
Message types
Every message sits in a bubble on the left for the agent and on the right for the end user. A message from a human agent shows that person’s name above it. Times show on the end user’s messages and under the latest agent message. Media messages, such as an image, a video, an audio clip, or a PDF, render as attachment cards, and images open in a full-screen gallery. Between the bubbles the conversation shows centered pills for changes of control. Examples the end user can see are Alex Morgan joined, Alex Morgan left, Conversation resolved, Handed back to bot, Livechat ended, and Bot resumed. When the AI cannot answer, a pill reads Couldn’t reach the assistant with a retry action. While a human agent handles the conversation, hovering a message shows a Reply to message button. The quoted message appears above the reply, and selecting the quote scrolls back to the original.Typing and streaming
Flow messages arrive with typing dots before each bubble, in the order and with the delays set in the builder. While an AI Agent gambit works, the end user sees a thought pill that cycles through short status phrases. If AI reasoning is hidden, plain typing dots show instead. The answer then streams in as the AI writes it, and incomplete Markdown renders cleanly during the stream. When the turn ends, the pill reads Thought for 3s and expands into the reasoning. What the end user sees here is controlled by three switches on the Debug tab of the Configure page.- Show AI reasoning to visitors is on by default and controls the thought pill.
- Show tool calls to visitors is off by default and lists each tool the agent called. Show tool calls needs AI reasoning on. Turning reasoning off disables the switch and clears it.
- Show knowledge citations is off by default and shows numbered citation chips that open the source. On WhatsApp, the same switch controls whether a numbered Sources list is added below the answer.
How input types render
An input gambit renders its answer control on the gambit’s own message, and the composer stays available for a typed answer where the type allows it. After the end user answers, the control locks in place and shows every choice that was made, so the transcript stays readable. The builder side of each type is in Gambit mastery. When the gambit has Allow Skip on, its last message reads “You can skip this by clicking on →”, and an arrow button in the composer moves on without an answer.
On WhatsApp, every question carries text. When a gambit has no message text, WhatsApp shows a default that says what to do.
WhatsApp limits the length of a message. A text message longer than 4,096 characters arrives as up to three messages, and text past the third message is not sent. A question can be too long for its buttons or list. The question text then arrives first as a plain message, and the buttons or list follow with the default text above.
The Media Upload drop zone shows the file types and the maximum size the gambit allows, so the end user knows the limits before choosing a file. If the browser cannot provide a location, the Geo Location control shows a plain error such as Location access was denied. Please allow location access and try again.
Generative interfaces
An AI Agent gambit can generate interface components inside a reply instead of plain text. Interacting with a component sends the result back to the agent as a normal reply, and the component then freezes like an input gambit does.File uploads outside a Media Upload gambit
While an AI Agent gambit is running, or while a human agent has control, the composer shows an Attach files button. Chosen files appear in a tray above the composer with a remove action for each, and they upload as soon as they are added. The end user then sends the message with the files attached. During a scripted flow the composer has no attach button, and files come in through a Media Upload gambit instead. Each file in the tray shows its name and a status. While it uploads, the status reads uploading with a spinner, and an image preview pulses until it is ready. A finished file shows its size, and a failed one shows failed with the message Upload failed. Remove the file and try again. The send button stays disabled until every upload has finished, and removing a file from the tray deletes its upload. A message carries at most 10 attachments, and each file can be at most 10 MB. A larger file is refused with a message that names the file and the Max 10MB cap. An eleventh file shows Max 10 attachments per message. Whether the agent can read an attached file depends on its File Reading tool. See Built-in AI capabilities.Consent and OTP inside the conversation
Consent and OTP verification happen inside the conversation, not on a separate page. The switch Require Data Consent lives in the General tab of the Configure page. When it is on, the first thing the end user sees is the consent message with Accept and Decline pills. The composer is blocked until one is chosen. After a choice the pills lock in place and the conversation continues or ends. How consent is stored is described in Consent. When a Text gambit of the email or phone subtype has Verify via OTP on, the end user first types the address or number. The composer then turns into six digit boxes labeled 6-digit verification code. Under them sit a Go back button and a Resend code link that counts down before it can be used again. Too many wrong codes lock the boxes until a new code is requested. If the page reloads mid-verification, the same attempt resumes.Human handover
When the flow escalates to live chat, a centered card with a dashed border shows the Connecting Message of the Live Chat gambit. A new Live Chat gambit fills it with Connecting you to a human agent…. Under it a note readsTypically <1 min. When the human agent accepts, the card changes to Alex Morgan joined, with the fixed subtitle Support specialist and the time.
While the human agent types, an indicator with their name and avatar appears at the bottom of the conversation.
When the human agent hands the conversation back, a Handed back to bot pill appears and the flow continues. If the inbox has the CSAT survey on, a survey card asks How was your conversation experience with us? after the live chat closes. That card is described in Collect CSAT ratings.
Restarts and past conversations
The Restart item in the header Menu starts a fresh conversation from the beginning of the flow. The earlier conversation stays in the end user’s list, and the member still sees it in the Activity tab. In the widget, the Conversations back arrow opens a list of the end user’s earlier conversations with the agent, each with its last message preview. On the full page the same list is the sidebar. Selecting a conversation that is still open returns to it, and selecting a closed one opens it read-only. An empty list reads No conversations yet. When the end user’s most recent conversation was resolved, opening the chat again starts a new conversation instead of resuming an older open one.Voice playback and voice input
The Voice & Audio tab of the Configure page turns on text-to-speech and speech-to-text for an agent. Both are on for an agent that never changed them. With text-to-speech and Per-Message Speaker Icons on, each AI message gets a Read aloud button in its toolbar. On the last message of a run, the button reads the whole run in order, and a ring marks the message being read. With Header Auto-Play Toggle on, the header Menu gains Turn on auto-read, which plays every new agent message automatically. Auto-read starts off on every visit. The choice lasts for the browser tab and applies to that agent only. With speech-to-text on, a Voice input microphone button appears in the composer. The end user records, selects Stop recording and transcribe, and the transcribed text lands in the composer for review before sending. If the browser has no microphone permission, the button tooltip reads Microphone access denied.Language
The conversation language comes from the embed configuration, the page URL, or the browser, and a Language gambit lets the end user switch mid-conversation. Once a language is chosen, every gambit text that has a translation shows in that language, and the choice stays visible as a locked pill in the transcript. Right-to-left text is detected per message. When the Language gambit does not allow free text, the composer accepts only the language picker. Setting this up is covered in Build a multi-language agent.Link safety and sanitized content
External links never open directly. A dialog titled Open External Link shows the destination first, and the end user can choose Copy Link or Open Link. Chat content is sanitized before display, and PDF attachments render in an isolated frame.Accessibility
- A Skip to chat input link lets keyboard end users jump straight to the composer.
- Keyboard focus stays inside the open widget while it is open.
- Screen readers receive message and status announcements, and every icon button has a spoken label.
- The chat honors the reduced-motion preference and turns off bubble and typing animations.
