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

# Use the Agent Workspace

> Reply from the composer, add private notes and mentions, insert canned responses, set your send hotkey and signature, and share transcripts.

export const Browser = ({url, children}) => <div className="tars-browser">
    <div className="tars-browser-bar">
      <span className="tars-browser-dots">
        <i />
        <i />
        <i />
      </span>
      {url ? <span className="tars-browser-url">{url}</span> : null}
    </div>
    <div className="tars-browser-view">{children}</div>
  </div>;

export const img = {
  activity: {
    activityTimeline: "/docs/guides/activity/images/activity-timeline.png",
    capturedVariablesPanel: "/docs/guides/activity/images/captured-variables-panel.png",
    dataViewCards: "/docs/guides/activity/images/data-view-cards.png",
    exportDataDialog: "/docs/guides/activity/images/export-data-dialog.png",
    tasksPanelExportReady: "/docs/guides/activity/images/tasks-panel-export-ready.png"
  },
  analytics: {
    analyticsOverview: "/docs/guides/analytics/images/analytics-overview.png",
    exploreGallery: "/docs/guides/analytics/images/explore-gallery.png",
    exploreTab: "/docs/guides/analytics/images/explore-tab.png",
    goalForm: "/docs/guides/analytics/images/goal-form.png",
    goalsTab: "/docs/guides/analytics/images/goals-tab.png",
    improveDiagnostics: "/docs/guides/analytics/images/improve-diagnostics.png",
    improveTab: "/docs/guides/analytics/images/improve-tab.png",
    teamTab: "/docs/guides/analytics/images/team-tab.png"
  },
  billing: {
    billingOverview: "/docs/guides/billing/images/billing-overview.png",
    buyConversationsDialog: "/docs/guides/billing/images/buy-conversations-dialog.png",
    buySeatsDialog: "/docs/guides/billing/images/buy-seats-dialog.png",
    livechatSeatsTab: "/docs/guides/billing/images/livechat-seats-tab.png",
    organizationDeletionLifecycle: "/docs/guides/billing/images/organization-deletion-lifecycle.svg",
    organizationSwitcher: "/docs/guides/billing/images/organization-switcher.png",
    rolesAndAccessMatrix: "/docs/guides/billing/images/roles-and-access-matrix.png"
  },
  building: {
    agentBehaviorGuardrails: "/docs/guides/building/images/agent-behavior-guardrails.png",
    agentCardMenu: "/docs/guides/building/images/agent-card-menu.png",
    agentConfigure: "/docs/guides/building/images/agent-configure.png",
    agentExitRoutesDialog: "/docs/guides/building/images/agent-exit-routes-dialog.png",
    agentLibrary: "/docs/guides/building/images/agent-library.png",
    agentModelParameters: "/docs/guides/building/images/agent-model-parameters.png",
    aiAgentGambitLoop: "/docs/guides/building/images/ai-agent-gambit-loop.svg",
    builderBasics: "/docs/guides/building/images/builder-basics.png",
    builderConnectHandlePanel: "/docs/guides/building/images/builder-connect-handle-panel.png",
    builtInToolsDialog: "/docs/guides/building/images/built-in-tools-dialog.png",
    configureDebugTab: "/docs/guides/building/images/configure-debug-tab.png",
    configureLanguage: "/docs/guides/building/images/configure-language.png",
    configureNotifications: "/docs/guides/building/images/configure-notifications.png",
    createAgentDialog: "/docs/guides/building/images/create-agent-dialog.png",
    draftPublishRollbackPinning: "/docs/guides/building/images/draft-publish-rollback-pinning.svg",
    draftSwitcherChip: "/docs/guides/building/images/draft-switcher-chip.png",
    duplicateAgentDialog: "/docs/guides/building/images/duplicate-agent-dialog.png",
    flowConditions: "/docs/guides/building/images/flow-conditions.png",
    gambitPalette: "/docs/guides/building/images/gambit-palette.png",
    gambits: {
      gambitAiAgent: "/docs/guides/building/gambits/images/gambit-ai-agent.png",
      gambitApiCall: "/docs/guides/building/gambits/images/gambit-api-call.png",
      gambitAutoSuggestion: "/docs/guides/building/gambits/images/gambit-auto-suggestion.png",
      gambitButton: "/docs/guides/building/gambits/images/gambit-button.png",
      gambitCard: "/docs/guides/building/gambits/images/gambit-card.png",
      gambitChannel: "/docs/guides/building/gambits/images/gambit-channel.png",
      gambitCustomCode: "/docs/guides/building/gambits/images/gambit-custom-code.png",
      gambitDateTime: "/docs/guides/building/gambits/images/gambit-date-time.png",
      gambitGeoLocation: "/docs/guides/building/gambits/images/gambit-geo-location.png",
      gambitLanguage: "/docs/guides/building/gambits/images/gambit-language.png",
      gambitLiveChat: "/docs/guides/building/gambits/images/gambit-live-chat.png",
      gambitMediaUpload: "/docs/guides/building/gambits/images/gambit-media-upload.png",
      gambitNoInput: "/docs/guides/building/gambits/images/gambit-no-input.png",
      gambitRedirect: "/docs/guides/building/gambits/images/gambit-redirect.png",
      gambitStarRating: "/docs/guides/building/gambits/images/gambit-star-rating.png",
      gambitStartAndEnd: "/docs/guides/building/gambits/images/gambit-start-and-end.png",
      gambitText: "/docs/guides/building/gambits/images/gambit-text.png",
      gambitTrigger: "/docs/guides/building/gambits/images/gambit-trigger.png"
    },
    languagesTranslateGambit: "/docs/guides/building/images/languages-translate-gambit.png",
    languageSystemMessages: "/docs/guides/building/images/language-system-messages.png",
    newDraftDialog: "/docs/guides/building/images/new-draft-dialog.png",
    outputComponentsGrid: "/docs/guides/building/images/output-components-grid.png",
    publishDialog: "/docs/guides/building/images/publish-dialog.png",
    systemPromptDialog: "/docs/guides/building/images/system-prompt-dialog.png",
    testModeEventLog: "/docs/guides/building/images/test-mode-event-log.png",
    testModePanel: "/docs/guides/building/images/test-mode-panel.png",
    validationProblemsPanel: "/docs/guides/building/images/validation-problems-panel.png",
    variablePickerPanel: "/docs/guides/building/images/variable-picker-panel.png",
    variablePillInserted: "/docs/guides/building/images/variable-pill-inserted.png",
    versionsDraftsPanel: "/docs/guides/building/images/versions-drafts-panel.png"
  },
  campaigns: {
    campaignFlavorsTriggers: "/docs/guides/campaigns/images/campaign-flavors-triggers.svg",
    campaignReplyRouting: "/docs/guides/campaigns/images/campaign-reply-routing.svg",
    campaignSendAnatomy: "/docs/guides/campaigns/images/campaign-send-anatomy.svg",
    createACampaign: "/docs/guides/campaigns/images/create-a-campaign.png",
    walletReserveSettleRefund: "/docs/guides/campaigns/images/wallet-reserve-settle-refund.svg",
    webhookCampaignContractLocking: "/docs/guides/campaigns/images/webhook-campaign-contract-locking.svg",
    webhookCampaignLifecycleStates: "/docs/guides/campaigns/images/webhook-campaign-lifecycle-states.svg",
    webhookCampaignOneCallOneDelivery: "/docs/guides/campaigns/images/webhook-campaign-one-call-one-delivery.svg"
  },
  channels: {
    distributeWhatsappConnect: "/docs/guides/channels/images/distribute-whatsapp-connect.png",
    whatsappConnectDialogWaiting: "/docs/guides/channels/images/whatsapp-connect-dialog-waiting.png",
    whatsappEmptyState: "/docs/guides/channels/images/whatsapp-empty-state.png"
  },
  deploy: {
    bridgeEventGambitSection: "/docs/guides/deploy/images/bridge-event-gambit-section.png",
    deploymentSurfacesAndChannels: "/docs/guides/deploy/images/deployment-surfaces-and-channels.svg",
    designAgentTab: "/docs/guides/deploy/images/design-agent-tab.png",
    designLauncherTab: "/docs/guides/deploy/images/design-launcher-tab.png",
    embedIframeTab: "/docs/guides/deploy/images/embed-iframe-tab.png",
    embedTheWidget: "/docs/guides/deploy/images/embed-the-widget.png",
    mobileAppIntegration: "/docs/guides/deploy/images/mobile-app-integration.png",
    onYourDomain: "/docs/guides/deploy/images/on-your-domain.png",
    shareYourAgentLink: "/docs/guides/deploy/images/share-your-agent-link.png"
  },
  developer: {
    api: {
      channelSendTemplateVsMessage: "/docs/developer/api/images/channel-send-template-vs-message.svg",
      endUsers: {
        endUsersListCursorPagination: "/docs/developer/api/end-users/images/end-users-list-cursor-pagination.svg"
      },
      triggerCallConversationLifecycle: "/docs/developer/api/images/trigger-call-conversation-lifecycle.svg"
    },
    developerSurfacesMap: "/docs/developer/images/developer-surfaces-map.svg",
    embed: {
      embedConfigToWidgetContext: "/docs/developer/embed/images/embed-config-to-widget-context.svg",
      hostPageBridgeFlow: "/docs/developer/embed/images/host-page-bridge-flow.svg",
      identitySigningFlow: "/docs/developer/embed/images/identity-signing-flow.svg",
      scriptVsIframeEmbed: "/docs/developer/embed/images/script-vs-iframe-embed.svg"
    },
    mobile: {
      bridgeMessageProtocol: "/docs/developer/mobile/images/bridge-message-protocol.svg",
      webviewBridgeArchitecture: "/docs/developer/mobile/images/webview-bridge-architecture.svg"
    }
  },
  endUsers: {
    anonymousToIdentifiedProfile: "/docs/guides/end-users/images/anonymous-to-identified-profile.svg",
    bulkActionBar: "/docs/guides/end-users/images/bulk-action-bar.png",
    campaignConsentGate: "/docs/guides/end-users/images/campaign-consent-gate.svg",
    consentPerChannelStates: "/docs/guides/end-users/images/consent-per-channel-states.svg",
    dynamicVsStaticSegments: "/docs/guides/end-users/images/dynamic-vs-static-segments.svg",
    endUserDirectory: "/docs/guides/end-users/images/end-user-directory.png",
    endUserProfileAcrossChannels: "/docs/guides/end-users/images/end-user-profile-across-channels.svg",
    endUserProfilePanes: "/docs/guides/end-users/images/end-user-profile-panes.png",
    profileMergeAndTakeoverProtection: "/docs/guides/end-users/images/profile-merge-and-takeover-protection.svg",
    segmentBuilder: "/docs/guides/end-users/images/segment-builder.png",
    segmentsPage: "/docs/guides/end-users/images/segments-page.png"
  },
  getStarted: {
    agentStates: "/docs/get-started/images/agent-states.svg",
    buildToLivePath: "/docs/get-started/images/build-to-live-path.svg",
    dashboardSidebarMap: "/docs/get-started/images/dashboard-sidebar-map.png",
    organizationOwnershipAndRoles: "/docs/get-started/images/organization-ownership-and-roles.svg",
    quickstart: {
      step1CreateYourAccount: "/docs/get-started/images/quickstart/step-1-create-your-account.png",
      step3ConnectTheAiAgent: "/docs/get-started/images/quickstart/step-3-connect-the-ai-agent.png",
      step4TestMode: "/docs/get-started/images/quickstart/step-4-test-mode.png"
    },
    quickstartCanvas: "/docs/get-started/images/quickstart-canvas.png"
  },
  knowledge: {
    addASource: "/docs/guides/knowledge/images/add-a-source.png",
    addRetrieverPicker: "/docs/guides/knowledge/images/add-retriever-picker.png",
    attachKnowledgeGambit: "/docs/guides/knowledge/images/attach-knowledge-gambit.png",
    configureARetriever: "/docs/guides/knowledge/images/configure-a-retriever.png",
    createKnowledgeBaseDialog: "/docs/guides/knowledge/images/create-knowledge-base-dialog.png",
    customRetrieverDialog: "/docs/guides/knowledge/images/custom-retriever-dialog.png",
    datasetTab: "/docs/guides/knowledge/images/dataset-tab.png",
    documentChangeReindexLifecycle: "/docs/guides/knowledge/images/document-change-reindex-lifecycle.svg",
    documentsTabPreview: "/docs/guides/knowledge/images/documents-tab-preview.png",
    importAWebsite: "/docs/guides/knowledge/images/import-a-website.png",
    kbList: "/docs/guides/knowledge/images/kb-list.png",
    retrieverIndexStates: "/docs/guides/knowledge/images/retriever-index-states.svg",
    retrieverQueryPipeline: "/docs/guides/knowledge/images/retriever-query-pipeline.svg",
    standardVsParentChildChunking: "/docs/guides/knowledge/images/standard-vs-parent-child-chunking.svg",
    syncManagement: "/docs/guides/knowledge/images/sync-management.png",
    testRetriever: "/docs/guides/knowledge/images/test-retriever.png"
  },
  liveChat: {
    agentWorkspace: "/docs/guides/live-chat/images/agent-workspace.png",
    assignedAgentPicker: "/docs/guides/live-chat/images/assigned-agent-picker.png",
    automaticAssignmentRouting: "/docs/guides/live-chat/images/automatic-assignment-routing.svg",
    availabilityDropdown: "/docs/guides/live-chat/images/availability-dropdown.png",
    cannedResponses: "/docs/guides/live-chat/images/canned-responses.png",
    composerPreferences: "/docs/guides/live-chat/images/composer-preferences.png",
    copilotPanel: "/docs/guides/live-chat/images/copilot-panel.png",
    filterConversationsDialog: "/docs/guides/live-chat/images/filter-conversations-dialog.png",
    inboxAnalyticsTab: "/docs/guides/live-chat/images/inbox-analytics-tab.png",
    inboxAvailabilityTab: "/docs/guides/live-chat/images/inbox-availability-tab.png",
    inboxesSettings: "/docs/guides/live-chat/images/inboxes-settings.png",
    inboxRoutingTab: "/docs/guides/live-chat/images/inbox-routing-tab.png",
    labelsSettings: "/docs/guides/live-chat/images/labels-settings.png",
    newAttributeDialog: "/docs/guides/live-chat/images/new-attribute-dialog.png",
    newCannedResponseDialog: "/docs/guides/live-chat/images/new-canned-response-dialog.png",
    notificationPreferences: "/docs/guides/live-chat/images/notification-preferences.png",
    notificationsPage: "/docs/guides/live-chat/images/notifications-page.png",
    pickupTargetCard: "/docs/guides/live-chat/images/pickup-target-card.png",
    resolveMenu: "/docs/guides/live-chat/images/resolve-menu.png",
    searchDialog: "/docs/guides/live-chat/images/search-dialog.png",
    seatGateConversation: "/docs/guides/live-chat/images/seat-gate-conversation.png",
    seatsSettings: "/docs/guides/live-chat/images/seats-settings.png",
    workTheInbox: "/docs/guides/live-chat/images/work-the-inbox.png"
  },
  security: {
    addOpenRouterKeyDialog: "/docs/guides/security/images/add-open-router-key-dialog.png",
    auditChainVerified: "/docs/guides/security/images/audit-chain-verified.png",
    auditEventDrawer: "/docs/guides/security/images/audit-event-drawer.png",
    auditExportDialog: "/docs/guides/security/images/audit-export-dialog.png",
    auditLogViewer: "/docs/guides/security/images/audit-log-viewer.png",
    auditRecordLifecycle: "/docs/guides/security/images/audit-record-lifecycle.svg",
    logPrivacyRedactionEnabled: "/docs/guides/security/images/log-privacy-redaction-enabled.png",
    modelProviderEmptyState: "/docs/guides/security/images/model-provider-empty-state.png",
    privacySettings: "/docs/guides/security/images/privacy-settings.png",
    siemConnectWizard: "/docs/guides/security/images/siem-connect-wizard.png",
    supportActorMasking: "/docs/guides/security/images/support-actor-masking.svg"
  },
  tools: {
    addToolModal: "/docs/guides/tools/images/add-tool-modal.png",
    addToolsPanel: "/docs/guides/tools/images/add-tools-panel.png",
    codekitActionEditor: "/docs/guides/tools/images/codekit-action-editor.png",
    codekitConnectToolkitsDialog: "/docs/guides/tools/images/codekit-connect-toolkits-dialog.png",
    codekitSchemaDialog: "/docs/guides/tools/images/codekit-schema-dialog.png",
    codekitToolkit: "/docs/guides/tools/images/codekit-toolkit.png",
    codekitToolkitAnatomy: "/docs/guides/tools/images/codekit-toolkit-anatomy.svg",
    createActionDialog: "/docs/guides/tools/images/create-action-dialog.png",
    createCodekitDialog: "/docs/guides/tools/images/create-codekit-dialog.png",
    responseFilteringDialog: "/docs/guides/tools/images/response-filtering-dialog.png",
    toolGambitEditorAgentMode: "/docs/guides/tools/images/tool-gambit-editor-agent-mode.png",
    toolGambitEditorWorkflowMode: "/docs/guides/tools/images/tool-gambit-editor-workflow-mode.png",
    toolkitDetail: "/docs/guides/tools/images/toolkit-detail.png",
    toolsConnected: "/docs/guides/tools/images/tools-connected.png",
    toolsDirectory: "/docs/guides/tools/images/tools-directory.png",
    viewActionsModal: "/docs/guides/tools/images/view-actions-modal.png",
    workflowModeResponse: "/docs/guides/tools/images/workflow-mode-response.png"
  }
};

