Não precisa ficar olhando o painel a cada 5 minutos. Conecta o WhatsApp via QR code (como Web do WhatsApp), configura quais eventos disparam alerta, e o sistema te avisa no celular pessoal: lead quente respondeu, warmup pausou IP, pagamento falhou, resumo diário às 18h.
Cliente respondeu "quero fechar" às 14:30. Você só viu no painel às 19h quando voltou pra mesa. 4 horas e meia depois. Janela fechada.
O melhor inbox do mundo é inútil se ninguém abre. E ninguém abre painel toda hora.
"Baixe nosso app pra receber notificação." Você baixa, dá deny no push, esquece. Não funciona.
"Você tem 1 nova mensagem" no mesmo Gmail lotado. Vira ruído junto com 200 outros emails.
7 tipos de alerta configuráveis. Ative só os que importam pro seu fluxo. Adicione mais telefones pra time.
Conta: conectada · +55 41 9 9999-8888 · ● ativo
Adicione N telefones: você recebe tudo, seu admin de marketing só "Campanha iniciada", seu financeiro só "Pagamento falhou".
Mesmo fluxo do WhatsApp Web: escaneia, conecta. Daemon Go cuida do protocolo nativo, sem app no celular.
user_whatsapp_connections · QR pending
Adicione N números além do principal. Cada um recebe os alertas que você configurar. Time inteiro alertado.
user_whatsapp_alert_phones[]
inbox_pending_reply, warmup_paused, domain_blocked, payment_failed, daily_summary, low_credit, campaign_started.
user_whatsapp_alert_preferences
Mesma mensagem não dispara duas vezes (idx por inbox_message_id + trigger_event). Worker cron 15min.
whatsapp_notifications · UNIQUE(msg, trigger)
Botão "Enviar Teste" no painel manda mensagem de teste pro número conectado. Confirma se está funcionando antes de precisar.
POST /whatsapp/test
Toda notificação enviada fica registrada com status (sent|failed), erro do daemon, contexto (campaign_id, contact_id).
whatsapp_notifications.status
Cada conta RaviMail tem session_id único no daemon (ravimail_{userId}_{ts}). Sem cruzamento entre clientes.
session_id UNIQUE · expirable
Logoff via painel desconecta no daemon e expira a sessão. Sem deixar dispositivo pendurado.
POST /whatsapp/disconnect
Concorrentes oferecem app dedicado pra notificação (que ninguém instala), ou alerta por email (que vira ruído). O RaviMail usa o WhatsApp que você já abre 100x por dia: conecta via QR, configura, recebe. Funciona no celular pessoal, no do time, em N números.
# Fluxo real de uma notificação
# 1) Resposta chega no inbox
InboxService::classifyMessage(4218)
→ ai_classification = "interested_high"
# 2) Worker cron 15min detecta pendência
workers/inbox_pending_alerts.php
SELECT * FROM inbox_messages
WHERE received_at < NOW() - INTERVAL 30 MINUTE
AND ai_classification IN ('interested_high', 'meeting_request')
AND NOT EXISTS (sent WhatsApp pra esse msg_id)
# 3) WhatsAppService envia via daemon Go
WhatsAppService::sendNotification(
user: 5,
type: "inbox_pending_reply",
message: "📧 Email aguardando resposta\n
João Silva (score 84)\n
Abrir: app.../inbox/4218"
)
→ HTTP POST 127.0.0.1:8080/sendText
→ external_message_id: "3EB0...."
→ status: "sent"
# 4) Seu celular toca em ~3s
QR code · 7 tipos configuráveis · N telefones. Sem custo extra desde o Starter.