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

> Proactive messages and campaign sends, with the delivery funnel timestamps and the provider error when a send failed.

Proactive messages and campaign sends, with the delivery funnel timestamps and the provider error when a send failed.

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

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

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

## Where it lands

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

<ResponseField name="customer_id" type="varchar(36)">
  Identifier of the workspace the send 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="contact_sk" type="bigint">
  Internal warehouse key for the contact. Join [`cloud_chat_contacts`](/data-export/catalog/cloud-chat/cloud_chat_contacts) through the conversation instead.
</ResponseField>

<ResponseField name="conversation_id" type="bigint">
  **Join key.** Conversation the message opened or belongs to. Joins to [`cloud_chat_conversations`](/data-export/catalog/cloud-chat/cloud_chat_conversations).
</ResponseField>

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

<ResponseField name="inbox_id" type="bigint">
  Inbox the message was sent from.
</ResponseField>

<ResponseField name="inbox_name" type="varchar(65535)">
  Name of that inbox.
</ResponseField>

<ResponseField name="campaign_id" type="bigint">
  Campaign the send belongs to. `NULL` when `outbound_source_type` is `individual_proactive`.
</ResponseField>

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

<ResponseField name="campaign_audience_name" type="varchar(65535)">
  Name of the audience the campaign targeted.
</ResponseField>

<ResponseField name="outbound_source_type" type="varchar(20)">
  What produced the send: `campaign` for a bulk send, `individual_proactive` for one agent reaching out to one contact.
</ResponseField>

<ResponseField name="created_at" type="timestamp">
  When the send was created in the workspace.
</ResponseField>

<ResponseField name="sent_at" type="timestamp">
  When the provider accepted the message. `NULL` when it never went out.
</ResponseField>

<ResponseField name="received_at" type="timestamp">
  When the message reached the contact's device.
</ResponseField>

<ResponseField name="read_at" type="timestamp">
  When the contact opened it. Always `NULL` on channels that do not report read receipts, which is not the same as unread.
</ResponseField>

<ResponseField name="replied_at" type="timestamp">
  When the contact replied.
</ResponseField>

<ResponseField name="message_sent_flag" type="boolean">
  Whether the message was sent. The funnel starts here.
</ResponseField>

<ResponseField name="message_received_flag" type="boolean">
  Whether it was delivered.
</ResponseField>

<ResponseField name="message_read_flag" type="boolean">
  Whether it was read.
</ResponseField>

<ResponseField name="message_replied_flag" type="boolean">
  Whether the contact replied. The four flags give you the delivery funnel without comparing timestamps for `NULL`.
</ResponseField>

<ResponseField name="error_code" type="varchar(6)">
  Provider error code when the send failed. `NULL` on successful sends.
</ResponseField>

<ResponseField name="error_category" type="varchar(97)">
  The error code with a plain-language explanation, for example a rate limit, a policy block or an undeliverable number. `Other error` covers codes without a specific category.
</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>