export const urls = {
  app: "https://dashboard.hellotars.com",
  site: "https://hellotars.com",
  support: "mailto:support@hellotars.com",
  status: "https://status.hellotars.com"
};

At the end of this page, you can handle a full conversation in the conversation pane, from first reply to transcript.

<Browser url={urls.app}>
  <img src={img.liveChat.agentWorkspace} alt="Conversations screen with the views rail, the conversation list, an open conversation showing rich content, the Take over conversation button, and the details rail on the right" />
</Browser>

## Before you start

Before you start, sign in to <a href={urls.app}>the dashboard</a> and select the organization you want to work in.

* You need a live-chat seat. See [Live-chat overview and seats](/docs/guides/live-chat/overview-and-seats).
* Open **Conversations** and select a conversation. The views rail, queue tabs, filters, and details rail are covered in [Work the inbox](/docs/guides/live-chat/work-the-inbox).

## The conversation header

The header shows the end user's avatar, name, and presence. Presence reads **Online** or a relative last-seen time such as **Last seen 5 minutes ago**. The controls on the right change with the conversation state.

| State                                  | Controls                                                                            |
| -------------------------------------- | ----------------------------------------------------------------------------------- |
| Active and controlled by a human agent | A **Resolve** split button. Its caret menu offers **Mark pending** and **Snooze…**. |
| Snoozed                                | An amber badge such as **Snoozed · 3h left** and an **Unsnooze** button.            |
| Pending                                | An **Open** button that reopens the conversation.                                   |

