Skip to main content
As Automações são o motor reativo da Tropicall. Diferente de uma campanha (que é um lote one-shot), uma automação é um fluxo permanente que observa o que acontece no CRM — cliente entrou numa etapa, recebeu uma tag, agente detectou um intent — e dispara uma régua que combina IA, mensagens, espera, condicionais, ações no próprio CRM e até delegação de tarefa para o time humano. Você define a régua uma vez no construtor visual; cada cliente flui por ela conforme seu comportamento.
Acesse em Operação > Automações. O construtor visual é arrastar e soltar — não precisa código.

Automação vs. Campanha

Os dois conceitos compartilham a malha de envio (voz, e-mail, SMS, WhatsApp), mas resolvem cenários diferentes:
CampanhaAutomação
DisparoLote one-shotReativo permanente
OrigemLista importada/segmentoGatilho de evento
VidaTermina quando a lista acabaVive até você desligar
Por cliente1 envio agendadoRun com várias etapas
Caso típico”Mandar promoção pra 5k contatos""Quem entrou em ‘Lead’, tenta ligar; se não atende, manda WhatsApp em 2h”
Pergunta-chave: isso vai rodar uma vez para uma lista, ou vai disparar toda vez que algo acontecer? Lote → Campanha. Reativo → Automação.

Anatomia de uma automação

Toda automação tem dois ingredientes:

Gatilho (Trigger)

Define quando a automação começa para um cliente. Cada automação tem 1 gatilho.

Blocos (Steps)

Definem o que acontece depois do gatilho. Vão desde “ligar com IA” até “esperar 2 dias”.
A automação roda como um fluxo: começa no bloco de entrada e segue pelas conexões (edges) até chegar a um bloco terminal (end_run). Cada cliente tem sua própria run — instância isolada do fluxo, com estado e contexto próprios.

Gatilhos disponíveis

Dispara quando um cliente é movido para uma etapa específica do pipeline.Cobre todas as formas de mudança de etapa:
  • Arrastar no Board
  • Movimentação em lote (bulk move)
  • Classificação automática pós-chamada
  • PATCH via API
Casos típicos: régua de boas-vindas quando entra em “Cadastrado”, régua de cobrança quando entra em “Em atraso D+5”.
Dispara quando o agente de IA classifica a intenção da conversa.Intents disponíveis: voicemail, wrong_number, not_the_person, customer_not_interested, entre outros.Casos típicos: detectou caixa postal → manda WhatsApp; detectou pessoa errada → move para “verificar contato”.
Dispara quando uma tag é adicionada ao cliente — manualmente, por outra automação ou por uma tool do agente (add_client_tag).Casos típicos: tag “lead_quente” inicia régua VIP; tag “inadimplente” inicia régua de cobrança.
Dispara quando um campo customizado específico muda de valor.Casos típicos: quando valor_proposta é preenchido, manda WhatsApp com link de aceite; quando data_vencimento muda, reagenda a régua de cobrança.
Você seleciona clientes na lista do CRM e dispara a automação para eles diretamente.Casos típicos: régua especial para um grupo selecionado, fluxo de teste, recuperação pontual.

Blocos disponíveis

Os blocos se dividem em ações (fazem alguma coisa) e controle (decidem o caminho do fluxo).

Blocos de ação

BlocoO que fazParâmetros principais
Ligar (call)Aciona o agente de voz para ligar para o clienteAgente, prioridade de telefone, tentativas, duração máxima
Enviar e-mailEnvia e-mail usando um templateTemplate, integração Gmail (opcional)
Enviar SMSEnvia SMS via Twilio usando um templateTemplate, integração Twilio (opcional)
Enviar WhatsAppEnvia WhatsApp via UAZAPI usando um templateTemplate, mídia (opcional), integração
Mover etapaMove o cliente para outra etapa do pipelineEtapa de destino, pipeline (cross-pipeline opcional)
Adicionar tagAdiciona uma tag ao clienteTag (string)
Remover tagRemove uma tag do clienteTag (string)
Setar campo customizadoAtualiza valor de um custom fieldCampo, valor
Criar tarefaCria uma tarefa humana vinculada ao clienteTítulo, descrição, responsável, prazo
Terminar run (end_run)Marca a run como concluída

