Fazendo contas dentro do fluxo
Por Equipe BotConversa · Atualizado em 6 de setembro de 2026
Resposta rápida
O BotConversa não tem um bloco de cálculo. Nenhuma das ações disponíveis soma, subtrai ou multiplica, e o Definir campo grava texto, não faz conta. Para calcular algo dentro do fluxo, o caminho é o bloco de Integração: ele envia os valores para um endereço seu, que faz a conta e devolve o resultado — e você grava esse resultado num campo. Para datas, o Integrador resolve sem código, com a ação Alterar data e hora.
Por que não existe um bloco de conta?
Vale saber onde a busca termina, para você não perder tempo procurando a opção escondida:
- A lista de Ações tem 17 opções — etiqueta, Kanban, sequência, atendimento, campo, automação. Nenhuma é aritmética.
- Definir/Atualizar o valor de um campo aceita texto fixo ou variáveis
{}, até 1000 caracteres. Escrever{valor} * 2ali grava o texto literal "10 * 2", não o número 20. - O bloco Condição compara texto — É, NÃO É, Contém, Não Contém, Começa Com, Possui algum valor. Não há "maior que" nem "menor que".
Essa última é a que mais pega. Como não há comparação numérica, um fluxo do tipo "se o valor da compra for maior que R$ 200" não se monta com Condição. Ou o cálculo e a comparação acontecem fora, ou você desenha o fluxo com faixas escolhidas por botão pelo próprio cliente.
Como faço a conta pelo bloco de Integração?
A ideia: o fluxo manda os números para um endereço seu, esse endereço faz a conta e devolve o resultado, e você grava o resultado num campo para usar nas mensagens seguintes.
- Garanta que os números estão em campos do contato — normalmente capturados por uma pergunta antes.
- No construtor, adicione + → Integração → Adicionar Integração de Webhook.
- Escolha o método POST e informe a URL do seu endpoint. Só HTTPS é aceito.
- Na aba Corpo, monte o JSON usando as variáveis
{}dos campos. - Clique em Testar Requisição e confira o retorno na aba Resposta.
- Na aba Mapeamento de resposta, aponte o campo do JSON que traz o resultado para um campo do contato.
- Ligue a saída Em resposta com sucesso ao próximo bloco e use a variável do campo na mensagem.
Um corpo típico, com os valores vindo dos campos:
{
"quantidade": "{quantidade}",
"preco_unitario": "{preco_unitario}"
}
E a resposta que o seu endpoint devolve:
{ "total": 249.9 }
No Mapeamento de resposta, você liga total ao campo {total_pedido}. Dali em diante, {total_pedido} funciona como qualquer outra variável do fluxo.
Três limites do bloco de Integração que mudam o desenho do fluxo: ele existe apenas no plano PRO; o timeout é de 10 segundos; e, se estourar, o fluxo segue pela saída de baixo sem os dados — o cliente recebe a mensagem com a variável vazia e nada acusa erro. Sempre mande a saída de baixo para uma mensagem de fallback, em vez de deixá-la seguir para o caminho normal.
E para contas com datas?
Esse caso tem solução sem código. O Integrador tem a ação utilitária Alterar data e hora, que soma ou subtrai tempo de um valor, além de ajustar fuso e formato.
É o que resolve "lembrete 1 dia antes da consulta" ou "follow-up 48 horas depois da compra" — sem endpoint nenhum.
Dá para evitar a conta?
Com frequência, sim — e costuma sair mais barato que manter um endpoint no ar. Duas saídas que funcionam bem:
- Peça a faixa, não o número. Em vez de perguntar o valor e comparar, ofereça botões: "até R$ 200", "de R$ 200 a R$ 500", "acima de R$ 500". O cliente classifica, e o fluxo ramifica por etiqueta — sem cálculo e sem comparação numérica.
- Deixe a conta com quem já a faz. Se o número vem do seu sistema de vendas ou do checkout, traga o resultado já calculado pelo webhook de entrada, em vez de recalculá-lo aqui.
Dicas
- Teste o endpoint fora antes. Se ele já falha no seu terminal, não vai funcionar no fluxo — e depurar pelo construtor é bem mais lento.
- Meça o tempo de resposta. Perto dos 10 segundos, o comportamento fica intermitente: às vezes chega, às vezes não. Endpoint de cálculo deve responder em menos de 1 segundo.
- Devolva número, não texto formatado. Mande
249.9e formate na mensagem do fluxo; devolver "R$ 249,90" trava qualquer uso posterior do valor. - Use Ver todos os logs no bloco para ver o que foi enviado e o que voltou em cada chamada real.
Perguntas frequentes
Posso escrever {a} + {b} no campo de valor?
Pode escrever, mas o campo grava o texto literal. As variáveis são substituídas pelos valores e o resultado vira uma frase, não uma soma.
Existe algum bloco que compare números?
Não com operadores numéricos. A Condição compara texto — É, Contém, Começa Com e afins. Comparação de maior/menor precisa acontecer fora do fluxo.
Preciso mesmo do plano PRO?
Para o bloco de Integração, sim. Sem ele, restam a rota de datas pelo Integrador e o desenho por faixas com botões.
Onde hospedo o endpoint de cálculo?
Em qualquer serviço que responda HTTPS. Como a lógica costuma ser pequena, uma função serverless dá conta e sai praticamente de graça.
Consigo contar quantas vezes alguém passou por um ponto?
Não por incremento automático. O caminho é o mesmo: o endpoint recebe o valor atual, devolve o valor somado, e o mapeamento de resposta grava de volta no campo.