Two controls are always present. A details toggle shows or hides the details rail, with tooltips **More details** and **Close details**. A **More actions** menu offers **Send transcript** and **View trace**.

### Snooze options

Select **Snooze…** to open a popover with the presets **1 hour**, **4 hours**, **Tomorrow morning**, and **Next week**. Select **Custom…** to pick a date and time in 15-minute steps, then select **Snooze**. A toast confirms **Snoozed**.

## Reply to an end user

<Steps>
  <Step title="Open a conversation from the list">
    The thread opens in the pane with the composer at the bottom.
  </Step>

  <Step title="Keep the composer on the Reply tab">
    The pill at the top left toggles **Reply** and **Private Note**.
  </Step>

  <Step title="Write your reply">
    The composer supports rich text, emoji, attachments, and voice notes.
  </Step>

  <Step title="Select Send">
    The button reads **Sending…** while the message goes out.
  </Step>
</Steps>

Rich text formatting sits in the toolbar above the editor: **Bold**, **Italic**, **Code**, **Bullet list**, **Numbered list**, and **Add link**. The **Switch to plain text** toggle at the bottom hides the formatting tools.

### Composer toolbar

| Control                                            | What it does                                                                                                                      |
| -------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| **Reply** / **Private Note** pill                  | Switches between a message to the end user and an internal note.                                                                  |
| **Undo** and **Redo**                              | Step through your edits.                                                                                                          |
| **AI Copilot** menu                                | Opens the Copilot actions. See [Use Copilot](/docs/guides/live-chat/copilot).                                                          |
| **Expand** toggle                                  | Opens the composer in a **Compose reply** or **Compose private note** modal. The docked area reads **Editing in expanded view…**. |
| **Attach file**                                    | Adds files to the message.                                                                                                        |
| **Emoji**                                          | Inserts an emoji.                                                                                                                 |
| **Share contact**                                  | Opens the **Share contact** dialog with **Name**, **Phone**, and **Email** fields, then **Attach** adds a contact card.           |
| **Share link as card**                             | Opens the **Share link as card** dialog with **URL**, **Title**, **Description**, **Image URL**, and **Site name**.               |
| **Record voice message**                           | Records a voice note. The tooltip changes to **Recording...** and then **Voice note ready**.                                      |
| **Add signature** / **Remove signature**           | Toggles your signature on this reply. Shown only in Reply mode when a signature is enabled.                                       |
| **Switch to plain text** / **Switch to rich text** | Switches between rich text and plain text.                                                                                        |