Blocos de controle

BlocoO que fazNotas
Esperar (wait)Pausa a run por um período definidoPode ser tempo fixo (1s a 30 dias) ou “próximo horário comercial” respeitando timezone
Condicional (condition)Branch if/else baseado em um campoOperadores: =, , in, contains, existe, >, <, ,
Esperar evento externo (wait_for_event)Pausa até receber um webhook ou timeoutBranches: recebido / timeout
Toda automação precisa ter pelo menos um caminho que chegue em Terminar run (end_run). Sem isso, a run fica órfã.

Variáveis em parâmetros (templating)

Vários blocos aceitam variáveis no formato {{variavel}}. A resolução acontece nessa ordem:
  1. Atalhos de cliente em PT-BR: {{cliente_nome}}, {{cliente_empresa}}, {{cliente_email}}, {{cliente_telefone}}.
  2. Atalhos em inglês: {{name}}, {{client_name}}, {{company}}, {{email}}, {{phone}}.
  3. Custom fields: {{cpf}} ou {{custom.cpf}} (ambos funcionam).
  4. Contexto da run: {{context.X}} — variáveis que a própria run acumula durante a execução (ex: disposition da call).
  5. Mock values do template: fallback se o cliente não tem o dado.
  6. Se nada resolve, vira string vazia (sem {{undefined}} no output).
É um sintaxe simples — não tem condicionais inline ou loops como Jinja2 completo. Para lógica complexa, use o bloco Condicional no fluxo.

Construtor visual

A página de uma automação tem três áreas principais:

Paleta de blocos

Sidebar esquerda com todos os blocos disponíveis. Arraste para o canvas.

Canvas

Centro da tela. Conecte blocos arrastando das alças. Zoom, pan, undo/redo.

Painel de configuração

Sidebar direita. Aparece quando você clica em um bloco. Formulário muda conforme o tipo.

Como criar uma automação

1

Nova automação

Em Operação > Automações, clique em Nova automação.
2

Escolha o gatilho

Selecione um dos 5 gatilhos disponíveis. Cada gatilho pede configurações específicas (ex: stage_entry pede pipeline + etapa).
3

Monte o fluxo

Arraste blocos da paleta para o canvas. Conecte-os arrastando das alças (handles). O bloco de entrada é destacado.
4

Configure cada bloco

Clique em um bloco para abrir o painel de configuração. Preencha os parâmetros (template, etapa, prazo, etc.).
5

Defina a janela de execução (opcional)

Em Configurações da automação você define dias/horários permitidos respeitando o timezone da sua organização.
6

Ative

Volte para a lista, ative a automação e ela passa a reagir aos gatilhos em tempo real.
Edições no fluxo geram uma nova versão da automação. Runs em andamento ficam fixadas na versão antiga até terminarem — você não corrompe estado de clientes que já estão executando.

Acompanhando execuções (aba Runs)

Cada automação tem uma aba Runs que lista todas as instâncias em execução ou histórico, com:
  • Cliente (com link para a ficha)
  • Status atual: waiting, running, in_call, completed, failed, cancelled
  • Bloco atual (em qual passo a run está parada)
  • Histórico expandido (cada step executado, com input/output)
Use a aba Runs para depurar fluxos: confirmar que o gatilho disparou, ver onde a run travou, conferir o que o agente detectou (disposition da call), etc.
Quando uma run cai em failed, o motivo aparece no histórico. Erros comuns: integração desconectada, template inativo, etapa de destino removida.

Casos de uso completos

