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

> Cada mensagem outbound de campanha com seu ciclo de vida de entrega completo.

# fact\_campaign\_sends

Cada linha é uma mensagem outbound de uma campanha para um destinatário, com seu ciclo de vida de entrega completo: agendada → enviada → entregue → respondida, ou o motivo exato da falha. Ela substitui a antiga `fact_deployment_status`.

## Que perguntas ela responde?

* Qual é a taxa de entrega e de resposta de cada campanha?
* Quais destinatários específicos falharam, e por quê?
* Quanto tempo leva o percurso agendada → entregue → respondida?
* Quais envios tiveram novas tentativas?
* Quanto tráfego vem de cada canal — API, upload de arquivos, integrações de CRM (`origin`)?

## Colunas

| Coluna              | Tipo       | Descrição                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| ------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `deployment_id`     | String     | Identificador único do envio (hex de 56 caracteres)                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `company_id`        | Int32      | Sua empresa (filtrada automaticamente)                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `batch_id`          | String     | O lote ao qual este envio pertence (uma execução de campanha)                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `status`            | String     | Status atual do ciclo de vida. Caminho de sucesso: `DELIVERED`, `SUCCESS` (enviado, entrega ainda não confirmada). Em andamento: `RECEIVED`, `RECEIVED_BY_WORKER`, `RETRY`. Cancelado: `REVOKED`. Rejeitado antes do envio: `INVALID_PHONE`, `INVALID_POLL`, `MISSING_PARAMETER`, `PARAMETER_MISMATCH`, `VALIDATION_ERROR`. Falha: `FAILURE` e a família `FAILURE_BY_*` (`_UNABLE_TO_CONTACT`, `_DISABLED_HSM`, `_META_CHOSE_NOT_DELIVER`, `_HUMAN_HANDOVER`, `_OPTOUT_CONTACT`, `_RATE_LIMIT`, entre outros) |
| `retries`           | Int32      | Número de novas tentativas                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `poll_id`           | Int32      | Fluxo que a campanha dispara                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `poll_name`         | String     | Nome do fluxo                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `origin`            | String     | De onde veio o envio: `API`, `CSV` (upload de arquivo na plataforma), `SIMPLE` (envio direto pela plataforma), `APP_INTEGRATION`, `HELPDESK_INTEGRATION`                                                                                                                                                                                                                                                                                                                                                      |
| `origin_id`         | Int32      | Identificador da origem: o usuário da plataforma que o disparou (`CSV`/`SIMPLE`), a integração que o acionou (`APP_INTEGRATION`/`HELPDESK_INTEGRATION`) ou o id fornecido por quem chamou a API; `0` quando não definido                                                                                                                                                                                                                                                                                      |
| `scheduled_at`      | DateTime64 | Quando o envio foi agendado                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `received_at`       | DateTime64 | Quando o WhatsApp aceitou a mensagem; `NULL` se não aconteceu                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `delivered_at`      | DateTime64 | Quando chegou ao telefone do usuário; `NULL` se não aconteceu                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `responded_at`      | DateTime64 | Quando o usuário respondeu; `NULL` se não respondeu                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `failed_at`         | DateTime64 | Quando falhou; `NULL` em caso de sucesso                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `succeeded_at`      | DateTime64 | Quando foi confirmado como bem-sucedido; `NULL` caso contrário                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `cellphone`         | String     | Número de telefone do destinatário                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `country_code`      | String     | Código do país do destinatário                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `treble_id`         | String     | Identidade do contato (código do país + celular)                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `business_scope_id` | String     | ID de usuário com escopo de negócio do WhatsApp, quando disponível                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `username`          | String     | Nome de usuário do WhatsApp, para contatos sem número de telefone                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| `scheduled`         | Bool       | `true` se o envio foi agendado para um horário futuro em vez de enviado imediatamente                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `synced_at`         | DateTime64 | Quando esta linha foi gravada/corrigida pela última vez                                                                                                                                                                                                                                                                                                                                                                                                                                                       |

<Note>
  Os status continuam mudando enquanto uma campanha está em andamento. Conforme [o contrato de dados](/pt/docs/data-warehouse-v2/welcome#o-contrato-de-dados), os números de um dia se consolidam completamente em até 48 horas — o warehouse atualiza cada linha no lugar à medida que seu status avança.
</Note>

## Exemplos de consultas

### Scorecard de campanha

```sql theme={null}
SELECT
    poll_name,
    count()                                   AS sends,
    countIf(delivered_at IS NOT NULL)         AS delivered,
    countIf(responded_at IS NOT NULL)         AS responded,
    round(100.0 * delivered / sends, 1)       AS delivery_pct,
    round(100.0 * responded / delivered, 1)   AS response_of_delivered_pct
FROM fact_campaign_sends
WHERE scheduled_at >= today() - 30
GROUP BY poll_name
ORDER BY sends DESC
```

### Destinatários com falha em um lote

```sql theme={null}
SELECT cellphone, status, retries, failed_at
FROM fact_campaign_sends
WHERE batch_id = '{your_batch_id}'
  AND failed_at IS NOT NULL
ORDER BY failed_at
```

### Tempo até a resposta

```sql theme={null}
SELECT
    poll_name,
    round(avg(dateDiff('minute', delivered_at, responded_at)), 1) AS avg_minutes_to_reply
FROM fact_campaign_sends
WHERE scheduled_at >= today() - 30
  AND delivered_at IS NOT NULL
  AND responded_at IS NOT NULL
GROUP BY poll_name
```
