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

# fact_treble_sessions

> Una fila por ejecución de flujo conversacional, inbound u outbound.

# fact\_treble\_sessions

Cada fila es una ejecución de un flujo conversacional por un usuario — desde el momento en que comienza (un envío de campaña o un mensaje inbound) hasta el momento en que termina. Es la tabla ancla del warehouse: mensajes, recorridos y variables se unen a ella a través de `session_id`.

## ¿Qué preguntas responde?

* ¿Cuántas conversaciones hubo, inbound vs outbound?
* ¿Qué flujos (`poll_name`) generan más conversaciones?
* ¿Dónde se detienen los usuarios? (`last_node_id`, resoluble contra `dim_poll_nodes`)
* ¿Qué keyword disparó cada conversación inbound?
* ¿Cuánto duran las conversaciones y cómo terminan?

## Columnas

| Columna             | Tipo       | Descripción                                                                                                                                                                                                    |
| ------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `session_id`        | Int64      | Identificador único del flujo conversacional                                                                                                                                                                   |
| `company_id`        | Int32      | Tu empresa (filtrado automáticamente)                                                                                                                                                                          |
| `created_at`        | DateTime64 | Cuándo comenzó la conversación                                                                                                                                                                                 |
| `cellphone`         | String     | Número de teléfono del usuario                                                                                                                                                                                 |
| `country_code`      | String     | Código de país del usuario                                                                                                                                                                                     |
| `status`            | String     | Quién atendió la conversación: `AI` (se mantuvo en el flujo automatizado), `HumanHandover` (fue transferida a un agente humano), `Rating` (pasó por un agente y llegó al paso de calificación de satisfacción) |
| `is_valid`          | Bool       | `true` una vez que al menos un mensaje de la conversación fue confirmado como entregado o leído por el usuario — la conversación efectivamente llegó al teléfono                                               |
| `poll_id`           | Int32      | Identificador del flujo                                                                                                                                                                                        |
| `poll_name`         | String     | Nombre del flujo                                                                                                                                                                                               |
| `channel_id`        | Int32      | Identificador de la línea de WhatsApp                                                                                                                                                                          |
| `channel_cellphone` | String     | Número de la línea de WhatsApp                                                                                                                                                                                 |
| `direction`         | String     | `INBOUND` (la inició el usuario) u `OUTBOUND` (la inició una campaña)                                                                                                                                          |
| `contact_id`        | Int64      | Contacto de Treble; `0` si no hay                                                                                                                                                                              |
| `finished_at`       | DateTime64 | Cuándo terminó; `NULL` si sigue abierta                                                                                                                                                                        |
| `trigger_keyword`   | String     | La keyword que disparó un flujo inbound, cuando alguna coincidió; vacío en caso contrario y para outbound                                                                                                      |
| `last_node_id`      | Int32      | El último nodo del flujo que alcanzó esta conversación; `0` si nunca alcanzó uno                                                                                                                               |
| `synced_at`         | DateTime64 | Cuándo se escribió/corrigió por última vez esta fila                                                                                                                                                           |

## Consultas de ejemplo

### ¿Dónde terminan las conversaciones, por flujo?

```sql theme={null}
SELECT
    s.last_node_id,
    n.node_type,
    n.question_text,
    count() AS conversations_ended_here
FROM fact_treble_sessions AS s
LEFT JOIN dim_poll_nodes AS n
    ON n.company_id = s.company_id AND n.node_id = s.last_node_id
WHERE s.poll_id = {your_poll_id}
  AND s.created_at >= today() - 30
GROUP BY s.last_node_id, n.node_type, n.question_text
ORDER BY conversations_ended_here DESC
```

### Conversaciones inbound por keyword de disparo

```sql theme={null}
SELECT trigger_keyword, count() AS conversations
FROM fact_treble_sessions
WHERE direction = 'INBOUND'
  AND created_at >= today() - 7
GROUP BY trigger_keyword
ORDER BY conversations DESC
```