Gatilho: tag “lead_frio” adicionada
├─ Enviar WhatsApp (template "estamos voltando")
├─ Esperar 2 dias
├─ Condicional (custom_field "respondeu_whatsapp" existe?)
│  ├─ true → end_run
│  └─ false → Ligar (agente "Reengajamento")
│             └─ Condicional (intent == "wrong_number")
│                ├─ true → Mover etapa "Telefone errado" + end_run
│                └─ false → Esperar 7 dias → end_run
Resultado: o lead que abandonou recebe WhatsApp; se não responde, recebe ligação; se a IA detecta telefone errado, é tirado do funil sem desperdiçar mais tentativas.
Gatilho: entrada na etapa “Em atraso D+5”
├─ Enviar e-mail (template "lembrete amigável")
├─ Esperar 3 dias
├─ Enviar WhatsApp (template "boleto reapresentado")
├─ Esperar 3 dias
├─ Ligar (agente "Cobrança")
├─ Condicional (disposition == "promessa_pagamento")
│  ├─ true → Criar tarefa ("Confirmar pagamento amanhã")
│  │        + Mover etapa "Promessa pagamento" + end_run
│  └─ false → Mover etapa "Cobrança humana" + end_run
Resultado: o cobrador humano só vê o cliente quando o agente já tentou todos os canais; se o cliente promete pagar, vira tarefa de confirmação.
Gatilho: entrada na etapa “Lead qualificado”
├─ Ligar (agente "Vendas")
├─ Condicional (disposition == "voicemail")
│  ├─ true → Enviar WhatsApp (template "tentei te ligar...")
│  │        Esperar 4h
│  │        Ligar (segunda tentativa)
│  │        Condicional (disposition == "voicemail")
│  │           ├─ true → Enviar e-mail "vamos marcar?" + end_run
│  │           └─ false → ... (atendeu)
│  └─ false → ... (atendeu — segue conversão)
Resultado: a régua tenta voz, mas se cair em caixa postal troca para WhatsApp e tenta de novo, e só aciona e-mail como último recurso.
Gatilho: entrada na etapa “Cadastrado”
├─ Enviar WhatsApp (template "boas-vindas")
├─ Ligar (agente "Recepção" — agenda primeira consulta)
├─ Esperar evento externo (event_type="primeira_consulta_realizada", timeout=30 dias)
│  ├─ recebido → Mover etapa "Cliente ativo" + end_run
│  └─ timeout → Criar tarefa ("Cliente não voltou — investigar")
│              + end_run
Resultado: paciente é onboardado pela IA; se não comparece à consulta em 30 dias, vira tarefa para a coordenadora investigar.

Capacidades não-óbvias

Cascata de gatilhos

O bloco Mover etapa pode disparar outra automação que escuta stage_entry. Permite encadear automações sem ramificar tudo numa só.

Contexto como state machine

A run acumula variáveis ao longo do fluxo. O disposition da call (voicemail, wrong_number) fica em context e o Condicional lê de lá — sem precisar consultar o banco.

Loops com espera

O detector de ciclos permite loops que passam por Esperar. Ex: “tenta ligar; se não atende, espera 2h; tenta de novo (até 3x)” é um loop válido.

Soft-fail em delegação

Se o bloco Criar tarefa não consegue resolver responsável, marca o step como skipped (não falha — o run continua). Workflow não para por delegação sem dono.

Limitações conhecidas

  • Condicional sem AND/OR aninhado — para lógica composta, encadeie múltiplos blocos Condicional.
  • Sem analytics agregada por automação ainda — você acompanha por run individual na aba Runs.
  • Pickers do construtor pedem UUID em alguns campos (template, agente, etapa) — copie do contexto do CRM.
  • Bloco Ligar não retém crédito antecipado — esteja atento ao saldo da organização ao disparar fluxos com volume alto.

Como o sistema executa por trás

Para quem quer entender a engine:
  • Tick a cada 15 segundos processa runs prontas (até 50 por tick).
  • Multi-worker safe: runs travadas com FOR UPDATE SKIP LOCKED — múltiplos workers não pegam a mesma run.
  • Idempotência: a automação não cria run nova se já existe uma ativa para o mesmo (automation_id, client_id).
  • Janela de execução: respeita dias/horários configurados; fora da janela, reagenda para o próximo slot válido sem executar.
  • Cap de segurança: run que executa mais de 100 steps cai em failed (step_limit_exceeded).
  • Estado assíncrono: o bloco Ligar não bloqueia o tick — quando o agente desliga, a run reativa no próximo ciclo.

Próximos passos

Tarefas

Trabalho humano delegado pelo agente IA ou pelo bloco Criar tarefa

Retornos

Callbacks agendados pelo agente durante a conversa (cross-channel)

Board e Pipelines

Configure etapas com descrição clara para o gatilho stage_entry

Tools (CRM Action)

add_client_tag, move_to_stage, set_custom_field cascateiam automações