> For the complete documentation index, see [llms.txt](https://shoppad.gitbook.io/yedric/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://shoppad.gitbook.io/yedric/going-further/live-chat.md).

# Live Chat

Live chat puts a person on the other end of the widget. A visitor talking to your assistant can ask for a human, and the same panel becomes a conversation with one of your teammates, without a redirect and without leaving your site. Your team answers from a dashboard inbox in Yedric.

***

## Turning it on

Two settings decide what happens when a visitor asks for a human, and they live on different tabs.

**Widget → Configure → Live chat** adds the escalation button to the widget. Off by default.

**Settings → Live chat & support → Provider** decides what the button does:

* **Built-in** opens Yedric's own chat panel and connects the visitor to an available teammate. This is live chat.
* **External** fires a `human_support` event on your page instead and does nothing else. Your own chat provider, support form, or phone flow handles it. See the [JavaScript API](/yedric/developers/javascript-api.md) for the event.

The button in the widget reads **Chat with our team**. It also needs an escalation action enabled, either TalkToHuman or StartLiveChat, on the [Actions](/yedric/going-further/actions.md) tab. If neither is on, the Settings card tells you so.

***

## Settings

These are all on the assistant's **Settings** tab, in the **Live chat & support** card.

**Business hours** Your team's support hours, with a time zone and an open and close time per day. Live chat uses them to tell visitors when you are next available while you are offline, and the **Check support availability** action reads them so the assistant can say whether anyone is around before it offers a handoff. This one applies to both providers.

**Collect email before connecting** The assistant asks the visitor for their email during the chat, before connecting them, and passes it through so your agent already has it.

**Custom handoff message** The wording the assistant uses as it connects a visitor to a teammate. Leave it blank to use the default.

**Reply notification sound** Visitors hear a short chime as your team's messages arrive, and the launcher shows a dot for replies that land while the widget is closed.

**Auto-assign incoming chats** Each new chat goes to whoever has the fewest active chats among teammates who are marked available, have the dashboard open, and are under the maximum below. If nobody qualifies, the chat waits in the queue for someone to accept it. Turn this off and agents accept every chat by hand.

**Max concurrent chats per agent** How many active chats one agent can hold at once, counted across every assistant. Blank or `0` means unlimited. An organization-wide limit set in **Organization → Live Chat** overrides this, and the field says so when one is in force.

**Idle chat timeout (minutes)** Close an active chat automatically after this many minutes of quiet. Blank or `0` disables it.

**Support email address** Receives leave-a-message submissions and chat transcripts when nobody is available. Submissions are dropped if you leave it empty, so fill this in before you rely on the offline form.

**Assigned staff** Restricts this assistant's chats to the teammates you check. Leave every box unchecked and any available agent can take them.

These settings are part of the assistant's configuration, so they travel with it. Business hours, the support email address, auto-assign, the per-agent chat limit, the idle timeout, and assigned staff are written to a `liveChat` block in the assistant's `agent.json` when you use [Git Sync](/yedric/going-further/versions.md#git-sync), and the same settings can be read and changed through the [MCP Server](/yedric/developers/mcp-server.md). A version restore or import carries them along too.

***

## Being available

Live chat only routes to people who have said they are around.

Open the user menu in the top right and use the \*\*Availability\*\* toggle under \*\*Live chat\*\*. The dot next to it is green when you are available and grey when you are not.

Availability is not enough on its own. Auto-assign also requires the dashboard to be open, because chats are delivered over a live connection. Closing the tab takes you out of the rotation.

Yedric also revises the toggle for you in two situations, and only these two.

**Your connection drops.** If the dashboard has been unreachable for about two minutes (a closed laptop, lost wifi, a tab the browser put to sleep), you are set to away so the team's availability reflects who is actually there. When the dashboard reconnects, you are put straight back to available without touching anything. Flipping the toggle yourself, in either direction, ends that arrangement: if you set yourself away before closing the tab, reconnecting does not put you back.

**A chat went unanswered.** When a waiting chat closes as missed (see [What the visitor sees](#what-the-visitor-sees)), the teammates who could have taken it are set to away, and a notice in the dashboard reads **You were set to away**. That only reaches agents who were available when the chat entered the queue, still had the dashboard open, and had room for another chat under the per-agent limit. Someone who came on shift while the visitor was already waiting, or who was already at their limit, is left alone. Turn the toggle back on when you are ready for the next chat.

Teammates see you under the **Name** saved on your account page, in the inbox, in transfers, and in the transcript the visitor reads.

***

## The inbox

With access, a **Live chat** section appears in the sidebar with three items: **Chats**, **History**, and **Analytics**.

**Chats** is the working inbox. Waiting chats are grouped under a **Waiting** heading and carry an amber **WAITING** flag, active ones show a green **Active** pill, and the sidebar item shows a badge when something is waiting.

Opening a waiting chat does not claim it. Click **Accept chat** to take it, which is deliberate: it means you can read what a visitor said before deciding to pick it up. Until you accept, the composer tells you to accept the chat to start replying. A chat another teammate has taken shows who has it.

### Replying and taking notes

The composer has two modes.

* **Reply** goes to the visitor. Typing here also shows them a typing indicator.
* **🔒 Note** records an internal note that only your team can see. The composer turns yellow so you cannot mistake one for the other.

Notes work whether or not the chat is assigned to you, so you can add context to a teammate's chat without interrupting it. You can attach files in either mode, and there is an emoji picker.

### Canned responses

Saved replies live under **Canned Responses** on the assistant's Settings tab, or on their own page. Each has a title, an optional shortcut, and a body. In the composer, type `/` followed by the shortcut to insert one, or open the canned responses button to browse and search them.

### Transfers

**Transfer** hands an active chat to someone else. The menu lists the teammates who can take it, so you are not guessing at who is online, and the assistant sits at the top of the list as **Yedric**. It is always offered, because the assistant has no availability or capacity to check, which makes it the one option that is still there when nobody else is free.

Handing a chat to Yedric ends the live chat and gives the visitor their AI composer back in the same panel, with no closing card and no rating prompt, so from their side the conversation simply carries on. Whatever you have typed in the composer when you pick Yedric is saved as the closing note and passed to the assistant as the handover, so use it to say where things stand rather than sending it to the visitor first.

### Ending a chat

**End chat** closes it, with an optional chat summary. When a visitor leaves first, you are prompted for a closing note instead, and you can dismiss that with **Close without note**. Summaries and notes both stay on the record and are what your team reads later.

Transcript emails go out under your assistant's name, with the **Support email address** as the reply-to on the visitor's copy and the visitor's address as the reply-to on your team's copy. Either side can hit reply and reach the other. The sending address itself stays Yedric's, so the mail is not caught by spam filters checking your domain.

### Tags and the AI conversation

You can tag an open chat from the header, with the same autocomplete used on [Conversations](/yedric/going-further/conversations.md). Tags are matched case-insensitively, so `Refund` and `refund` settle on one tag rather than two.

Because live chat starts from an AI conversation, the transcript that came before is one click away under **View AI thread**. Read what the assistant already tried before repeating it.

### Past chats

**Past chats**, beside **Transfer** in the chat header, opens a panel listing this visitor's earlier chats. The button carries a count when there are any, so a returning visitor is visible before you open anything, and it stays blank for a first-time visitor. Click a row to expand that chat's transcript in place, internal notes included, without leaving the chat you are in.

Earlier chats are matched to the visitor by a verified username when your site uses [Secure Mode](/yedric/developers/secure-mode.md), and otherwise by the email collected before the chat. A visitor with neither is anonymous, and the panel says so rather than guessing. On a phone, **Past chats** and **View AI thread** sit under the **More** menu so **Transfer** and **End chat** keep their room.

***

## What the visitor sees

If someone is available, the panel becomes a chat with your teammate. Messages, typing indicators, and file attachments go both ways.

If nobody is available, the visitor gets a **Leave us a message** form asking for an email and a message, and is told you will follow up by email. Those submissions go to the **Support email address** on the assistant's Settings tab.

If someone is available but nobody accepts the chat, it does not wait forever. After five minutes in the queue the chat closes as missed and the visitor sees **Sorry, no one was available to take this chat**. If they typed anything while waiting, a transcript goes to the **Support email address** so your team can follow up; a chat where nobody said anything mails no one. The visitor does not receive a copy of a missed transcript. Closing a missed chat also sets the teammates who could have taken it to away, as described in [Being available](#being-available). A visitor who closes the page while still waiting is handled separately and more patiently, since a laptop that went to sleep usually comes back.

When a teammate ends a chat, the visitor is asked **How was your experience?** and can rate it good or bad. Those ratings are what the **Positive sentiment** figure on Analytics is built from. A chat handed back to Yedric never shows that prompt, because from the visitor's side the conversation has not ended.

Your page can react to any of this. Five browser events cover the visitor's side of a live chat, and they are listed with the rest in the [JavaScript API](/yedric/developers/javascript-api.md).

***

## History

**History** is every chat that has ended. Search by name or email, filter by the agent who handled it, or filter by tag, picking several tags at once to see chats carrying any of them. Open a row to read the **Transcript**, including the notes and summary your team left.

Arriving from a dot on the Analytics time-of-day chart adds a chip naming the day and hour, so an empty result reads as "none in that hour" rather than "no history". Clear the chip to see everything again.

***

## Analytics

**Analytics** is the one place for live chat reporting, over a 7, 30, or 90 day window. It covers every assistant in the organization; the per-assistant [Dashboard](/yedric/going-further/dashboard.md) reports on AI conversations only.

Five figures sit at the top: **Conversations**, **Avg time / conversation**, **Positive sentiment** (with the good and bad counts behind it), **Hours of coverage / week** (time with at least one agent online, averaged per week so it stays comparable across the three ranges), and **Agent time online** (summed across agents). Durations past an hour read as hours and minutes.

Two heatmaps show **Live chats by time of day** and **Agents online by time of day**, side by side and both in your local time, so an hour with demand and nobody online is easy to spot. Click a dot on **Live chats by time of day** to open [History](#history) filtered to the chats that started in that hour.

Below them, **Live chats over time** charts weekly volume, **Live chat satisfaction** breaks down the ratings visitors leave when a chat ends, and a weekly table breaks the headline measures down by week.

***

## Related

* [Actions](/yedric/going-further/actions.md): TalkToHuman and Check support availability, the two actions involved in a handoff.
* [Integrations](/yedric/going-further/integrations.md): webhooks for the five `chat.*` lifecycle events, and custom apps for a panel beside a chat.
* [Conversations](/yedric/going-further/conversations.md): the AI conversations that live chats start from.
