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

# Set up inboxes

> Configure an inbox's identity, members, routing, working hours, and what end users see, plus the settings every inbox shares.

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, your inbox has a name, a member list, a routing strategy, working hours, and an out-of-hours message. You also know where the shared labels, custom attributes, timezone, and pickup target live.

<Browser url={urls.app}>
  <img src={img.liveChat.inboxesSettings} alt="Inboxes settings page listing inboxes with Name, Agent, Members, Status, and Last activity columns" />
</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.

* Inboxes, Labels, Custom attributes, and Team members are Admin-only pages. Members without the Admin role do not see them in the settings rail.
* An inbox is the live chat settings of one deployment, so there is no create button. Publish an agent first. See [Create an agent](/docs/guides/building/create-an-agent).
* Only members with a live-chat seat can be added to an inbox. See [Live-chat overview and seats](/docs/guides/live-chat/overview-and-seats).

## Open the Inboxes page

Open **Conversations**, select **Settings** in the views rail, then select **Inboxes**. The page description reads "Manage livechat inboxes for each agent. Configure agents, working hours, CSAT, and behavior here." A **Search inboxes** field filters the table by inbox name or agent name.

| Column            | Meaning                                                                |
| ----------------- | ---------------------------------------------------------------------- |
| **Name**          | The inbox name shown across the dashboard.                             |
| **Agent**         | The agent this inbox belongs to.                                       |
| **Members**       | How many human agents can reply in this inbox.                         |
| **Status**        | **Active** when the inbox has at least one member, otherwise **Idle**. |
| **Last activity** | The most recent conversation activity, as relative time.               |

With no inboxes, the table reads **"No inboxes yet. Create an agent to provision your first inbox."** A search with no hits reads **"No matches."** Selecting a row opens that inbox's settings page.

## Configure an inbox

<Steps>
  <Step title="Open Conversations, then Settings, then Inboxes">
    Select an inbox row. The page opens on the **General** tab with the inbox name as its title.
  </Step>

  <Step title="On the General tab, enter the Inbox name">
    The name is required. It appears in your dashboard and in notifications.
  </Step>

  <Step title="Choose the sender appearance">
    Pick **Friendly** for the first name only, or **Professional** for a name with your business.
    Selecting **Professional** reveals a **Business name** field.
  </Step>

  <Step title="On the Members tab, select Add agents">
    Search, tick the human agents you want, then select the **Add** button in the dialog.
  </Step>

  <Step title="On the Routing tab, pick a Strategy">
    Choose **Least busy** or **Round robin**, then review the three **Timing** fields.
  </Step>

  <Step title="On the Availability tab, turn on Enable working hours">
    Set each day's shift and write the **Out-of-hours message**.
  </Step>

  <Step title="On the Analytics tab, review the Customer experience toggles">
    Turn **CSAT survey**, **Read receipts**, and the **"Agent joined" chip** on or off.
  </Step>

  <Step title="Select Save changes">
    The toast **"Inbox settings updated"** confirms the save.
  </Step>
</Steps>

## How saving works

The inbox settings page has five tabs: **General**, **Members**, **Routing**, **Availability**, and **Analytics**. Edits on the **General**, **Routing**, **Availability**, and **Analytics** tabs collect in one draft. As soon as the draft differs from the saved inbox, an **Unsaved changes** label appears beside the tabs with **Discard** and **Save changes** buttons.

<Warning>
  **Discard** throws away every unsaved edit across all four draft tabs at once. A confirmation dialog titled **"Discard unsaved changes?"** reads "Your edits will be lost." before the draft is reset.
</Warning>

The **Members** tab is different. Adding or removing a member saves immediately and shows its own toast, so it never appears in the **Unsaved changes** bar.

## The General tab

The **Identity** card holds the required **Inbox name** field, with the placeholder `Customer support`. The hint reads "Used in your dashboard and notifications."

The **Sender appearance** card controls the name end users see beside human agent replies. It offers two radio cards:

| Option           | What end users see                                                                                                                                               |
| ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Friendly**     | The human agent's first name only, for example "John".                                                                                                           |
| **Professional** | "John from Acme". Selecting it reveals the **Business name** field, placeholder `Acme Support`. When the field is empty, the agent display name is used instead. |

## The Members tab

The **Members** card title shows the current count, for example **Members (2)**. It lists each human agent with avatar, name, and email, and a remove control on the right of every row. The empty state reads **"No agents assigned yet. Add team members to start handling live chats."**

### The Add agents to inbox dialog

Select **Add agents** to open the **Add agents to inbox** dialog. A **Search agents** field filters by name or email. Each row has a checkbox, and the confirm button label counts your selection, for example **Add 2 agent(s)**.

Only members who hold a live-chat seat and are not already in the inbox are listed. When nobody qualifies, the list reads **"No seated agents available."** On success the toast reads `Added 2 agent(s) to inbox`, and removing a member shows **"Agent removed from inbox"**.

## The Routing tab

The **Assignment strategy** card holds one **Strategy** select with **Least busy** and **Round robin**. The info icon beside the card title explains both options and notes that this is the default for every live chat handoff on this inbox.