Pasting a link shows a preview card. Select **Remove link preview** to send the message without the card.

### Attachments and voice notes

The composer shows a toast when a file cannot be added. The toasts read **Too many attachments**, **File too large**, and **File type not supported**. Each toast explains the reason, for example a **40MB** file size limit or a maximum of **10** files per message.

While a voice note records, **Cancel recording** discards it and **Stop recording** keeps it. When more than one microphone is available, a **Select mic** control appears. The recorder shows a red **max 5:00** marker as the recording nears the limit.

## Change the send hotkey

<Steps>
  <Step title="Open Settings from the views rail">
    The Conversations settings open on the **Preferences** page.
  </Step>

  <Step title="Find Hotkey to send messages">
    The card sits under **Composer & Editor Experience**.
  </Step>

  <Step title="Pick Enter or Ctrl+Enter">
    On a Mac the second option reads Cmd+Enter. A toast confirms **Your settings have been saved successfully**.
  </Step>
</Steps>

With the modifier option, the **Send** button shows the modifier key beside its label. Enter then adds a new line. Inside a list, Enter always adds a new item.

<Frame>
  <img src={img.liveChat.composerPreferences} alt="Preferences page in Conversations settings showing the Hotkey to send messages card with Enter selected and the Personal message signature card below it" />
