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

> Response time per assignment, not per conversation. A conversation reassigned three times has three rows here.

Response time per assignment, not per conversation. A conversation reassigned three times has three rows here.

<Columns cols={3}>
  <Card title="One row is">
    one agent assignment
  </Card>

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

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

## Where it lands

```text theme={null}
s3://<YOUR_BUCKET>/v1/datamart_cloudchat_saas/cloud_chat_conversations_first_reply_metrics/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="conversation_first_reply_metric_sk" type="bigint">
  Internal warehouse key. Not stable between deliveries — the row is identified by `conversation_id` plus `assignment_sequence`.
</ResponseField>

<ResponseField name="conversation_sk" type="bigint">
  Internal warehouse key for the conversation. Use `conversation_id`.
</ResponseField>

<ResponseField name="customer_id" type="varchar(36)">
  Identifier of the workspace the row belongs to.
</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(100)">
  Instance the workspace is served from.
</ResponseField>

<ResponseField name="conversation_id" type="bigint">
  **Join key.** Conversation that was assigned. Joins to [`cloud_chat_conversations`](/data-export/catalog/cloud-chat/cloud_chat_conversations). Not unique here: one row per assignment.
</ResponseField>

<ResponseField name="conversation_display_id" type="bigint">
  Number shown to agents for that conversation.
</ResponseField>

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

<ResponseField name="agent_user_id" type="bigint">
  Agent the conversation was assigned to in this row.
</ResponseField>

<ResponseField name="agent_name" type="varchar(255)">
  Name of that agent.
</ResponseField>

<ResponseField name="human_agent_flag" type="boolean">
  Whether the assignee was a person rather than an AI agent.
</ResponseField>

<ResponseField name="agent_type" type="varchar(5)">
  Type of assignee: `AI` or `HUMAN`.
</ResponseField>

<ResponseField name="assignment_sequence" type="bigint">
  Position of this assignment in the conversation, starting at 1. Filter to `1` for the first handler; the highest value is the last.
</ResponseField>

<ResponseField name="post_ai_handoff_flag" type="boolean">
  Whether this assignment happened after an AI agent handed the conversation over. Use it to measure response time only on conversations a person inherited.
</ResponseField>

<ResponseField name="agent_assigned_at" type="timestamp">
  When the assignment started.
</ResponseField>

<ResponseField name="agent_unassigned_at" type="timestamp">
  When it ended. `NULL` while the agent is still assigned, which is why `assignment_duration_seconds` can be `NULL` on open conversations.
</ResponseField>

<ResponseField name="agent_assigned_flag" type="boolean">
  Whether the assignment was actually recorded against an agent.
</ResponseField>

<ResponseField name="assignment_duration_seconds" type="bigint">
  Seconds the agent held the conversation.
</ResponseField>

<ResponseField name="assignment_duration_minutes" type="double precision">
  The same duration in minutes.
</ResponseField>

<ResponseField name="first_response_at" type="timestamp">
  The agent's first reply during this assignment.
</ResponseField>

<ResponseField name="responded_flag" type="boolean">
  Whether the agent replied at all during the assignment. `false` marks assignments that were reassigned before anyone answered.
</ResponseField>

<ResponseField name="seconds_from_assignment_to_first_response" type="bigint">
  Seconds from assignment to first reply, in wall-clock time.
</ResponseField>

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

<ResponseField name="working_seconds_from_assignment_to_first_response" type="bigint">
  Seconds from assignment to first reply, within working hours.
</ResponseField>

<ResponseField name="working_minutes_from_assignment_to_first_response" type="double precision">
  The same interval in minutes. This is the fairest measure of an agent's response time.
</ResponseField>

<ResponseField name="seconds_from_available_to_first_response" type="bigint">
  Seconds from the moment the conversation became available to answer to the first reply, in wall-clock time.
</ResponseField>

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

<ResponseField name="working_seconds_from_available_to_first_response" type="bigint">
  The same interval in seconds, within working hours.
</ResponseField>

<ResponseField name="working_minutes_from_available_to_first_response" type="double precision">
  The same interval in minutes, within working hours.
</ResponseField>

<ResponseField name="team_id" type="bigint">
  Team the agent belonged to for this assignment.
</ResponseField>

<ResponseField name="team_name" type="varchar(255)">
  Name of that team.
</ResponseField>

<ResponseField name="etl_updated_at" type="timestamp">
  When the datamart last wrote this row.
</ResponseField>

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