Skip to content

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 ​

TriggerChaveCondição
👋 Boas-vindaswelcomePrimeiro pedido entregue (dia anterior)
📅 Reativação 30dinactive_30Sem pedidos há 30 dias (±1 dia)
⏰ Reativação 60dinactive_60Sem pedidos há 60 dias (±1 dia)
🏆 Marco VIPvip_milestoneA cada 10 pedidos completados
🎂 AniversáriobirthdayNo dia do aniversário do cliente

Configuração ​

Cada trigger pode ser:

  1. Ativado/desativado — toggle na aba Automações
  2. Mensagem editável — clique "Editar mensagem" no card

Placeholders disponíveis ​

PlaceholderSubstituiçã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/triggers

Resposta: { triggers: AutoTrigger[], stats: Record<string, number> }

Atualizar trigger ​

PUT /t/:slug/crm/triggers/:key

Body: { 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) e TriggerLog (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

Relacionados ​

Lançado sob a licença MIT.