O que é o analytics agregado
O analytics agregado (GET /v1/analytics/*) entrega os mesmos números dos dashboards de Conversas e Talk da plataforma, mas em um formato pronto para o seu BI: linhas agregadas por período × dimensão, calculadas a partir dos seus dados de conversas e tickets.
Diferente dos relatórios operacionais, aqui as linhas já vêm agregadas — uma linha por balde de tempo e combinação de dimensões, não uma linha por evento.
O princípio dos componentes aditivos
A regra central do analytics: entregamos numerador e denominador; você faz a divisão. Nenhuma taxa, média ou percentual chega pré-calculado. Uma taxa de resposta, por exemplo, não vem como0.83. Vêm as duas contagens — conversations_answered e conversations_started — e você computa SUM(conversations_answered) / SUM(conversations_started) no seu BI, sobre o recorte que quiser.
O mesmo vale para as médias de SLA do Talk. Cada média chega como um par soma+contagem, e a soma carrega a unidade no nome — em segundos (por exemplo first_response_sum_seconds e first_response_count). A média é SUM(sum) / SUM(count) em segundos; divida ainda por 60 para minutos.
Grão: dia de São Paulo × dimensão
O grão canônico é o dia do calendário de São Paulo (America/Sao_Paulo) do timestamp que dirige cada métrica. Cada linha combina esse dia com as dimensões que você pedir em group_by.
tzcontrola o fuso do agrupamento por dia. O padrão éAmerica/Sao_Paulo;UTCtambém é aceito.group_byé uma lista separada por vírgulas de dimensões permitidas por métrica (por exemploagent_type,sourceem conversas). Cada dimensão agrupada aparece como uma chave adicional em cada linha.
Dia, semana e mês
day é o grão canônico. week (segunda-feira ISO) e month são o mesmo rollup somado sobre os dias — sem armazenamento separado, sem grão sub-diário. Isso só é válido porque toda métrica exposta é aditiva (uma contagem ou uma soma): semana e mês são apenas SUM sobre os dias.
Escopo padrão de conversas (agent_type)
Sem parâmetros, o endpoint de conversas retorna o mesmo recorte que os painéis mostram por padrão — as conversas do seu agente de IA no WhatsApp. Assim os números batem com a plataforma sem nenhuma configuração. Para ampliar (ou restringir) esse recorte, informe o filtroagent_type com uma lista separada por vírgulas dos tipos de agente que você quer incluir. Os valores válidos são os mesmos que aparecem na dimensão agent_type dos próprios resultados (agrupe por agent_type para vê-los). agent_type sobrescreve o padrão.
Frescor: as_of e stale
Odata_lake é atualizado por ETL a cada 6 horas. Por isso toda resposta de analytics carrega o frescor:
as_of— o momento (ISO 8601) da última execução de ETL bem-sucedida daquele metricset.nullquando desconhecido.stale—truequando os dados estão defasados (mais que ~2× a cadência de 6h, ou seja, quando uma execução foi pulada/falhou) ou quando o frescor é desconhecido.- O header
X-Data-As-Ofrepete oas_ofda resposta.
A política é servir com aviso, nunca falhar: mesmo defasada, a resposta volta com
200 e stale: true. Um carimbo ausente é lido como { as_of: null, stale: true } — nunca como atualizado. Use o endpoint de frescor para consultar o as_of de cada metricset de forma barata antes de puxar.as_of: uma execução parcial de ETL pode deixar conversas atualizado e tickets defasado. Por isso os endpoints nunca combinam duas fontes carimbadas independentemente.
Métricas NÃO aditivas
Nem tudo o que os dashboards mostram pode ser somado livremente. Estas métricas exigem cuidado — sempre reconstrua a partir dos componentes exportados, nunca some o resultado final:Taxas, médias e percentuais
Taxas, médias e percentuais
Taxa de resposta, taxa de agendamento, taxa de transferência, médias de SLA (tempo de atribuição, primeira resposta, handle time), CSAT. Recompute como
SUM(numerador) / SUM(denominador) — nunca faça a média das taxas diárias.Snapshots pontuais
Snapshots pontuais
tickets_in_service e status_id refletem o estado no instante do snapshot do ETL — um ticket pode mudar de balde numa execução posterior. São aditivos apenas dentro de um mesmo snapshot.Dimensões que se sobrepõem
Dimensões que se sobrepõem
Quando uma conversa tem vários produtos/empreendimentos (ou vários skills), ela aparece em mais de um balde da dimensão. Somar ao longo dessa dimensão superconta o total distinto — a aditividade só vale no eixo do tempo dentro de um mesmo balde.
Contagens distintas e funis
Contagens distintas e funis
Contagens de conversas distintas (razões de transferência), dias ativos e etapas de funil (iniciada → transferida → qualificada → respondida) são subconjuntos aninhados, não partições. Reconstrua a partir das flags/componentes exportados; não some o resultado.
Melhor/pior e Top-N
Melhor/pior e Top-N
Rankings de melhor/pior atendente ou empreendimento e cortes Top-N são derivados. Exportamos a dimensão completa (sem corte) com os pares soma+contagem por entidade — o seu BI aplica o limite mínimo e ordena.
Variações período a período
Variações período a período
Deltas entre períodos e taxas normalizadas por dias ativos nunca são entregues. Junte os componentes e calcule no BI.