> ## 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.

# Chat Desk

> Triage customer conversations, coordinate human replies, inspect AI behavior, and verify outcomes in ResponseCX.

[Chat Desk](https://response.stateset.com/chat-desk) is the operator workspace for reviewing
conversations and handling supported replies. The website widget is the customer's interface;
the desk is your team's view of the conversation, its ownership, and its operational context.

<div className="ss-guide-summary" role="group" aria-label="Chat Desk 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 and a real test conversation</p></div>
  <div><span className="ss-eyebrow">FINISH WITH</span><p>A reviewed thread and verified customer-visible result</p></div>
</div>

New operator? Follow [Your First Shift in Chat Desk](/guides/chat-desk-first-shift) for a
website handoff, managed-email exercise, uncertain-send recovery, and a team handoff template.

## Understand the workspace

| Area      | Use it to                                                                       |
| --------- | ------------------------------------------------------------------------------- |
| Queue     | Find conversations by status, ownership, attention, or supported channel        |
| Thread    | Read messages, claim work, pause AI, send a supported reply, or add a chat note |
| Inspector | Inspect available customer, site, agent, and operational context                |
| Approvals | Review held actions; inspect their execution result after a decision            |

The desktop layout places these tools alongside the conversation. On smaller screens, switch
between the available panels. The desk receives conversation updates through its event stream
with refresh support; use **Refresh** if the view appears stale.

## Find the conversation that needs you

Use **Active**, **Mine**, **Unassigned**, **Needs me**, **SLA risk**, **Waiting AI**,
**Waiting customer**, **Takeover**, **Escalated**, **Reviewed**, **Resolved**, or **Snoozed**
to narrow the queue. **Chat** and **Email** select the supported channel views.

A queue label helps triage; it is not proof that an external action completed. Read the thread
and its available execution or delivery evidence. Check the selected organization before
concluding that a conversation is missing, and load older messages when the transcript is paginated.

## Handle your first conversation

<Steps>
  <Step title="Open and identify the thread">
    Select the intended conversation. Compare its customer message, channel, agent, and
    available identifiers with your test. A Response response ID and a widget thread UUID
    identify different records; preserve the identifiers shown for your conversation.
  </Step>

  <Step title="Coordinate ownership">
    Choose **Claim** to assign the conversation to yourself. If another operator owns it,
    coordinate before using **Take over from …**. Customer replies are locked while another
    operator is assigned. **Release** changes assignment; it is not the same as resuming AI.
  </Step>

  <Step title="Decide whether AI should continue">
    Use **Pause AI / take over** when a person should handle the exchange. Inspect the
    **AI paused** state and takeover signals. Assignment, escalation, and AI control are
    related but distinct; verify the actual state before assuming automation has stopped.
  </Step>

  <Step title="Reply or leave a note">
    Check the composer audience before sending. **Send reply** is customer-facing on a
    supported conversation. **Add note** is for your team on native chat threads.
    Managed email does not currently support desk internal notes. A disabled composer on
    a response-only record means that record does not provide a supported send path.
  </Step>

  <Step title="Verify, then organize the work">
    Inspect the delivery result and check the customer side where appropriate. Use **Mark
    reviewed** after reviewing the conversation, or **Snooze** to defer work until a chosen
    time. Neither a review marker nor a snooze is evidence that a reply was delivered.
  </Step>
</Steps>

## Reply saved versus reply delivered

| Result                       | Meaning                                          | Verify next                                                        |
| ---------------------------- | ------------------------------------------------ | ------------------------------------------------------------------ |
| Chat `transcript_saved`      | Reply is saved to the conversation               | Open the same visitor thread and confirm the message appears       |
| Chat `note_saved`            | Internal note is saved for the team              | Confirm it appears in the desk and not in the public widget        |
| Managed email `email_queued` | Mail service queued the reply                    | Inspect subsequent delivery evidence                               |
| Managed email `email_sent`   | Support-email service reports sent               | Check provider evidence; this does not prove the recipient read it |
| Managed email `email_failed` | Service accepted the request but delivery failed | Inspect the delivery log before sending again                      |

The composer supports attachments, subject to the send endpoint's limits: up to five files,
with a combined size of at most 5 MB. Channel support and delivery still need verification.
If a send result is uncertain, inspect the existing transcript or provider result before
starting another send. The app preserves send-attempt identity for protected retries; a
successful HTTP response alone does not establish delivery.

## Review held actions separately

An approval is a decision about a held action, not an ordinary chat reply. Inspect the reason,
proposed action, and context before approving or denying it. After approval, inspect execution:
the desk can report **Approved, but the action did not run**. Do not count approval as a completed
refund, order change, or other business operation without its outcome evidence.

## Troubleshooting

| Symptom                                    | Check                                                                                                                |
| ------------------------------------------ | -------------------------------------------------------------------------------------------------------------------- |
| Widget answer exists but thread is missing | Correct organization, widget agent, thread identity, queue filters, and transcript persistence                       |
| Reply is locked                            | Current assignee; coordinate a takeover before replying                                                              |
| Composer is disabled                       | Whether this is a response-backed record without a managed email conversation                                        |
| Customer cannot see an operator reply      | Same visitor thread, widget connection, public transcript refresh, and whether you sent a note                       |
| Email reply is blocked by retry protection | Mail service support for idempotent replies; retain the draft and ask the operator to resolve the service capability |
| Approved action did not happen             | Approval execution result and provider outcome, not just approval status                                             |

## Next steps

<CardGroup cols={2}>
  <Card title="Connect the website widget" icon="messages-square" href="/stateset-response/chat-desk-widget">
    Install the hosted widget and verify an AI-to-human exchange end to end.
  </Card>

  <Card title="Understand channel coverage" icon="network" href="/stateset-response/chat-desk-channels">
    Compare chat, managed email, helpdesk integrations, and other channel runtimes.
  </Card>
</CardGroup>

Implementation checked against `response-one-prod` on 2026-09-20: `pages/chat-desk.js`,
`hooks/useChatDesk.js`, the chat-desk components, and `pages/api/chat-desk/`.
