Analytics e Monitoramento
📊 Dados que importam: Dashboard, métricas por canal, séries temporais e insights de engajamento
A Notifica fornece analytics completos para você entender e otimizar suas notificações. Este guia cobre:
- Visão geral de métricas
- Analytics por canal
- Séries temporais
- Top templates e performance
Visão geral (Overview)
curl https://app.usenotifica.com.br/v1/analytics/overview \
-H "Authorization: Bearer nk_live_sua_chave" \
-H "Content-Type: application/json" \
-d '{
"period": "last_30_days"
}'
Resposta:
{
"period": {
"start": "2023-12-16T00:00:00Z",
"end": "2024-01-15T23:59:59Z"
},
"summary": {
"total_sent": 152430,
"total_delivered": 148120,
"delivery_rate": 97.17,
"total_opened": 89230,
"open_rate": 60.24,
"total_clicked": 28450,
"click_rate": 19.21,
"total_failed": 4310,
"failure_rate": 2.83,
"total_bounced": 1850,
"bounce_rate": 1.21
},
"comparison": {
"sent": { "value": 152430, "change": 12.5, "trend": "up" },
"delivery_rate": { "value": 97.17, "change": 1.2, "trend": "up" },
"open_rate": { "value": 60.24, "change": -2.1, "trend": "down" }
}
}
Analytics por canal
curl https://app.usenotifica.com.br/v1/analytics/channels \
-H "Authorization: Bearer nk_live_sua_chave" \
-d '{
"period": "last_30_days",
"channels": ["email", "whatsapp", "sms", "in_app"]
}'
Resposta:
{
"period": "last_30_days",
"channels": {
"email": {
"sent": 85420,
"delivered": 82150,
"delivery_rate": 96.17,
"opened": 52300,
"open_rate": 63.66,
"clicked": 18500,
"click_rate": 22.52,
"bounced": 1850,
"bounce_rate": 2.17,
"complained": 45,
"complaint_rate": 0.05
},
"whatsapp": {
"sent": 45000,
"delivered": 44800,
"delivery_rate": 99.56,
"read": 44200,
"read_rate": 98.66,
"replied": 3200,
"reply_rate": 7.14
},
"sms": {
"sent": 18000,
"delivered": 17200,
"delivery_rate": 95.56,
"replied": 450,
"reply_rate": 2.62
},
"in_app": {
"sent": 4010,
"delivered": 4010,
"delivery_rate": 100.0,
"opened": 3890,
"open_rate": 97.01,
"clicked": 2100,
"click_rate": 52.37
}
}
}
Insights por canal
| Canal | Quando usar | Métrica chave |
|---|---|---|
| Comunicações detalhadas, faturas | Taxa de abertura > 25% | |
| Urgente, alta abertura | Taxa de leitura > 90% | |
| SMS | Alertas críticos, OTPs | Taxa de entrega > 95% |
| In-App | Engajamento no produto | Taxa de clique > 40% |
Séries temporais
curl "https://app.usenotifica.com.br/v1/analytics/timeseries?period=last_30_days&granularity=day" \
-H "Authorization: Bearer nk_live_sua_chave"
Resposta:
{
"granularity": "day",
"data": [
{
"date": "2024-01-01",
"sent": 5200,
"delivered": 5050,
"opened": 3200,
"clicked": 980,
"failed": 150
},
{
"date": "2024-01-02",
"sent": 4800,
"delivered": 4650,
"opened": 2800,
"clicked": 850,
"failed": 150
}
// ... mais dias
]
}
Granularidades disponíveis
hour— Últimas 24 horasday— Últimos 90 diasweek— Últimos 52 semanasmonth— Últimos 24 meses
Top templates
curl https://app.usenotifica.com.br/v1/analytics/templates \
-H "Authorization: Bearer nk_live_sua_chave" \
-d '{
"period": "last_30_days",
"limit": 10,
"sort_by": "sent"
}'
Resposta:
{
"period": "last_30_days",
"templates": [
{
"id": "tmpl_welcome",
"name": "welcome_email",
"channel": "email",
"sent": 45200,
"delivered": 43800,
"delivery_rate": 96.90,
"opened": 32500,
"open_rate": 74.20,
"clicked": 12800,
"click_rate": 29.22
},
{
"id": "tmpl_order_conf",
"name": "order_confirmation",
"channel": "whatsapp",
"sent": 32100,
"delivered": 31950,
"delivery_rate": 99.53,
"read": 31500,
"read_rate": 98.59
}
]
}
Dashboard em tempo real
O dashboard da Notifica oferece:
Métricas em tempo real
- Notificações enviadas por minuto
- Taxa de entrega ao vivo
- Filas e processamento
Gráficos
- Volume por canal (linha temporal)
- Taxas de conversão (funil)
- Mapa de calor de entregas (por hora/dia)
- Comparação período anterior
Alertas
Configure alertas para:
- Taxa de bounce > 5%
- Taxa de falha > 10%
- Volume anormal (spike ou drop)
- Qualidade de WhatsApp caindo
Código: Relatórios automatizados
Node.js — Relatório diário
const cron = require('node-cron');
// Todo dia às 9h, enviar relatório para o time
cron.schedule('0 9 * * *', async () => {
const yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
const report = await fetch(
`${NOTIFICA_URL}/analytics/overview`,
{
method: 'POST',
headers: { 'Authorization': `Bearer ${API_KEY}` },
body: JSON.stringify({
period: 'last_24_hours',
date: yesterday.toISOString().split('T')[0]
})
}
).then(r => r.json());
// Enviar para Slack/Email
await sendToSlack({
text: `📊 Relatório de Notificações - ${yesterday.toLocaleDateString('pt-BR')}`,
attachments: [
{
fields: [
{ title: 'Enviadas', value: report.summary.total_sent, short: true },
{ title: 'Taxa de Entrega', value: `${report.summary.delivery_rate}%`, short: true },
{ title: 'Taxa de Abertura', value: `${report.summary.open_rate}%`, short: true },
{ title: 'Taxa de Clique', value: `${report.summary.click_rate}%`, short: true }
]
}
]
});
});
Python — Exportar CSV
import csv
import requests
from datetime import datetime, timedelta
def export_analytics_csv(start_date: str, end_date: str, filename: str):
# Buscar dados da API
response = requests.post(
f'{BASE_URL}/analytics/timeseries',
headers={'Authorization': f'Bearer {API_KEY}'},
json={
'period': 'custom',
'start_date': start_date,
'end_date': end_date,
'granularity': 'day'
}
)
data = response.json()['data']
# Exportar para CSV
with open(filename, 'w', newline='') as f:
writer = csv.DictWriter(f, fieldnames=[
'date', 'sent', 'delivered', 'opened',
'clicked', 'failed', 'delivery_rate'
])
writer.writeheader()
for row in data:
row['delivery_rate'] = round(
row['delivered'] / row['sent'] * 100, 2
) if row['sent'] > 0 else 0
writer.writerow(row)
print(f'Relatório exportado: {filename}')
# Uso
export_analytics_csv(
'2024-01-01',
'2024-01-31',
'relatorio_janeiro.csv'
)
Benchmarks da indústria
Compare seus números com a média do mercado:
| Métrica | Boa | Excelente |
|---|---|---|
| Taxa de entrega (email) | > 95% | > 98% |
| Taxa de abertura (email) | > 20% | > 35% |
| Taxa de clique (email) | > 2% | > 5% |
| Taxa de entrega (WhatsApp) | > 95% | > 99% |
| Taxa de leitura (WhatsApp) | > 90% | > 98% |
| Taxa de bounce | < 2% | < 0.5% |
| Taxa de reclamação | < 0.1% | < 0.05% |
Otimizando performance
Se sua taxa de abertura está baixa
- Melhore o assunto — Personalize, use emojis, teste A/B
- Horário de envio — Evite madrugada, teste manhã/tarde
- Segmente — Envie conteúdo relevante para cada público
- Limpe sua lista — Remova emails inativos
Se sua taxa de entrega está baixa
- Verifique DNS — DKIM, SPF, DMARC configurados?
- Reputação de domínio — Use ferramentas como Sender Score
- Conteúdo — Evite palavras de spam, equilibre texto/imagem
- Warm up — Aumente volume gradualmente para novos domínios
Se sua taxa de bounce está alta
- Double opt-in — Confirme emails no cadastro
- Valide na entrada — Use serviços de validação de email
- Limpeza periódica — Remova hard bounces imediatamente
FAQ
Q: Dados ficam disponíveis por quanto tempo?
A: 2 anos para analytics agregados, 90 dias para logs detalhados.
Q: Posso exportar dados brutos?
A: Sim, via API ou solicite exportação em CSV/JSON para o suporte.
Q: Tem integração com Google Analytics?
A: Em breve! Por enquanto, use UTM tags nos links e webhooks.
Q: Consigo ver dados em tempo real?
A: Sim, o dashboard atualiza a cada 30 segundos.
Próximo passo
Parabéns! Você completou todos os guias de integração. Agora explore a API Reference Completa para consultar todos os endpoints disponíveis.
Para suporte: [email protected]