The **Timing** card holds three number fields, each with an info icon that states its maximum. The card description says when the system steps in to reassign, escalate, or reopen.

| Field                      | Range           | What it does                                                                                                                                                |
| -------------------------- | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Agent response timeout** | 1 to 30 minutes | If the assigned human agent does not respond inside the window, whether silent or offline, the conversation is reassigned to another available human agent. |
| **Inactivity timeout**     | 1 to 168 hours  | If no message arrives from either side for that long, the conversation is marked abandoned and drops out of the open queue.                                 |
| **Reopen window**          | Up to 168 hours | After a conversation is resolved, the same end user can resume it inside the window. After that, a fresh conversation starts.                               |

## The Availability tab

<Frame>
  <img src={img.liveChat.inboxAvailabilityTab} alt="Inbox settings Availability tab with working hours enabled, Monday to Friday rows showing 09:00 to 17:00 and Saturday and Sunday marked Closed, above the Out-of-hours message card" />
</Frame>

The **Working hours** card defines when human agents are on shift. Its description says times use the organization timezone and links to **Preferences**, where you set it. See [Set the timezone and pickup target](#set-the-timezone-and-pickup-target).

The **Enable working hours** toggle turns the schedule on. When it is off, human agents are considered available around the clock. Turning it on fills Monday to Friday with 09:00 to 17:00 and leaves Saturday and Sunday closed.

Each day row has its own switch, a **From** time picker, a **To** time picker, and a **Total** column. A day that is switched off shows **Closed**. A shift whose end is not after its start shows **Invalid** in red instead of a total.

The **Out-of-hours message** card holds one **Message** field. Its placeholder reads `We're offline right now. Leave a message and we'll reply when we're back.` End users see this text when a conversation is handed to live chat while no shift is active.

## The Analytics tab

The **Primary analytics goal** card is optional. It highlights one goal in this deployment's analytics without hiding the rest. The **Primary goal** select lists the agent's goals as `label (kind)` and offers **No primary goal** at the top. When the agent has no goals, the hint tells you to create one in the agent's **Configure → Goals** section.

While an agent is chosen but no goal is picked, **Save changes** stays disabled. Pick a goal or choose **No primary goal** to enable it again.

The **Customer experience** card holds three toggles:

| Toggle                  | What it does                                                                                                               |
| ----------------------- | -------------------------------------------------------------------------------------------------------------------------- |
| **CSAT survey**         | Sends a 5-star satisfaction survey after the conversation is resolved. See [Collect CSAT ratings](/docs/guides/live-chat/csat). |
| **Read receipts**       | Shows a "Read" indicator when messages are seen. On by default.                                                            |
| **"Agent joined" chip** | Displays a system chip in the conversation when a human agent takes over.                                                  |

## Set the timezone and pickup target

Two organization-wide settings live on the **Preferences** page, under the **Workspace** heading. Open **Conversations**, then **Settings**, then **Preferences**. Both cards are Admin-only. Other members see the timezone as read-only text with an "(admin-only)" note and do not see the pickup target card.

### Workspace timezone

The **Workspace timezone** card holds a searchable timezone picker with the placeholder **Select timezone…**. The value is used for timestamps in transcripts and exports and for inbox working hours, and it is shared across the organization. When no timezone is set, the dashboard fills in the browser's timezone the first time an Admin opens the page.

### Livechat pickup target

The **Livechat pickup target** card sets how quickly a human agent should accept a handoff. Enter a whole number, pick **seconds** or **minutes**, then select **Save**. The toast reads **"Pickup target saved"**, and a **Clear** button appears beside the fields.

The card accepts targets between 1 second and 7 days. Anything else is rejected with **"Target must be between 1 second and 7 days."** When no target is set, the card reads "Not set". Analytics then shows pickup latency without a pass or fail. See [Team performance](/docs/guides/analytics/team-performance) for where the target appears.

The personal message signature and send hotkey on the same page belong to each seated human agent. See [Use the Agent Workspace](/docs/guides/live-chat/agent-workspace).

## Set up labels

Labels organize conversations and end users. Admins create labels, and seated human agents apply them. Open **Conversations**, then **Settings**, then **Labels**.

<Browser url={urls.app}>
  <img src={img.liveChat.labelsSettings} alt="Labels settings page with the Use labels in analytics toggle and a table of labels" />
</Browser>

The **Use labels in analytics** card holds one switch. When it is on, labels become a dimension you can chart in **Analytics → Explore**. Below it, a **Search labels** field filters the table, and the empty state reads **"No labels yet. Create one to start organizing conversations."**

| Column          | Meaning                                                                                            |
| --------------- | -------------------------------------------------------------------------------------------------- |
| **Color**       | The label swatch.                                                                                  |
| **Name**        | The label name, always lowercase.                                                                  |
| **Description** | Optional context for your team.                                                                    |
| **Created**     | When the label was created.                                                                        |
| **Sidebar**     | A switch. When on, the label appears as a filter under **Labels** in the Conversations views rail. |

The overflow menu on each row offers **Edit** and **Delete**.

### The Create label dialog

Select **New label** to open the **Create label** dialog. Its description explains that labels organize conversations and end users, and that team members can apply them once you create them here.

| Field                                      | Rules                                                                                                                                                                            |
| ------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Name**                                   | Required. Lowercase letters, digits, hyphens, and spaces only, up to 50 characters. The placeholder is `billing`. A duplicate shows **"A label with this name already exists."** |
| **Description**                            | Optional, up to 200 characters.                                                                                                                                                  |
| **Color**                                  | Required. The picker opens with a random color already chosen.                                                                                                                   |
| **Show on conversation sidebar as filter** | Checkbox, on by default. Same as the **Sidebar** switch in the table.                                                                                                            |

Select **Create label** to save. The toast reads `Label "billing" created`.

### The Edit label dialog

Choose **Edit** from a row's menu to open the **Edit label** dialog with the same fields. The **Save changes** button confirms, and the toast reads `Label "billing" updated`.

<Warning>
  Renaming a label rewrites every conversation and end user it is applied to. Saved filters, CSV exports, and webhooks keyed on the old name will break. The info icon beside **Name** repeats this warning.
</Warning>

### The Delete label dialog

Choose **Delete** from a row's menu. The dialog is titled `Delete label "billing"?` and reports how many conversations and end users the label is applied to, for example 12 conversations and 3 end users. Deleting removes it from all of them.

Select **Delete** to confirm. The toast reads `Label "billing" deleted`.

## Set up custom attributes

Custom attributes are a typed schema for structured data on conversations and end users. Canned responses can insert them with `{{conversation.key}}` or `{{endUser.key}}` tokens. See [Use the Agent Workspace](/docs/guides/live-chat/agent-workspace) for how tokens render.

Open **Conversations**, then **Settings**, then **Custom attributes**. Two tabs split the schema by scope and show a count, for example **Conversation (3)** and **User (1)**. The empty state reads **"No attributes defined yet. Create your first one."**

| Column           | Meaning                                                                        |
| ---------------- | ------------------------------------------------------------------------------ |
| **Display name** | The name shown in the details rail and dialogs.                                |
| **Key**          | The token key, for example `order_id`.                                         |
| **Type**         | **Text**, **Number**, **Checkbox**, **Date**, **List**, or **Link**.           |
| **Description**  | Optional context.                                                              |
| **Analytics**    | A switch. See [Use an attribute in analytics](#use-an-attribute-in-analytics). |

Each row also has an edit and a delete control, and selecting a row opens the edit dialog.

### The New attribute dialog

<Frame>
  <img src={img.liveChat.newAttributeDialog} alt="New attribute dialog on the Custom attributes page with Display name, Key, Description, Type set to List, and List options fields" />
</Frame>

Select **New attribute** on the tab you want. The dialog creates the attribute in that tab's scope.

| Field                      | Rules                                                                                                                                                                                  |
| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Display name**           | Required, for example `Order ID`.                                                                                                                                                      |
| **Key**                    | Fills in from the display name when you leave the field, for example `order_id`. Must be lowercase, start with a letter, and use only letters, digits, and underscores.                |
| **Description (optional)** | What this attribute represents.                                                                                                                                                        |
| **Type**                   | **Text**, **Number**, **Checkbox**, **Date**, **List**, or **Link**.                                                                                                                   |
| **List options**           | Shown for the **List** type and required. Type each option and press Enter.                                                                                                            |
| **Regex (optional)**       | Shown for the **Text** and **Link** types. Values that do not match are rejected. The info icon gives examples such as `^ORD-\d+$` for an order code. Leave blank to accept any value. |

Select **Save** to create it. The toast reads **"Custom attribute created"**.

<Warning>
  The key cannot be changed after creation, so choose it before you save. In the **Edit attribute** dialog the **Key** field is disabled and reads "Key cannot be changed after creation."
</Warning>

### The Delete dialog

Select the delete control on a row. The dialog is titled `Delete "Order ID"?` and warns that existing values become orphaned and canned response tokens for it render as empty. Confirm to delete. The toast reads **"Custom attribute deleted"**.

### Use an attribute in analytics

The **Analytics** switch on a row makes that attribute a grouping in analytics. It can only be turned on for attributes on the **Conversation** tab whose type is **List** or **Checkbox**. Analytics needs a bounded set of values to group by. For every other row, the switch is disabled and its tooltip explains why.

Collection starts after you turn the switch on. Existing values are not backfilled.

## Verify

Open **Conversations** and check the views rail. Your inbox appears under the **Inboxes** heading, and labels with the **Sidebar** switch on appear under **Labels**. Open a conversation and expand **Conversation attributes** in the details rail to see your new custom attribute.

## Related pages

* [Assignment and availability](/docs/guides/live-chat/assignment-and-availability)
* [Collect CSAT ratings](/docs/guides/live-chat/csat)
* [Work the inbox](/docs/guides/live-chat/work-the-inbox)
* [Use the Agent Workspace](/docs/guides/live-chat/agent-workspace)
