AscendFlow Docs

Aprenda a criar fluxos incríveis no AscendFlow 🚀

Bem-vindo à documentação oficial da plataforma mais versátil para automação de WhatsApp. Masterize os nodes, entenda os gatilhos e construa atendimentos imbatíveis.

Início Rápido

Configure sua primeira sessão e monte seu fluxo em 5 minutos.

Nodes do Fluxo

Entenda como funcionam as IAs, envios de mídia, aguardos e condições.

Tutoriais Reais

Passo a passo para criar funis de venda, Lançamentos em Grupo e mais.

Variáveis

Data, hora, sistema, respostas do lead e valores aninhados.

Inbox (CRM)

Busca, filtros, envio de mídia, respostas rápidas e gerenciamento de conversas.

Guia de Início Rápido

1Conectar seu WhatsApp

O AscendFlow requer uma sessão de WhatsApp conectada para operar. Navegue até o menu de Sessões no painel lateral esquerdo, clique em "Nova Sessão" e faça o escaneamento do QR Code com o seu celular pelo WhatsApp Web.

Screenshot: QR Code Scan (Emulação)

2Criar seu primeiro fluxo

No menu Fluxos, clique em "Novo Fluxo". Você verá o Canvas principal. Todo fluxo começa com um "Gatilho" (Trigger). Arraste um "Trigger WhatsApp", defina uma palavra-chave como "Olá", e conecte ele a um node de "Enviar Mensagem" puxando a linha do ponto à direita.

3Uso de Variáveis Mágicas

Personalize as mensagens usando as chaves duplas {{ }}. O sistema substitui isso por dados reais no momento do envio.

Variável MágicaDescrição do que injetaExemplo Visível
{{contact.phone}}O telefone completo do lead5511999999999
{{contact.name}}Nome do contato (se salvo)Júlia Almeida
{{variables.XPTO}}Qualquer variável criada no node Definir Variável ou salva de um Wait"Sim", "150.00"

Gatilhos (Triggers)

Triggers são a porta de entrada. Um fluxo sempre deve começar por pelo menos um Trigger ativo.

📱 Trigger WhatsApp

Gatilho

O que faz

Inicia o fluxo quando alguém envia mensagem no WhatsApp para a sessão configurada.

Configurações

CampoDescrição
SessãoQual número do WhatsApp vai ouvir
Palavra-chaveOpcional — só dispara se mensagem contiver
Tipo de msgTexto, imagem, qualquer

💡 Dicas de uso

  • Deixe sem palavra-chave para responder qualquer mensagem.
  • Use palavra-chave para criar menus (ex: "1", "comprar").
  • Combine com node Condição (If/Else) para fluxos complexos.

🖱️ Trigger Manual

Gatilho

O que faz

Permite disparar o fluxo manualmente via painel para um contato ou grupo específico, sem precisar de mensagem inicial.

Configurações

CampoDescrição
DestinoContato individual ou grupo
NúmeroTelefone do destinatário
SessãoQual WhatsApp usar para o envio ativo
VariáveisDados customizados para o fluxo injetar

💡 Dicas de uso

  • Ideal para disparos pontuais, testes A/B internos e reinício de funis quebrados.
  • Use variáveis dinâmicas ao disparar para preencher `{{variables.X}}`.

⏰ Trigger Agendamento

Gatilho

O que faz

Executa o fluxo automaticamente e em background em horários configurados — diário, semanal ou em data/hora específica.

Modos Disponíveis

  • 📅 Data e hora específica (Disparo único)
  • 🕐 Hora fixa diária (Disparo repetitivo, com filtro de dias da semana)
  • ⏱️ Intervalo regular (Executar a cada X horas/minutos)

📝 Exemplo Prático

Enviar um resumo diário para você mesmo ou para sua lista VIP todos os dias às 09:00.

Ações do Fluxo

Com os triggers definidos, utilize os nodes de Ação para construir a inteligência e o envio do fluxo.

