Skip to main content
As Automações são o motor reativo da Kiraa. 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:
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.
Dispara periodicamente em horários e dias configurados (ex: 09:00 toda seg-sex, America/Sao_Paulo).Modos do schedule:
  • Cliente — varre clientes elegíveis e cria 1 run por cliente (padrão)
  • Cobrança (régua) — varre payment_intents elegíveis e cria 1 run por cobrança. Ativado quando você preenche a seção “Cobrança (régua)” do filtro do trigger (status do pagamento, carteira, janela de vencimento).
Casos típicos: régua de cobrança diária (D-5 lembrete, D vence hoje, D+5 ligação, etc.), envio de NPS semanal, limpeza de leads frios.Ver Régua de cobrança abaixo para o caso completo.

Blocos disponíveis

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

Blocos de ação

Blocos de controle

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
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: Schedule 09:00 seg-sex, filtro de cobrança: pending + overdue, carteira BCSUL
Resultado: a régua roda todo dia decidindo o canal certo para cada cobrança. Quando o devedor paga, o webhook cancela a run; quando assina acordo, idem. Sem wait Xd segurando estado.
Gatilho: entrada na etapa “Lead qualificado”
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”
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.

Régua de cobrança

A régua de cobrança é uma especialização do motor de Automações: um workflow agendado que tem como eixo cada cobrança específica (payment_intent) — não o cliente. Todo dia, pra cada cobrança em aberto, decide o que fazer hoje com base em quantos dias faltam (ou se passaram) do vencimento.
Gera o PIX se preciso, manda mensagem da cadência certa, escala pra ligação se atrasou demais, encerra sozinha quando o dinheiro cai.

A grande ideia: 1 run por cobrança

Workflows comuns rodam 1 run por cliente. A régua roda 1 run por cobrança — se o cliente João tem 3 cobranças vencidas, a régua cria 3 runs paralelas. Isso permite que templates digam "Sua cobrança de {{pagamento_valor}} vence em {{parcela_vencimento}}" sem precisar lógica extra: a run já sabe qual é a dela.

Como ativar o modo régua

Crie uma automação com trigger = Schedule (ex: 09:00 toda seg-sex). No filtro do trigger, ative a seção “Cobrança (régua)”:
Quando qualquer campo dessa seção tem valor, o engine entende que é uma régua e ativa o fan-out por cobrança (em vez de por cliente). Os chips de status são os mesmos da página Cobrança → Pagamentos — incluindo Atrasado virtual.

Usar a régua padrão (preset)

Se o canvas está vazio numa automação de cobrança, aparece o botão flutuante “Usar régua padrão”. Ele monta o grafo canônico em 1 clique:
Tradução em palavras:
  1. ENTRY (check_payment_status) roteia pelo estado atual: paid → END, pending_generation → passa por GEN, pending/overdue → direto pro CADENCE.
  2. GEN (generate_payment_intent) materializa PIX/Boleto se ainda não existe. Salva link_pagamento, qr_code_pix, valor_atualizado no contexto.
  3. CADENCE (cadence_check) é o coração: calcula delta = hoje - vencimento e escolhe a primeira janela cujo intervalo [from_days, to_days] cobre o delta.
  4. SEND_* / CALL é a ação do dia. Cada uma termina em END.
  5. END — amanhã o schedule cria run nova e reavalia em qual janela a cobrança está.
Os blocos send_whatsapp da régua padrão nascem sem template selecionado — clique em cada um e escolha pelo painel de configuração antes de ativar.

Por que daily-decision (e não wait Xd)

  • Cada execução = decisão de um dia. Sem wait segurando run dormente entre envios — quem dita a cadência é o schedule + cadence_check.
  • Editar a cadência sem migrar runs. Mudou as janelas? A próxima execução cria run nova já com o novo grafo. Não precisa cancelar runs antigas em wait.
  • Cadência por janela é trivial. “Manda WhatsApp todo dia entre 1 e 5 de atraso” vira UMA janela ligada a UM send_whatsapp.

Idempotência por dia

Se o schedule tem múltiplos horários (["09:00", "15:00"]) ou se alguém dispara execução manual, antes de cada send_* o sistema confere dunning_state.last_sent_per_channel[channel]. Se o último envio do mesmo canal foi há menos de 18h (configurável por step), o step retorna skipped com motivo already_sent_recently. Para forçar reenvio no mesmo dia, defina min_interval_seconds: 0 no step específico.

cadence_check — convenção do delta

Configuração default:
Cada janela é uma saída independente no canvas — arraste de qualquer uma para conectar a uma ação diferente.

Cancelamento automático

A run não precisa “ficar de olho” se a cobrança foi paga — ela é cancelada de fora:
  • Webhook de pagamento confirmado → marca intent paid → cancela toda run ativa daquele intent
  • Acordo assinado → parcelas viram em_acordo, intents pendentes viram superseded, runs canceladas em batch

Dedupe

Só pode haver uma run ativa por cobrança ao mesmo tempo. Se o tick das 09:00 cria a run, e às 15:00 a run ainda está viva, o sistema não duplica. Só cria outra quando a run anterior termina.

Limites

  • Fan-out de até 500 intents por tick por automação. Se sobrar, o tick seguinte pega (idempotente via dedupe).
  • Pre-vencimento via filtro do trigger: para economizar fan-out em carteiras grandes, restrinja com days_to_due_min / days_to_due_max no filtro (ex: -5 a 90).

Variáveis de cobrança em templates

Ver Cobrança → Variáveis disponíveis em templates — a régua popula {{pagamento_valor}}, {{link_pagamento}}, {{pagamento_dias_atraso}}, {{pagamento_lembretes_enviados}}, entre outras.

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

Cobrança

Módulo de recebíveis — carteiras, contratos, pagamentos, acordos. Onde a régua opera.

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