</Frame>

## Quote a specific message

Hold the pointer over a message and select the **Message actions** button, or right-click the message. Select **Reply** to quote it. A replying-to banner appears above the composer with a dismiss control. The same menu offers **Copy text** and **Copy link to message**.

## Private notes and mentions

Select **Private Note** in the pill. The composer turns amber, the placeholder reads **Add a private note...**, and the toolbar shows **Only visible to agents**. Notes stay in the thread for your team and are never visible to the end user.

Mentions work inside private notes only. Type `@` and pick a human agent from the popover. The mentioned human agent receives a notification, and the conversation appears in their **Mentions** view.

## Follow a conversation

The details rail has a participants section. Its header shows the count, for example **0 participants**, and the body lists the human agents who follow the conversation. When nobody follows it, the section reads **No participants**.

Select **Follow conversation** to add yourself. The link is replaced by **You are following**. Seat holders also get a **Manage participants** button beside the header. It opens a popover with a **Search agents...** field, where you select a human agent to add or remove.

Conversations you follow appear in your **Participating** view, and a new message on one raises a notification. See [Work the inbox](/docs/guides/live-chat/work-the-inbox) and [Live chat notifications](/docs/guides/live-chat/notifications).

## Drafts

Unsent text is saved as a draft per conversation. When you switch conversations and come back, the composer restores your text.

