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

# Your First Shift in Chat Desk

> Practice a website handoff, verify a managed-email reply, recover uncertain sends, and leave a useful operator handoff.

Use this walkthrough to train an operator on test conversations before handling customer traffic.
You will practice ownership, AI takeover, reply verification, and a handoff that another teammate
can resume. Complete only the channel exercises your workspace supports.

<div className="ss-guide-summary" role="group" aria-label="Operator walkthrough at a glance">
  <div><span className="ss-eyebrow">WORK IN</span><strong>ResponseCX · Chat Desk</strong></div>
  <div><span className="ss-eyebrow">BRING</span><p>Workspace access · A test visitor · A teammate</p></div>
  <div><span className="ss-eyebrow">FINISH WITH</span><p>Verified reply evidence and an actionable handoff</p></div>
</div>

## Before you start

* Install and verify the [hosted widget](/stateset-response/chat-desk-widget) for the website exercise.
* For email, have a working managed-mail conversation and an external test mailbox you control.
* Agree on the policy your reply should follow and who may approve exceptions.
* Open [Chat Desk](https://response.stateset.com/chat-desk) in the intended organization.

Review [channel coverage](/stateset-response/chat-desk-channels) first if your team uses an external
helpdesk, SMS, WhatsApp, Voice, or ChatGPT. Their setup pages do not all establish a desk reply path.

## Exercise 1: answer a website visitor

<Steps>
  <Step title="Create a recognizable test">
    In the installed widget, send “Operator practice: please explain your shipping policy.”
    Keep that visitor session open. Find the same message in the desk's **Chat** queue and
    check its agent and conversation identity.
  </Step>

  <Step title="Establish who is responding">
    Read the transcript, then **Claim** the conversation. If a teammate already owns it,
    coordinate before using **Take over from …**. Presence indicates who is viewing;
    assignment determines ownership. A viewing indicator is not permission to send.
  </Step>

  <Step title="Pause AI and test the handoff">
    Choose **Pause AI / take over**. From the same widget, ask a follow-up question and inspect
    the handoff behavior before sending your reply. Claiming the conversation by itself is
    not proof that AI is paused. See the [takeover limits](/stateset-response/chat-desk-widget#4-verify-a-human-handoff).
  </Step>

  <Step title="Send one policy-backed reply">
    Confirm you are in reply mode, write an answer supported by the policy, and choose
    **Send reply**. Inspect the result and verify the text appears in the visitor's open
    widget. A saved transcript is not a customer-receipt confirmation.
  </Step>

  <Step title="Leave a team-only note">
    Switch to note mode and record what you checked and what remains. Confirm the note
    appears in the desk but not in the visitor widget. Notes and replies have separate
    drafts; inspect the selected audience every time you switch.
  </Step>
</Steps>

<div className="ss-checkpoint">
  **Complete when:** the same visitor sees your reply, the desk shows the matching conversation,
  and your internal note remains team-only. Keep the thread ID and observed result.
</div>

## Exercise 2: verify a managed-email reply

Send a test email from your external mailbox to the configured support address. Find it in
**Email**, match the sender and conversation, and confirm the composer is available. An email
response record without a corresponding managed-mail conversation can be review-only.

Claim the conversation and send one reply. Inspect the reported outcome:

| Outcome                       | Operator action                                                                    |
| ----------------------------- | ---------------------------------------------------------------------------------- |
| Queued                        | Inspect delivery progress; do not count it as received                             |
| Sent                          | Check provider evidence and your external test mailbox                             |
| Failed                        | Inspect the mail delivery log before deciding whether to resend                    |
| Protected sending unavailable | Keep the draft and ask the deployment owner to resolve the mail service capability |

Managed email does not support desk internal notes in the checked implementation. Put the
handoff in your team's approved record rather than sending private operator context as an email.
Also remember that **Mark reviewed** maps to closing the managed-mail conversation; it is not
merely a visual acknowledgement.

<div className="ss-checkpoint">
  **Complete when:** the provider outcome and receiving mailbox support the result you report.
  Record the conversation ID and delivery state separately from the desk review state.
</div>

## Recover without duplicating a reply

| Situation                                       | What to do next                                                                                                |
| ----------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
| Browser shows a send error or times out         | Refresh the existing conversation and inspect transcript/provider evidence before sending again                |
| Message appears but its macro action failed     | Reconcile the separate status/tag/priority change; do not resend the message to retry the action               |
| Reply is locked by another assignee             | Coordinate ownership, then refresh and verify assignment                                                       |
| Teammate presence is unavailable                | Use explicit ownership and direct team coordination; absence of presence is not proof nobody is working        |
| Draft is missing after changing browser/session | Reconstruct only after inspecting whether the earlier message was sent; drafts are not a shared handoff system |

The composer keeps reply and note text in browser session storage when available. Do not rely
on it as a durable record across devices, browser sessions, or teammates. Send-attempt protection
uses the conversation, operator, audience, and message content to retain a retry identity;
changing the content or starting a new send is not the same protected attempt.

When a macro offers **Stage reply and actions**, review both the text and the listed changes.
The app sends the message before applying those conversation updates. These are separate
operations: a failure in the later update does not undo the earlier saved or queued message.
Inspect the actual delivery result even when the request itself succeeded.

## Defer work with a named next action

Use **Snooze** when work should resume later. Available presets include **1 hour**, **4 hours**,
**Tomorrow**, and **Clear**, plus a custom future time. Verify the displayed return time and
record a timezone when handing work to someone elsewhere.

Snoozing is not a substitute for recording why the conversation is waiting. Name the missing
customer detail, policy approval, provider result, or technical fix. On a managed-mail
conversation, snoozing also updates the provider's conversation state.

## Hand off the conversation

Copy this into an internal chat note or your team's approved handoff record. For managed email,
use a separate team record because desk internal notes are unavailable.

```text theme={null}
Conversation and channel:
Organization and thread/conversation ID:
Provider ticket/message ID, if applicable:
Customer's unresolved request:
Policy or evidence checked:
Last reply and verified delivery state:
Current owner and agreed next owner:
AI takeover state actually observed:
Pending approval or provider action:
Snoozed until, including timezone:
Next action and who will perform it:
```

Coordinate before releasing or taking over ownership. The next operator should read the latest
transcript, verify assignment and AI state, and inspect pending work before sending. A saved
handoff does not itself transfer assignment, resume AI, or cancel an in-flight action.

## Turn a mistake into a better answer

When an AI answer needed correction, retain its Response response ID and the policy-backed
correction. Follow [Your First Agent Evaluation](/guides/first-agent-evaluation) to save and test
that case. A widget thread ID is not a substitute for the response ID required by that workflow.

<CardGroup cols={2}>
  <Card title="Desk controls and delivery states" icon="inbox" href="/stateset-response/chat-desk">
    Review queue meanings, approvals, reply behavior, and recovery checks.
  </Card>

  <Card title="Review your first week" icon="chart-line" href="/guides/first-week-with-stateset">
    Compare reviewed outcomes, corrections, and measured operating effort.
  </Card>
</CardGroup>

Implementation checked against `response-one-prod` on 2026-09-20: `ThreadPanel.jsx`,
`ChatDeskComposer.jsx`, `hooks/useChatDesk.js`, `lib/chat-desk/sendAttempts.ts`, and
`lib/chat-desk/macroActions.ts`, alongside the desk send/update handlers.