💬 Enviar Mensagem

Ação

O que faz

Envia uma mensagem de texto rica para o contato ou grupo que originou o engajamento no fluxo.

Configurações

CampoDescriçãoExemplo
MensagemTexto a enviar"Olá {{contact.name}}!"
Simular di...Mostra "digitando..." antesAtivado
DuraçãoSegundos digitando no celular3

💡 Dicas de uso

  • Use {{contact.name}} para chamar pelo nome.
  • Ative "simular digitando" (pelo menos 2s a cada 3 linhas) para parecer mais humano.
  • Quebre textos gigantes em vários nodes conectados em sequência para leitura mais leve.

🖼️ Enviar Mídia

Ação

O que faz

Envia um arquivo anexado (com ou sem legenda) direto no chat.

Tipos Suportados

  • 🖼️ Imagem: JPG, PNG, WEBP (máx 5MB)
  • 🎵 Áudio: MP3, OGG (máx 10MB)
  • 🎤 Áudio de voz (PTT): O famoso "áudio gravado na hora"
  • 🎬 Vídeo: MP4 (máx 50MB)
  • 📄 Documento: PDF, DOCX (máx 20MB)

Origem da Mídia

  • URL externa (https://seusite.com/video.mp4)
  • Upload direto via painel da plataforma
  • Extraído de uma variável (ex: {{variables.imageUrl}})

⏳ Aguardar (Wait)

Ação

O que faz

Intencionalmente pausa e segura o fluxo. Essencial para criar delays humanizados, aguardar o cliente pensar ou suspender a automação até o dia seguinte.

Modos Diversos

  • Tempo fixo: Segundos, minutos ou horas fixas.
  • Aguardar Resposta: O fluxo para DEFINITIVAMENTE ali até que o usuário responda. O texto enviado por ele será sempre salvo em {{variables.userResponse}} ou numa variável de sua escolha.
  • Até data específica: Para envios baseados num calendário futuro.
💡

O "Aguardar Resposta" é a principal ferramenta para receber dados e enviar para a IA. Toda resposta que rompe um estágio de Wait fica acessível para o próximo node através da variável referenciada.

⚖️ Condição (If/Else)

Ação

O que faz

Bifurca o fluxo de automação. Cria um caminho para SIM (quando a condição é atingida) e um caminho para NÃO (quando falha).

Operadores Base

  • igual a / diferente de
  • contém / não contém
  • maior que / menor que (Para valores numéricos)
  • está vazio / não está vazio

// Exemplo de roteamento

SE {{variables.pagamento}} == "aprovado"

→ Caminho SIM: Node Enviar Acesso

→ Caminho NÃO: Node Aguardar 2h reengajamento

🤖 Agente IA

Ação Conversacional

O que faz

Agente conversacional com memória de histórico. Recebe a mensagem do lead, responde com base no seu prompt personalizado e — opcionalmente — detecta intenções para rotear o fluxo automaticamente. Tudo em uma única chamada de IA.

⚙️ Como funciona por dentro

  1. Lê a última mensagem do lead (triggerMessage)
  2. Adiciona ao histórico da conversa (mantido na execução ativa)
  3. Monta o prompt: seu texto + instruções de intenção injetadas automaticamente
  4. Chama a IA — recebe {"response": "...", "intent": "..."}
  5. Envia response ao lead (com typing simulado)
  6. Roteia pelo intent detectado, ou segue pela saída continuar

Você nunca escreve JSON no prompt — o sistema injeta a instrução técnica automaticamente.

📋 Configurações

CampoO que éPadrão
Prompt do AgentePersonalidade, regras e conhecimento do atendente virtual. Suporta {{variables.x}}—
Saídas de IntençãoCondições em linguagem natural para desviar o fluxo (ex: "quando quiser pagar")Nenhuma
Modelo de IAModelo OpenRouter a usargemini-2.5-flash-lite
Simular digitandoMostra "digitando..." antes de enviarAtivado
Duração do typing (s)Segundos de "digitando". 0 = automático (proporcional ao tamanho da resposta, máx. 8s)Auto
Delay antes de enviarPausa em ms antes de qualquer ação (útil para parecer mais humano)0
Máx. mensagens no históricoQuantas mensagens da conversa a IA "lembra"10
Salvar resposta comoNome da variável onde a resposta fica disponívelagentResponse

🔀 Saídas do node

continuar (sempre presente)

Nenhuma intenção detectada — o agente apenas respondeu e o fluxo segue normalmente (normalmente vai para um WAIT_REPLY para fazer o loop)

[sua intenção] (opcional, N saídas)

Ativada quando a IA detecta a intenção com segurança. Você nomeia e descreve cada uma em linguagem natural

🔁 Padrão de loop conversacional

TRIGGER (WhatsApp)
↓
AGENTE IA
├─ continuar → WAIT_REPLY → (volta ao AGENTE IA)
├─ quer_pagar → SEND_PIX → ...
└─ agendou_dia → RMKT (follow-up) → ...

O WAIT_REPLY mantém a execução viva entre mensagens — o histórico da conversa é preservado automaticamente enquanto a execução não encerrar.

📚 Exemplos de uso real

💆Clínica estética — Tirar dúvidas e encaminhar para pagamento
// Prompt do agente
Você é a Ana, atendente da Clínica Bella. Responda dúvidas sobre procedimentos (botox, harmonização, limpeza de pele) de forma simpática e profissional. Não mencione preços — diga que os valores dependem de avaliação e que temos condições especiais. Nunca invente procedimentos ou resultados.

Saídas de intenção configuradas:

quer_agendar → "quando o cliente pedir para agendar, perguntar horários disponíveis ou querer marcar uma avaliação"

quer_preco → "quando insistir em saber o preço, pedir tabela ou orçamento"

→ quer_agendar vai para SEND_BUTTONS com opções de horário. quer_preco vai para mensagem com link do cardápio de preços.

💰Pós-funil — Lead com dúvidas antes de pagar
// Prompt do agente
Você é o suporte do curso "{{variables.nomeCurso}}". O lead acabou de assistir ao webinário e pode ter dúvidas sobre o conteúdo, o suporte, a garantia ou as formas de pagamento. Seja objetivo e motivador. A garantia é de 7 dias. Parcelamos em até 12x. O acesso é vitalício.

Saídas de intenção configuradas:

quer_comprar → "quando pedir o link, querer pagar, perguntar como comprar ou demonstrar intenção de compra"

sem_dinheiro_agora → "quando disser que não tem dinheiro agora, que vai pagar depois, que vai aguardar ou mencionar uma data específica"

nao_tem_interesse → "quando disser que não quer, não tem interesse, não precisa ou pedir para não ser contatado"

→ quer_comprar → SEND_PIX ou link de pagamento. sem_dinheiro_agora → RMKT com follow-up em 2 dias. nao_tem_interesse → END.

🛒E-commerce — Suporte com escalada para humano
// Prompt do agente
Você é o suporte da loja "{{variables.nomeLoja}}". Ajude com dúvidas sobre pedidos, prazo de entrega (5-10 dias úteis), trocas e devoluções (prazo de 7 dias após recebimento). Se o cliente estiver com raiva ou o problema for complexo, reconheça o problema e ofereça transferir para o time humano.

Saídas de intenção configuradas:

escalar_humano → "quando o cliente pedir para falar com humano, atendente ou gerente, ou quando o problema for muito específico ou o cliente estiver muito insatisfeito"

problema_resolvido → "quando o cliente agradecer, confirmar que o problema foi resolvido ou se despedir satisfeito"

→ escalar_humano → NOTIFICACAO para o dono + END. problema_resolvido → mensagem de encerramento + END.

📅Captação de leads — Qualificação antes de encaminhar
// Prompt do agente (sem saídas de intenção = só conversa)
Você é o Léo, consultor de uma imobiliária. Faça perguntas naturais para entender o perfil do lead: tipo de imóvel (casa/apto), localização desejada, faixa de valor e se é para morar ou investir. Seja descontraído, não pareça um formulário. Após entender o perfil, salve as respostas e encerre dizendo que um especialista vai entrar em contato.

→ Sem saídas de intenção — o agente apenas conversa e coleta dados. Use EDIT_FIELDS depois para salvar o perfil e END para encerrar.

💡 Boas práticas de prompt

  • Dê um nome e personalidade — "Você é a Ana..." funciona melhor que "Responda como atendente..."
  • Defina o que NÃO fazer — "Nunca mencione concorrentes", "Não invente informações"
  • Descreva intenções com exemplos — quanto mais específica a descrição da saída, mais precisa é a detecção
  • Use variáveis no prompt — {{contact.name}} personaliza a experiência por lead
  • Histórico padrão de 10 mensagens é suficiente para a maioria dos casos (≈ 5 trocas). Aumente apenas se precisar de contexto muito longo

⚠️ Atenção

O agente responde com base no que foi configurado no prompt. Não conecte este node a fluxos de grupos — ele foi projetado para conversas individuais. Certifique-se de que a chave OpenRouter está configurada em Configurações → APIs.

🎲 Randomizador

Ação de Roteamento

O que faz

Distribui contatos (leads) de forma randômica ou ponderada entre diferentes caminhos de saída do nó. Essencial para A/B Testing e roteamento de atendentes.

📝 Casos de uso ideais:

  • Teste A/B de cópias: Saída A (50%) com texto longo, Saída B (50%) com texto curto.
  • Roleta de Vendedores: Mandar fluxos alternados para ramificações diferentes de atendentes do comercial.
  • Sorteios interativos dentro de engajamento do funil.

Nodes Específicos para Grupos

Ferramentas de alta conversão criadas especificamente para gerir engajamento em massa e lançamentos de grupos de WhatsApp.

📢 Mencionar Todos

Node de Grupo

Marca secretamente todos os participantes do grupo para forçar a notificação chegar (bypass de grupos silenciados). Possui sistema de Cooldown (Resfriamento) embutido para evitar banimentos do WhatsApp por spam de marcação em curto período de tempo.

🔥 Múltiplas Mensagens de Aquecimento

Lançamentos

Gera um schedule automático de mensagens baseadas no tempo de vida (ativação) de um grupo específico. Por exemplo:

- Enviar msg A de Boas Vindas no Dia 0 (Criação)
- Enviar msg B no Dia 1 (Gerando Autoridade)
- Enviar msg C no Dia 2 (Antecipação)

Ele calcula a diferença de dias automaticamente usando os metadados do grupo atrelado.

Variáveis e Templates

Em qualquer campo de texto use {{variável}} — o sistema substitui pelo valor real na hora do envio. Timezone: São Paulo (America/Sao_Paulo).

📅 Data e Hora

Disponíveis em qualquer mensagem — sem configuração, funcionam automaticamente.

VariávelResultadoDescrição
{{hoje}}23/03/2026Data atual (DD/MM/AAAA)
{{data}}23/03/2026Alias de {{hoje}}
{{hora}}14:30Hora atual (HH:MM)
{{agora}}23/03/2026 14:30Data + hora atual
{{amanha}}24/03/2026Data de amanhã
{{semana}}Seg, 30/03/2026Data daqui 7 dias com dia abreviado
{{mes}}MarçoNome do mês por extenso
{{ano}}2026Ano atual
{{dia_semana}}Segunda-feiraNome do dia da semana por extenso

Exemplos práticos:

⚠️ Válido até {{hoje}}
🎯 Garanta sua vaga antes de encerrar!
🔥 Preço especial válido somente até amanhã ({{amanha}}) às 23h59.
✅ Agendamento confirmado!
📅 Data: {{hoje}}
⏰ Horário: {{hora}}

⚙️ Variáveis do Sistema

Injetadas automaticamente pelo motor de execução em todas as execuções.

VariávelDescrição
{{_contactPhone}}Telefone do contato (JID: 5511999999999@s.whatsapp.net)
{{_sessionId}}ID da sessão WhatsApp que recebeu a mensagem
{{_tenantId}}ID do tenant (conta)
{{triggerMessage}}Texto da mensagem que acionou o fluxo
{{etapa}}Etapa atual do contato no funil (node MARK_STAGE)
{{contactStage}}Alias de {{etapa}}
{{contactTags}}Tags do contato (array)

💬 Resposta do Lead

Definidas automaticamente quando o lead responde em nodes WAIT_REPLY.

VariávelDescrição
{{respostaHook}}Texto da última resposta do lead
{{nome}}Preenchida se você capturou o nome via WAIT_REPLY

🏷️ Definidas pelo Usuário

Criadas por nodes específicos com o campo "Salvar como" (saveAs).

WAIT_REPLY

Salva a resposta do lead em uma variável que você escolhe.

Config: Salvar resposta como: nome

Uso: Prazer, {{nome}}! Como posso te ajudar hoje?

HTTP Request

Salva o retorno da API em uma variável.

Config: Salvar resposta como: pedido

Uso: Pedido {{pedido.id}} está: {{pedido.status}}

CODE (JavaScript)

O resultado do código fica em codeOutput.

Config: —

Uso: Resultado: {{codeOutput}}

PIX

Gera variáveis automáticas de cobrança.

Config: —

Uso: {{_pixConfig}} / {{_pixExpiresAt}}

🔀 Em Condições e Switch

Nos nodes CONDITION e SWITCH, use expressões JavaScript com variables.nome (sem chaves duplas).

// Verificar resposta
variables.respostaHook === 'sim'

// Verificar etapa
variables.etapa === 'qualificado'

// Verificar valor numérico
Number(variables.quantidade) > 5

// Combinar com horário comercial
variables.respostaHook === 'sim' && isWithinBusinessHours(9, 0, 18, 0, [1,2,3,4,5])

🔗 Valores Aninhados

Quando a variável é um objeto (ex: retorno de API), use ponto para acessar campos internos.

JSON retornado pela API:

{
  "id": "123",
  "status": "aprovado",
  "cliente": {
    "nome": "João"
  }
}

Uso no texto da mensagem:

Pedido {{pedido.id}}
Status: {{pedido.status}}
Cliente: {{pedido.cliente.nome}}

💡 Boas Práticas

  • Sempre use {{variável}} com chaves duplas — simples não funciona.
  • Nomes são case-sensitive: {{nome}} ≠ {{Nome}}.
  • Se a variável não existir, o texto permanece como {{variavel}} — teste antes de ativar.
  • Variáveis de data não precisam de configuração — funcionam em qualquer mensagem.
  • Em condições, use variables.nome sem chaves.

Inbox (CRM de Conversas)

O Inbox centraliza todas as conversas recebidas via WhatsApp com ferramentas para gerenciar, responder e automatizar o atendimento.

🔍 Busca e Filtros

A busca acontece no banco de dados — não se limita às conversas carregadas na tela. Atualiza automaticamente após 400ms.

FiltroOpções
SessãoFiltra por conta WhatsApp específica
StatusAberto / Pendente / Resolvido / Bot
TipoIndividual / Grupo

📋 Lista de Conversas

Paginação

Carrega 30 conversas por vez, ordenadas pela mensagem mais recente. Clique em "Carregar mais conversas" no final da lista.

Tempo Real

Nova mensagem: conversa sobe para o topo automaticamente. Não recarrega a lista inteira — só atualiza a conversa afetada.

Indicadores em cada conversa:

  • Avatar do contato (ou inicial do nome)
  • Última mensagem e horário
  • Badge de não lidas (verde) — some ao abrir
  • Status: Aberto, Pendente, Resolvido, Bot
  • Nome da sessão (quando há múltiplas contas)

💬 Enviando Mensagens

Texto

Enter → Envia  |  Shift + Enter → Quebra de linha

📎 Envio de Mídia

TipoFormatosLimite
ImagemJPG, PNG, WebP5 MB
ÁudioMP3, OGG, AAC, WAV10 MB
VídeoMP450 MB
DocumentoPDF, DOC, DOCX20 MB

💬 Respostas Rápidas

Atalhos de texto pré-definidos para mensagens frequentes.

  • Clique em 💬 → selecione a resposta → texto inserido no campo
  • Para criar: 💬 → + → preencha Título e Texto → Salvar
  • Para excluir: hover sobre a resposta → ícone 🗑️
  • Salvas localmente no navegador (localStorage)

⚙️ Gerenciamento da Conversa

StatusDescriçãoCor
AbertoConversa ativa, aguardando atendimento● Verde
PendenteEm espera de informação ou ação● Amarelo
ResolvidoAtendimento concluído● Cinza
BotAutomação em andamento● Roxo

🟥 Parar Bot

Quando automação está rodando, aparece botão "Parar Bot" em vermelho no header. Interrompe imediatamente e volta para status Aberto.

⚡ Disparar Fluxo

Clique em "Fluxo" no header para disparar manualmente um workflow. Se houver automação rodando, ela é cancelada antes.

👤 Painel do Contato

Informações exibidas:

  • Sessão — qual conta WhatsApp recebeu a mensagem
  • Tipo — Individual ou Grupo
  • ID Chat — JID completo do contato
  • Etiquetas — labels do WhatsApp (somente leitura)
  • Automação Ativa — nome do fluxo em andamento

✏️ Editar Nome

Hover no nome → clique em ✏️ → digite → Enter ou Salvar. Atualizado em toda a interface imediatamente.

🔄 Sincronizar Foto

Clique no ícone 🔄 sobre o avatar para buscar a foto de perfil do WhatsApp.

AçãoComo fazer
Enviar mensagemEnter
Quebrar linhaShift + Enter
Inserir resposta rápidaClique em 💬 → selecione o template
Enviar arquivoClique em 📎 → selecione o arquivo
Editar nome do contatoHover no nome → clique em ✏️
Parar automaçãoBotão vermelho "Parar Bot" no header
Carregar mais conversasBotão no final da lista
Carregar mensagens antigasBotão "Carregar mais" no topo do chat

Guias Práticos e Tutoriais

Construindo um Funil de Vendas

Aprenda a conectar os nodes Enviar Mensagem, IF/ELSE e Botões para qualificar um lead até o fechamento com PIX.

Ler o guia

Automação de Lançamento em 50 Grupos

Como usar o Trigger de Agendamento junto com o "Sequência de Lançamento" para disparar o Carrinho Aberto.

Ler o guia

Perguntas Frequentes

Posso usar o bot em múltiplos celulares?

Sim, o limite de sessões de WhatsApp vinculadas dependerá do plano da sua licença. Depois de conectar os QRCodes, você escolhe no Trigger do fluxo qual número irá responder.

As mensagens são enviadas como um celular normal?

Sim. A tecnologia Baileys emula o WhatsApp Web perfeitamente. Se usar a opção de simular "digitando...", o delay é transmitido para os contatos assim como você faria escrevendo à mão livre.

As mídias de vídeo e imagem ficam pesadas pro bot disparar?

Depende inteiramente dos limites do seu servidor, que faz o proxy das mídias. Mídias como PTT de voz devem ser encodadas nativamente em Opus (codec para que seja reconhecido como "voz"). A plataforma já se encarrega disso via conversor embutido (exigindo FFmpeg instalado na VPS).