## Create and use canned responses

Canned responses are reusable replies you insert with `/` followed by a shortcode. The settings page describes them as **"Reusable replies available to every agent across all inboxes. Insert with /shortcode in the composer."**

<Browser url={urls.app}>
  <img src={img.liveChat.cannedResponses} alt="Canned responses settings page listing shortcodes with body previews and Shared or Personal visibility badges" />
</Browser>

The page has a **New response** button and a search field with the placeholder **Search shortcode or body**. The table shows **Shortcode**, **Body**, **Visibility** (badge **Shared** or **Personal**), **Created by**, and **Created**. The empty state reads **"No canned responses yet. Create your first one."**

A lock icon marks rows you cannot edit. Its tooltip reads **Only admins can manage shared responses** or **You need a livechat seat to manage personal responses**.

### The New canned response dialog

<Steps>
  <Step title="Open Settings from the views rail, then Canned responses">
    Existing canned responses are listed with their shortcode, body, and visibility.
  </Step>

  <Step title="Select New response">
    The **New canned response** dialog opens.
  </Step>

  <Step title="Enter a Shortcode">
    Keep it short, for example `greet`. The placeholder suggests **e.g. greet**.
  </Step>

  <Step title="Write the Body">
    Type `@` in the body editor to insert a token, for example the end user's name.
  </Step>

  <Step title="Pick a Visibility">
    **Personal** means **Only you can use this response**, and **Shared** means **Everyone in the team can use this response**.
  </Step>

  <Step title="Select Save">
    **Save** stays disabled until both the shortcode and body are filled. A toast confirms **Canned response created**.
  </Step>
