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

> Una fila por cada flujo de conversación ejecutado.

# fact\_sessions

Cada fila representa un flujo de conversación ejecutado (inbound o outbound). Un flujo de conversación es la interacción completa de un usuario con un flujo de Treble, desde que inicia hasta que finaliza.

## ¿Qué preguntas responde?

* ¿Cuántos flujos de conversación se ejecutaron?
* ¿Cuántos fueron inbound y cuántos outbound?
* ¿Qué campañas generaron más flujos?
* ¿Cuál fue el estado final de cada flujo?
* ¿Qué línea de WhatsApp se usó?

## Columnas

| Columna             | Tipo       | Descripción                                                             |
| ------------------- | ---------- | ----------------------------------------------------------------------- |
| `session_id`        | Int64      | Identificador único del flujo de conversación                           |
| `company_id`        | Int32      | Identificador de la empresa (filtrado automáticamente)                  |
| `created_at`        | DateTime64 | Fecha y hora de inicio                                                  |
| `cellphone`         | String     | Número de celular del usuario                                           |
| `country_code`      | String     | Código de país del usuario                                              |
| `status`            | String     | Estado final del flujo: `HumanHandover`, `Rating`, `Finished`, etc.     |
| `is_valid`          | Bool       | Si el flujo se completó correctamente                                   |
| `poll_id`           | Int32      | Identificador de la campaña/conversación                                |
| `poll_name`         | String     | Nombre de la campaña                                                    |
| `channel_id`        | Int32      | Identificador de la línea de WhatsApp                                   |
| `channel_cellphone` | String     | Número de la línea de WhatsApp                                          |
| `inbound_outbound`  | String     | `INBOUND` si el usuario inició, `OUTBOUND` si fue por campaña           |
| `contact_id`        | Int64      | Identificador del contacto en Treble. `0` si no tiene contacto asociado |
| `finished_at`       | DateTime64 | Fecha y hora de finalización                                            |

## Consultas de ejemplo

### Consumo inbound vs outbound por día

```sql theme={null}
SELECT
    toDate(created_at) AS dia,
    inbound_outbound,
    count() AS total,
    countIf(is_valid) AS validos
FROM client_analytics.fact_sessions
WHERE created_at >= now() - INTERVAL 30 DAY
GROUP BY dia, inbound_outbound
ORDER BY dia DESC
```

### Top campañas por volumen

```sql theme={null}
SELECT
    poll_name,
    inbound_outbound,
    count() AS flujos,
    countIf(status = 'HumanHandover') AS pasaron_a_agente
FROM client_analytics.fact_sessions
WHERE created_at >= now() - INTERVAL 30 DAY
GROUP BY poll_name, inbound_outbound
ORDER BY flujos DESC
LIMIT 20
```
