Automações de CRM
Visão Geral
O sistema envia mensagens automáticas via WhatsApp com base em eventos do ciclo de vida do cliente. Cada trigger é configurável por tenant e roda diariamente às 9h.
Localização
- Backend:
backend/src/crm/auto-trigger.service.ts - Frontend: Aba Automações em
CRM(/t/:slug/admin/crm)
Triggers Disponíveis
| Trigger | Chave | Condição |
|---|---|---|
| 👋 Boas-vindas | welcome | Primeiro pedido entregue (dia anterior) |
| 📅 Reativação 30d | inactive_30 | Sem pedidos há 30 dias (±1 dia) |
| ⏰ Reativação 60d | inactive_60 | Sem pedidos há 60 dias (±1 dia) |
| 🏆 Marco VIP | vip_milestone | A cada 10 pedidos completados |
| 🎂 Aniversário | birthday | No dia do aniversário do cliente |
Configuração
Cada trigger pode ser:
- Ativado/desativado — toggle na aba Automações
- Mensagem editável — clique "Editar mensagem" no card
Placeholders disponíveis
| Placeholder | Substituição |
|---|---|
| Nome do cliente |
| Nome do tenant/restaurante |
| Contagem de pedidos (VIP milestone) |
Deduplicação
O TriggerLog garante que cada combinação {tenant, triggerKey, user} recebe a mensagem apenas uma vez. Logs expiram após 90 dias (TTL index), permitindo reenvio no próximo ciclo.
API
Listar triggers
GET /t/:slug/crm/triggersResposta: { triggers: AutoTrigger[], stats: Record<string, number> }
Atualizar trigger
PUT /t/:slug/crm/triggers/:keyBody: { enabled?: boolean, messageTemplate?: string }
Execução
- Cron:
0 9 * * *(diário às 9h) - Itera todos os tenants ativos
- Para cada trigger ativado, busca destinatários elegíveis
- Envia via
WhatsAppService.sendTextMessage() - Registra em
CrmMessage(para histórico) eTriggerLog(para dedup)
Schemas
AutoTrigger— config por tenant:{tenant, triggerKey, name, description, enabled, messageTemplate, channel, sentCount, lastRunAt}TriggerLog— dedup:{tenant, triggerKey, user, sentAt}com TTL 90 dias