</Steps>

<Frame>
  <img src={img.liveChat.newCannedResponseDialog} alt="New canned response dialog with the Shortcode field, the Body editor, and the Personal and Shared visibility options" />
</Frame>

Only admins can pick **Shared**. Other members see the tooltip **Only admins can create shared responses**.

### Tokens in the body

Tokens fill in with values from the current conversation when you insert the response. Built-in end user tokens are `name`, `email`, and `phone`. Custom attributes defined by an admin appear in the same picker, grouped by conversation and end user. See [Set up custom attributes](/docs/guides/live-chat/set-up-inboxes#set-up-custom-attributes).

### Insert a canned response

In the composer, type `/` at the start of a word, then part of the shortcode. A popover lists matching responses. Use the arrow keys to move, **Tab** or **Enter** to insert, and **Esc** to dismiss.

### Save a sent message as a canned response

Hold the pointer over one of your own messages, open **Message actions**, and select **Add to canned response**. The **New canned response** dialog opens with the message text already in the **Body** field.

### Edit or delete a canned response

Select a row, or its pencil icon, to open the **Edit canned response** dialog. The trash icon opens a delete dialog titled with the shortcode, for example **Delete /greet?**. It explains: **"This canned response will be removed. Existing messages already sent using it are unaffected."**

## Signatures

Open **Settings** from the views rail, then find the **Personal message signature** card on the **Preferences** page. Turn on the switch, write the signature in the editor, and select **Save message signature**. The card notes that the signature appears below your message body, separated by a delimiter, and that private notes never include it.

In the composer, the **Add signature** button toggles it per reply.

## When you cannot reply

The composer is replaced in some states.

| Situation                       | What you see                                                                                                                |
| ------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
| Conversation resolved           | **Conversation resolved** with a **Reopen conversation** button.                                                            |
| Conversation abandoned          | **Conversation abandoned** with a **Reopen conversation** button.                                                           |
| Assigned to another human agent | A banner naming the assignee with a **Reassign to me** button. A **Reassign conversation to yourself?** dialog confirms it. |
| The agent is in control         | **"You're observing this conversation. Take over to reply."** with a **Take over conversation** button.                     |
| Admin without a seat            | **Assign yourself a seat to reply** with a **Manage seats** button.                                                         |

## Resolve a conversation

<Note>
  Resolve works only when a human agent controls the conversation. Otherwise a toast explains that it was not resolved.
</Note>

<Steps>
  <Step title="Select Resolve in the header">
    The **Resolve conversation** dialog opens.
  </Step>

  <Step title="Add labels under Add labels (optional)">
    Labels already applied are shown checked and disabled.
  </Step>

  <Step title="Add a Reason (optional)">
    The internal note has a counter that shows the 500-character limit.
  </Step>

  <Step title="Select Resolve">
    The button reads **Resolving…** while it completes.
  </Step>
</Steps>

## Share a transcript

<Steps>
  <Step title="Open More actions in the header, then Send transcript">
    The **Send conversation transcript** dialog opens with a **Preview** panel.
  </Step>

  <Step title="Pick a recipient under Send to">
    Choose **The customer**, **The assigned agent**, or **Another email address**.
  </Step>

  <Step title="Select Send, or select Download instead">
    Download saves a zip with attachments, or a text file. A toast confirms the send.
  </Step>
</Steps>

For long conversations, the preview shows only the start. The sent and downloaded transcript is always complete.

## Verify

Send a reply in a test conversation, add a private note, and insert a canned response with `/`. The reply and the filled tokens appear in the thread, and the note stays amber and internal.

## Related pages

* [Work the inbox](/docs/guides/live-chat/work-the-inbox)
* [Set up inboxes](/docs/guides/live-chat/set-up-inboxes)
* [Notifications](/docs/guides/live-chat/notifications)
* [Use Copilot](/docs/guides/live-chat/copilot)
