Conversation History & Status
How much history the chat tab loads, how timestamps and typing indicators work, what the online dot means, and how a visitor's conversation survives between visits.
Overview
The chat tab is built around one long-lived conversation per visitor. This article explains what a visitor sees when they come back — how much of the past loads, what the live signals mean, and what happens to their history over time.
How Much History Loads
Opening the chat doesn't load everything ever said. It loads a recent window:
20 messages
The most recent messages in the thread.
Last 14 days
Only messages from the past two weeks are loaded initially.
A button at the top of the thread loads 20 more at a time, going back as far as the conversation goes. Its label depends on what's on screen:
- "Load more messages" — there are messages loaded, and more exist above them.
- "Show older messages" — the thread is empty because everything in it is older than 14 days.
Timestamps and Date Separators
Timestamps are relative and update themselves as the visitor watches:
just now → a few seconds ago → a minute ago → N minutes ago → an hour ago → N hours ago → yesterday → N days ago
Messages are grouped by day with a separator between groups: Today, Yesterday, the weekday name for anything in the past week (e.g. Monday), then a date like Mar 12 — and Mar 12, 2024 once it crosses a year boundary. Times and day names follow the language the widget is showing.
Live Signals
Typing indicator
When an agent is typing, the visitor sees three bouncing dots in the agent's card, with the agent's photo in the margin.
Typing works in the other direction too: your team sees when a visitor is composing a reply. See Chat Actions.
Read receipts
Yaplet marks your messages as read when the visitor actually looks at them — when they open the chat tab, when they switch back to your browser tab, or when a message arrives while the chat is already open and visible.
Notification sound
A short sound plays when a message arrives from your side.
Unread badge
A red count appears on the Messages icon in the floating dock when new messages arrive while the visitor is on the page.
The online dot
The dot on the header avatar shows whether a person is around. What it means depends on who is answering:
| Who is answering | Dot |
|---|---|
| A human agent | Green if that agent is Online, red if they are Offline |
| Nobody yet — the visitor is waiting for a human | Green if anyone on your team is Online, red if nobody is |
| Vex, the AI | Green if anyone on your team is Online, no dot if nobody is, never red |
"Online" is each team member's own Online/Offline switch, which they set by hand in the dashboard's user menu or in the mobile app. Nothing sets it automatically, so a teammate who forgets to switch to Offline still shows as available. Who counts is explained in Email, Ratings & Agent Handoff.
The header shows the avatar with its dot, and next to it the name with a status line underneath. The text changes with it: the assigned agent's name with "Live support team member" once someone takes the conversation, "Waiting for an agent..." while a request is pending, or Vex the rest of the time — with "AI assistant · replies instantly" while the AI answers (the disclosure the EU AI Act asks for), or "Our bot will reply instantly" otherwise.
Persistence and Identity
Anonymous by default
A visitor can open the chat and start typing immediately. No name, no email, no signup, no consent step. Yaplet creates an anonymous visitor record behind the scenes — the country is derived from the connection, and nothing else is known until the visitor tells you or your site identifies them.
Detected crawlers and bots never get a visitor record at all, so they don't pollute your Visitors list under Audience → Visitors.
How the conversation is remembered
The widget stores a token in the browser's local storage that ties the visitor to their thread. It's valid for 90 days and refreshes as they keep using the widget, so an active visitor stays recognized indefinitely.
Cookies are off by default. Your site can opt into an additional year-long cookie through the SDK if you want identity to persist more aggressively.
Identified visitors
If your site knows who the user is, it can identify them through the Yaplet SDK — but the call is rejected unless it carries a valid userHash. That hash is an HMAC-SHA256 of the user id, computed on your own server with the widget's identity secret and passed as the third argument to Yaplet.identify(). Without it the person stays an anonymous visitor and the SDK prints an error in the browser console.
The identity secret is on Brand → Chat widget → Install → Identity verification. Once a call is accepted, the conversation is attributed to that person — so their chat history follows them across devices instead of being tied to one browser.
Your team can also fill in details from their side; see Editing Visitor Information.
Staying in sync
The widget re-checks for new messages when the browser tab regains focus, so a visitor who's been away on another tab sees an up-to-date conversation on return rather than a stale one.
Erasing history
Visitors don't have a delete button. Removing a conversation is done from your side — see Erase Visitor Data for the GDPR-compliant path.
Conversations that go unused for a long time are also deleted automatically, on a schedule that depends on your plan. The exact retention periods are on GDPR & Data Privacy.