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

# cloud_chat_conversations

> The workspace-side conversation table: inbox, team, assignee, CSAT, durations and message counts on a single row. The widest table in the export.

The workspace-side conversation table: inbox, team, assignee, CSAT, durations and message counts on a single row. The widest table in the export.

<Columns cols={3}>
  <Card title="One row is">
    one Cloud Chat conversation
  </Card>

  <Card title="Delivery">
    Rewritten daily
  </Card>

  <Card title="Columns">
    64
  </Card>
</Columns>

## Where it lands

```text theme={null}
s3://<YOUR_BUCKET>/v1/datamart_cloudchat_saas/cloud_chat_conversations/snapshot_date=<DATE>/
```

The partition delivered today holds the whole table. Read the latest
`snapshot_date=` partition only, and check for `_SUCCESS` before you do, as
described in [bucket layout](/data-export/bucket-layout#how-to-tell-if-a-partition-is-ready).

## Columns

<ResponseField name="cc_conversations_sk" type="bigint">
  Internal warehouse key. Not stable between deliveries — join on `conversation_id` instead.
</ResponseField>

<ResponseField name="cc_inboxes_sk" type="bigint">
  Internal warehouse key for the inbox. Use `inbox_id`.
</ResponseField>

<ResponseField name="cc_users_sk" type="bigint">
  Internal warehouse key for the user. Use `assignee_id`.
</ResponseField>

<ResponseField name="cc_account_sk" type="bigint">
  Internal warehouse key for the account. Use `account_id`.
</ResponseField>

<ResponseField name="cc_account_users_sk" type="bigint">
  Internal warehouse key for the account-user pairing.
</ResponseField>

<ResponseField name="cc_teams_sk" type="bigint">
  Internal warehouse key for the team. Use `team_id`.
</ResponseField>

<ResponseField name="conversation_id" type="bigint">
  **Join key.** Unique id of the conversation. Every other Cloud Chat table joins back to this column.
</ResponseField>

<ResponseField name="account_id" type="bigint">
  Account the conversation belongs to.
</ResponseField>

<ResponseField name="inbox_id" type="bigint">
  Inbox that received the conversation.
</ResponseField>

<ResponseField name="team_id" type="bigint">
  Team the conversation was routed to. `NULL` when it was never assigned to a team.
</ResponseField>

<ResponseField name="assignee_id" type="bigint">
  Agent assigned when the snapshot was taken. This is the current assignee, not every agent who touched the conversation — for that, use [`cloud_chat_conversations_first_reply_metrics`](/data-export/catalog/cloud-chat/cloud_chat_conversations_first_reply_metrics).
</ResponseField>

<ResponseField name="conversation_display_id" type="bigint">
  Number shown to agents in the workspace. Use `conversation_id` for joins: the display number is only unique within an account.
</ResponseField>

<ResponseField name="contact_id" type="bigint">
  Contact on the customer side. Joins to [`cloud_chat_contacts`](/data-export/catalog/cloud-chat/cloud_chat_contacts).
</ResponseField>

<ResponseField name="contact_inbox_id" type="bigint">
  The contact's identity within this specific inbox.
</ResponseField>

<ResponseField name="campaign_id" type="bigint">
  Campaign that started the conversation. `NULL` for conversations the customer started.
</ResponseField>

<ResponseField name="conversation_uuid" type="varchar(255)">
  **Join key.** Stable identifier of the conversation across systems. Matches `cloudchat_id` on [`claudia_conversation`](/data-export/catalog/claudia/claudia_conversation) — this is how you connect the agent's view to the workspace's view.
</ResponseField>

<ResponseField name="customer_id" type="varchar(36)">
  Identifier of the workspace the conversation belongs to. Each `customer_id` maps to exactly one `tenant_id`, but a tenant can have several.
</ResponseField>

<ResponseField name="tenant_id" type="varchar(256)">
  Id of the tenant. `NULL` for rows with no tenant mapping.
</ResponseField>

<ResponseField name="tenant_name" type="varchar(256)">
  Name of the tenant. `NULL` for rows with no tenant mapping.
</ResponseField>

<ResponseField name="instance_id" type="varchar(11)">
  Instance the workspace is served from.
</ResponseField>

<ResponseField name="status_code" type="varchar(50)">
  Conversation status as a numeric code stored as text: `0` open, `1` resolved, `2` pending, `3` snoozed. Higher codes appear as the product adds statuses, so prefer `resolved_flag` for resolution logic rather than comparing to `1`.
</ResponseField>

<ResponseField name="priority_code" type="varchar(50)">
  Priority as a numeric code stored as text, ascending. Empty string and `NULL` both mean no priority was set — check for both.
</ResponseField>

<ResponseField name="inbox_name" type="varchar(65535)">
  Human-readable inbox name.
</ResponseField>

<ResponseField name="assignee_email" type="varchar(255)">
  Email of the assigned agent. Personal data of your own staff; treat it accordingly.
</ResponseField>

<ResponseField name="assignee_name" type="varchar(255)">
  Name of the assigned agent.
</ResponseField>

<ResponseField name="team_name" type="varchar(255)">
  Name of the team the conversation was routed to.
</ResponseField>

<ResponseField name="account_name" type="varchar(255)">
  Name of the account.
</ResponseField>

<ResponseField name="tags_list" type="varchar(1024)">
  Tags applied, as a single delimited string, truncated at the column length. Use [`cloud_chat_conversations_tags`](/data-export/catalog/cloud-chat/cloud_chat_conversations_tags) whenever you need to group or filter by tag.
</ResponseField>

<ResponseField name="agent_type" type="varchar(5)">
  Who handled the conversation: `AI` or `HUMAN`.
</ResponseField>

<ResponseField name="csat_value" type="integer">
  Satisfaction score, from 1 to 5. `NULL` when no survey was answered.
</ResponseField>

<ResponseField name="csat_response_submitted_at" type="timestamp">
  When the customer submitted the survey.
</ResponseField>

<ResponseField name="csat_sent_flag" type="boolean">
  Whether a survey was sent.
</ResponseField>

<ResponseField name="csat_responded_flag" type="boolean">
  Whether the customer answered. Divide by `csat_sent_flag` for a response rate.
</ResponseField>

<ResponseField name="snoozed_until_date" type="timestamp">
  When a snoozed conversation is due to reopen. Only populated while `status_code` is `3`.
</ResponseField>

<ResponseField name="waiting_since_date" type="timestamp">
  Since when the conversation has been waiting on a reply.
</ResponseField>

<ResponseField name="created_at" type="timestamp">
  When the conversation was created.
</ResponseField>

<ResponseField name="updated_at" type="timestamp">
  When the conversation record was last modified.
</ResponseField>

<ResponseField name="contact_last_seen_at" type="timestamp">
  When the customer was last active in the conversation.
</ResponseField>

<ResponseField name="agent_last_seen_at" type="timestamp">
  When any agent last opened the conversation.
</ResponseField>

<ResponseField name="last_activity_at" type="timestamp">
  Last activity of any kind on the conversation.
</ResponseField>

<ResponseField name="assignee_last_seen_at" type="timestamp">
  When the assigned agent last opened the conversation.
</ResponseField>

<ResponseField name="client_first_message_at" type="timestamp">
  The customer's first message. Differs from `created_at` on conversations the workspace started.
</ResponseField>

<ResponseField name="first_reply_created_at" type="timestamp">
  First reply from the workspace side. `NULL` when nobody replied.
</ResponseField>

<ResponseField name="time_to_first_response_seconds" type="bigint">
  Seconds from the customer's first message to the first reply.
</ResponseField>

<ResponseField name="time_to_first_response_minutes" type="double precision">
  The same interval in minutes.
</ResponseField>

<ResponseField name="working_minutes_to_first_response" type="double precision">
  Minutes to the first reply, counting only the operation's working hours. Use this one against an SLA — the wall-clock version penalizes overnight arrivals.
</ResponseField>

<ResponseField name="proactively_initiated_flag" type="boolean">
  Whether the workspace started the conversation rather than the customer.
</ResponseField>

<ResponseField name="ai_agent_flag" type="boolean">
  Whether an AI agent handled it. The boolean form of `agent_type`.
</ResponseField>

<ResponseField name="resolved_flag" type="boolean">
  Whether the conversation is resolved. Prefer this over comparing `status_code`.
</ResponseField>

<ResponseField name="is_conversation_recontact_flag" type="boolean">
  Whether the customer came back about the same subject shortly after this conversation was resolved.
</ResponseField>

<ResponseField name="resolved_at" type="timestamp">
  When the conversation was resolved. `NULL` while unresolved.
</ResponseField>

<ResponseField name="resolved_at_date" type="date">
  Date of `resolved_at`. Convenient for grouping a resolution report by day.
</ResponseField>

<ResponseField name="working_minutes_to_solve" type="double precision">
  Minutes from creation to resolution, within working hours.
</ResponseField>

<ResponseField name="minutes_to_solve" type="double precision">
  Minutes from creation to resolution, in wall-clock time.
</ResponseField>

<ResponseField name="working_minutes_waiting" type="double precision">
  Minutes the customer spent waiting on a reply, within working hours.
</ResponseField>

<ResponseField name="minutes_waiting" type="double precision">
  Minutes the customer spent waiting, in wall-clock time.
</ResponseField>

<ResponseField name="working_minutes_in_service" type="double precision">
  Minutes the conversation was actively handled, within working hours.
</ResponseField>

<ResponseField name="minutes_in_service" type="double precision">
  Minutes actively handled, in wall-clock time.
</ResponseField>

<ResponseField name="messages_sent_in_conversation" type="bigint">
  Messages sent by the workspace side.
</ResponseField>

<ResponseField name="messages_received_in_conversation" type="bigint">
  Messages received from the customer.
</ResponseField>

<ResponseField name="contact_custom_fields" type="varchar(65535)">
  The contact's custom fields, serialized as JSON. Parse on your side, or use the long-format columns on [`cloud_chat_conversations_custom_fields`](/data-export/catalog/cloud-chat/cloud_chat_conversations_custom_fields).
</ResponseField>

<ResponseField name="conversation_custom_fields" type="varchar(65535)">
  The conversation's custom fields, serialized as JSON.
</ResponseField>

<ResponseField name="etl_updated_at" type="timestamp">
  When the datamart last wrote this row. Use it to spot conversations that changed since your previous load.
</ResponseField>

<ResponseField name="snapshot_date" type="date">
  Partition column. Date of the delivery that wrote this file, in `YYYY-MM-DD`.
</ResponseField>
