Nó de Cadastro (formulário)
O nó Cadastro (formulário) pergunta ao cliente uma lista de campos que você define, valida cada resposta e grava tudo como variáveis do atendimento. Serve para captura de lead, abertura de chamado, agendamento de visita — qualquer situação em que o fluxo precise coletar dados antes de seguir.
Montando o formulário
Formulários são cadastrados em Configurações > Formulários
(/configs/forms), não dentro do nó. Assim o mesmo cadastro serve a vários
fluxos e ao link público, e editar um campo reflete em todos os lugares de uma
vez — a tela avisa em quais fluxos o formulário está em uso antes de você
alterar.
Cada campo tem:
| Configuração | Para que serve |
|---|---|
| Pergunta ao cliente | O texto enviado no WhatsApp para pedir aquele dado |
| Chave da variável | Como o dado é referenciado depois: {{ form.chave }} |
| Tipo | Validação aplicada à resposta |
| Obrigatório | Quando desmarcado, o cliente pode pular respondendo em branco |
Tipos disponíveis: Texto, Número, E-mail, Telefone, CPF/CNPJ (com verificação dos dígitos), Data (DD/MM/AAAA) e Escolha (o cliente responde pelo número ou pelo texto da opção).
No Flow Builder, o nó Cadastro (formulário) apenas escolhe qual formulário usar — ele lista os campos e as variáveis geradas, mas a edição acontece no catálogo.
Opcionalmente, marque mostrar resumo e pedir confirmação no final: antes de concluir, o fluxo lista tudo que foi informado e pergunta se está correto. Se o cliente escolher corrigir, o formulário recomeça.
Usando os dados nos outros nós
Toda resposta vira uma variável sob o namespace form:
Obrigado, {{ form.nome }}! Registramos sua solicitação para {{ form.periodo }}.
O token é resolvido no mesmo ponto em que as variáveis reservadas
({{ CONTATO_NOME }}, {{ ATENDIMENTO_PROTOCOLO }}) são resolvidas: na
composição de todo texto enviado. Na prática, funciona em qualquer lugar —
nós do Flow Builder, templates do nó de ERP, variáveis de sistema e até numa
mensagem digitada pelo operador.
Uma chave ainda não coletada vira texto vazio, e não o token cru: é melhor um
espaço em branco do que o cliente receber {{ form.cpf }} na conversa.
Enviando para um sistema externo
Ligue o nó Requisição HTTP depois do cadastro. Endpoint, headers, query e corpo aceitam as mesmas variáveis:
{
"nome": "{{ form.nome }}",
"documento": "{{ form.cpf }}",
"telefone": "{{ CONTATO_NUMERO }}",
"protocolo": "{{ ATENDIMENTO_PROTOCOLO }}"
}
A resposta volta para o fluxo como variáveis:
{{ form.http_status }}— código HTTP retornado;{{ form.http_body }}— corpo bruto (truncado em 10 mil caracteres);{{ form.http_<campo> }}— cada campo de um JSON de primeiro nível.
Campos em qualquer nível do JSON, prefixo por requisição e nomes reservados estão em Nó Requisição HTTP.
Assim dá para devolver ao cliente o protocolo gerado do outro lado:
Pronto! Seu chamado é o número {{ form.http_protocolo }}.
Saídas dos nós
Os dois nós têm duas saídas:
| Saída | Cadastro | Requisição HTTP |
|---|---|---|
success | Formulário concluído | Status 2xx |
failure | Cliente errou o mesmo campo além do limite | Erro de conexão ou status fora de 2xx |
Se você não desenhar a conexão pedida, o fluxo segue pela saída padrão — fluxos montados antes desta versão continuam funcionando sem alteração.
Detalhes que importam
O cadastro continua de onde parou. As respostas são gravadas uma a uma, assim que chegam. Se o cliente sumir no meio e voltar horas depois, o fluxo repergunta apenas o campo pendente — nada do que ele já respondeu se perde.
Os dados ficam gravados depois do atendimento. Cada resposta é um registro
ChatVariable ligado à conversa, consultável depois que o atendimento encerra.
Editar o formulário não apaga histórico. Cada resposta guarda uma cópia dos campos como estavam no momento do preenchimento. Se você remover ou renomear um campo depois, as respostas antigas continuam aparecendo na tela de detalhe (com o aviso Removido do formulário) e na exportação CSV, sob a pergunta que foi realmente feita.
O nó HTTP não alcança a rede interna. Endereços privados, loopback e link-local são recusados, e todo pedido tem timeout (padrão 15s, máximo 60s) — a chamada acontece durante a conversa do cliente, então não pode travar o atendimento esperando um endpoint lento.
O formulário viaja com o fluxo. Na exportação, o nó referencia o formulário pelo slug. Ao importar noutro cliente, um formulário com o mesmo slug é religado automaticamente; sem ele, o campo fica vazio e a referência aparece na lista de pendências da importação.
Link público
Marque publicar link público no formulário e ele passa a ser acessível em:
https://<cliente>.flashchat.digital/f/<slug>
A página é anônima e não exige conta. As respostas caem na mesma lista de
Respostas do formulário, marcadas com a origem Link (contra Atendimento),
e podem ser exportadas em CSV.
Proteções aplicadas: limite de 20 envios por hora por IP e um campo-armadilha invisível — quando preenchido, a submissão é descartada e a resposta finge sucesso, para não ensinar ao robô qual sinal o denunciou.
Uma submissão pelo link não abre atendimento nem gera variáveis de conversa: ela existe fora de qualquer chat. É justamente por isso que as respostas são gravadas como submissão do formulário, e não presas a um atendimento.