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.