UX & Engagement — Conversion levers in the chat widget
In the Widget Editor under Settings → Widgets → [Your Widget] → UX & Engagement, you will find a collection of switches that specifically improve conversion and ease of use. Defaults are privacy-first — features with privacy implications are turned off by default.
Launcher
Response Time Pill (show_response_time_indicator)
Displays an estimated response time as a small pill above the chat bubble — e.g., "Response in ~3 Min." Calculated as the average of all first responses over the last 7 days. Aggregate value, no PII. Default off.
Useful if your response times are reliably short — it builds trust directly. If your response times vary significantly, it's better to leave it off, as a false expectation is worse than no display.
Agent Identity in Launcher (show_agent_identity_in_launcher)
Displays the first name + avatar of available agents in the launcher. On hover, the stack ("Marc + Lisa + 3 others") becomes visible. Default off (employee PII).
Double Opt-In: In addition to the widget toggle, each individual agent must activate public_display in their profile. Without this second check, the agent will not be exposed. This protects against a tenant owner inadvertently making employee names public.
Engagement / Conversion
Quick-Action Cards
Up to 6 cards on the HomeScreen with configurable actions:
| Action Type | Behavior |
|---|---|
chat | Switches to the chat view |
kb | Opens the Knowledge Base |
external_link | Opens any URL in a new tab |
booking_link | Opens a booking link — only allowlisted hosts (Calendly, cal.com, SavvyCal, TidyCal, Acuity) |
email | mailto: link with optional subject |
prefilled_chat | Switches to chat and seeds the composer with a predefined text |
Editor: UX & Engagement → Quick-Actions. For prefilled_chat, you can set a prompt ≤ 500 characters.
Exit-Intent Trigger
A new trigger condition exit_intent fires when the mouse cursor leaves the browser window above the top edge — the classic "visitor is about to leave" signal. Instead of directly opening the chat, the trigger can set a context-specific greeting bubble.
In the trigger editor: new triggers → condition Exit-Intent → action Set Greeting → define text. This way, visitors who want to navigate away get an alternative entry point instead of an opened chat window.
Persistent Chat Resume (enable_persistent_resume) ⚠️ GDPR-relevant
Allows visitors to resume an ongoing conversation across page reloads, new tabs, and new browser sessions. Default off.
How it works:
- Tenant activates
enable_persistent_resume. - As soon as the visitor sends their first message, the widget displays a consent strip with an email field.
- Upon consent, SilentChat saves a signed token (HMAC-SHA256, per-tenant secret, 30-day hard cap server-side) in the visitor's localStorage and an email hash (SHA-256 with per-tenant salt) in the
visitorstable. The plaintext email is not additionally indexed. - On the next visit, the widget loads the last conversations and shows a "Welcome back" banner.
GDPR obligations:
- Legal basis: Art. 6 (1) lit. a GDPR (consent).
- Supplement the privacy policy: mention storage duration (30 days), stored data (token + email hash), revocation at any time in the widget.
- Cookie/consent banner: mention under "Functional".
- Revocation: removes token + email hash; existing conversations remain according to the general storage duration configuration and are still subject to the right to deletion/export.
If the GDPR obligations are too much effort, leave the feature off — the value is high for recurring support cases, but not a must.
Ease of Use
Drag & Drop for Files (enable_drag_and_drop_upload)
Dragging a file into the chat window triggers the same upload path as the paperclip button. The drop overlay appears as soon as a file is moved over the chat window. Default on.
Sound Toggle in Chat Footer (enable_sound_toggle_in_footer)
Bell icon in the chat header. Click mutes the notification sounds per session. Persists in the visitor's localStorage. Default on.
Open Hotkey (enable_open_hotkey)
Opens the widget with / or Ctrl+K / Cmd+K. Blocked in <input>, <textarea> and contenteditable elements so that keyboard inputs are not intercepted. Default off, because / conflicts with site search shortcuts on some pages (GitHub, Notion …).
Mobile Swipe-to-Close (enable_mobile_swipe_close)
On mobile (≤480px), the visitor can swipe the widget away with a touch gesture:
- Floating mode → swipe down
- Right side panel → swipe right
- Left side panel → swipe left
Threshold: 80 pixel displacement. Deactivated on desktop so that trackpad inertia does not accidentally close. Default on.
Agent Tools
Inline Booking Card
In the composer (agent inbox), the calendar button opens a dialog where you insert a booking link (Calendly, cal.com, SavvyCal, TidyCal, Acuity — other hosts are rejected by the backend). Instead of a bare link, the widget renders a booking card with a clickable CTA button for the visitor.
No tenant toggle needed — the agent decides per message.
Frequently Asked Questions
How do I measure if the UX levers improve conversion? Observe over ~1 week: open rate (launcher clicks/page views), first message rate (conversations with ≥1 visitor message / open clicks), resume acceptance rate (consent accepted / consent shown) as well as which quick-action cards are clicked most frequently.
Does the response time pill make sense if I am offline at night? Yes — the pill only considers conversations with measurable first response time. Outside of service hours, the widget already shows the offline notice and automatically suppresses the pill.
What happens to the resume token when the general chat consent is revoked? Upon revocation, resume tokens and email hashes are removed from the browser + the visitors table, along with all other visitor data.
Can I expand booking card hosts? Currently, the allowlist is static: Calendly, cal.com, SavvyCal, TidyCal, Acuity. If you need further providers, please contact support.