> ## Documentation Index
> Fetch the complete documentation index at: https://docs.replybubble.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Widget Features

> What visitors can do in the chat widget

An overview of the visitor-facing features built into the chat widget. For features covered in depth elsewhere, this page links out rather than repeating them: live agent takeover is in [Human Handoff](/human-handoff), the in-widget help center is in [Help Center](/help-center), meeting scheduling is in [Meeting Booking](/booking), and AI-triggered actions are in [Custom AI Actions](/custom-actions).

***

## File attachments

Visitors can attach a file to a message using the paperclip button in the composer. Limits:

* **Max size:** 10 MB per file
* **Allowed types:** images (PNG, JPG, GIF, WebP), PDF, TXT, CSV, and ZIP/Office documents

Uploaded files are validated by content (magic bytes), not just file extension. Each workspace has a daily upload budget to cap total storage growth from unauthenticated visitor uploads.

## CSAT rating

When a conversation closes and the visitor engaged with it, a satisfaction-rating card appears: five emoji ratings (1–5) plus an optional comment. The rating is sent as soon as the visitor picks it, so an abandoned comment still counts.

## Email transcript

Once a conversation is closed, visitors see an **"Email me a transcript"** button. Clicking it opens an inline email field; submitting sends the full conversation transcript to that address.

## Conversation history

Returning visitors can open a history view listing their past conversations with the workspace, including a "closed" badge for finished ones. Selecting one restores it as the active conversation (read-only if it's closed); a **"Start new"** option begins a fresh conversation.

## Message reactions

Visitors can react to individual assistant messages with a thumbs up or thumbs down, optionally adding a comment.

## Emoji picker

The composer includes a zero-dependency emoji picker: a search box, a curated category grid, and a "recently used" tab backed by `localStorage`. Selecting an emoji inserts it at the caret and returns focus to the composer.

## Message delivery status

Sent messages show a delivery indicator: sending, sent, delivered, or failed (with a retry option on failure).

## Typing indicators

The widget shows a typing indicator both when the AI is composing a response and when a live agent is typing during a [human handoff](/human-handoff).

## Notifications and mute

When the widget is minimized or the visitor's tab isn't focused, new messages trigger:

* An **unread badge** on the launcher bubble (capped at "9+")
* A **browser tab title flash** ("(New message) ...") that stops once the visitor returns
* An optional **notification sound**, workspace-configurable, with a 3-second cooldown between plays

Visitors can mute the sound with a speaker toggle, shown only when the workspace has sound notifications enabled. The mute preference persists per widget.

## Dark mode

The widget can follow the visitor's OS-level color scheme (`prefers-color-scheme`) or be forced to a fixed light/dark theme — see [Customization](/customization).

## Fullscreen

If enabled for the workspace, visitors can expand the widget to a fullscreen panel using a maximize button in the header. The expanded state persists across a page session and traps keyboard focus (Tab) inside the panel while active; Escape exits fullscreen before minimizing the widget.

## Languages

The widget ships with 15 locales: Arabic, German, English, Spanish, French, Hindi, Italian, Japanese, Korean, Dutch, Polish, Brazilian Portuguese, Russian, Turkish, and Simplified Chinese. Arabic renders right-to-left automatically.

<Info>
  Non-English widget UI translations are a **Pro** plan feature — Free-plan workspaces always show
  the English widget regardless of visitor locale. See [Billing & Plans](/billing-and-plans).
</Info>

## Accessibility

The widget uses an `aria-live` region to announce new messages, handoff state changes, and typing status to screen readers. Interactive controls (mute toggle, maximize/minimize, dismiss buttons, emoji picker) carry `aria-label`/`aria-pressed` attributes, and the emoji picker and fullscreen panel support full keyboard navigation.
