WhatsApp Flows: formulários nativos dentro da conversa
WhatsApp Flows são formulários e telas interativas que abrem dentro da própria conversa do WhatsApp, sem redirecionar para o navegador. São definidos por um documento chamado Flow JSON, publicado na sua WABA, e podem ser estáticos ou buscar dados em tempo real através de um endpoint.
Atualizado em
Coletar dados por conversa é lento. Você pergunta o nome, o cliente responde. Pergunta o e-mail, ele responde três horas depois. Pergunta o melhor horário, ele manda um áudio. No fim, alguém precisa ler tudo e transcrever para o sistema.
A alternativa óbvia — mandar um link de formulário — troca um problema por outro: o cliente sai do WhatsApp, a página demora a carregar, e boa parte simplesmente não volta.
Os WhatsApp Flows existem para resolver isso sem sair da conversa.
O que é um WhatsApp Flow
É um conjunto de telas interativas que abrem dentro do próprio WhatsApp. Campos de texto, listas de escolha, seletor de data, upload de arquivo — tudo renderizado nativamente pelo aplicativo, sem navegador, sem redirecionamento.
Para o cliente, é uma tela do WhatsApp. Para você, é dado estruturado chegando no formato certo.
A Meta lançou o recurso em setembro de 2023 e vem ampliando os tipos de componente desde então.
Como um Flow é definido
Todo Flow é descrito por um documento chamado Flow JSON. Ele declara:
- As telas (
screens) e a ordem entre elas - Os componentes de cada tela —
TextInput,RadioButtonsGroup,DatePicker,PhotoPickere outros - As validações de cada campo — obrigatório, tamanho máximo, formato, intervalo de datas
- O modelo de navegação (
routing_model), que descreve quais telas levam a quais
Esse documento é publicado na sua WABA e passa a ficar disponível para envio.
O contrato da Meta é rígido de um jeito específico: o JSON pode estar sintaticamente perfeito e ainda assim ser recusado. Número precisa ser número e não string. RichText só pode ocupar a tela sozinho. Cada tela aceita no máximo um seletor de foto ou de documento. O carrossel aceita no máximo três imagens. Tela inalcançável faz a publicação falhar.
É por isso que escrever Flow JSON à mão é desagradável mesmo para quem programa — e é o argumento central para usar um editor visual, que só gera combinações que a Meta aceita.
Estático ou dinâmico
Existem dois modos, e a escolha entre eles é a decisão de arquitetura mais importante do recurso.
Estático (flow_action: navigate) — todo o conteúdo já está no Flow JSON publicado. As telas não mudam entre um envio e outro. Publique e esqueça.
Dinâmico (flow_action: data_exchange) — a cada transição de tela, o WhatsApp chama um endpoint seu, que responde com o conteúdo da tela seguinte. O tráfego é criptografado com um par de chaves RSA que você registra na Meta, mais uma chave AES por sessão.
| Estático | Dinâmico | |
|---|---|---|
| Conteúdo das telas | Fixo na publicação | Montado a cada envio |
| Precisa de servidor | Não | Sim, sempre disponível |
| Bom para | Cadastro, pesquisa, qualificação | Agenda, estoque, faturas |
| Custo de operação | Publicar e esquecer | Serviço em produção para monitorar |
A regra prática: use dinâmico só quando as opções realmente dependem do momento. Um formulário de qualificação de lead não precisa disso. Um agendamento que mostra horários livres, precisa. Detalhes em data_exchange.
Como a resposta volta para você
Ao enviar um Flow, você inclui um flow_token — um identificador que você gera. O WhatsApp trata esse valor como opaco: não interpreta, apenas devolve.
Quando o cliente conclui o formulário, chega um webhook do tipo nfm_reply com as respostas e o token original. É ele que permite saber a qual disparo aquele formulário pertence.
Por isso o token precisa ser único por envio, não por contato. Se o mesmo contato tem dois formulários em aberto e ambos usam o mesmo token, a resposta cai na sessão errada.
Esse mecanismo é o que torna possível pausar uma automação, esperar o preenchimento e retomar exatamente de onde parou — que é o assunto da receita Enviar um formulário no WhatsApp e continuar com a resposta.
O que dá para colocar numa tela
Os componentes disponíveis cobrem a maior parte dos casos de coleta:
- Texto: campo curto, área de texto longo
- Escolha: botões de opção, caixas de seleção, lista suspensa, seletor de chips
- Data: seletor de data e calendário
- Arquivo: seletor de foto e seletor de documento
- Consentimento: caixa de aceite (opt-in)
- Conteúdo: título, subtítulo, texto, legenda, imagem, carrossel, link
As validações acompanham: campo obrigatório, quantidade mínima e máxima de caracteres, expressão de formato, intervalo de datas, número mínimo e máximo de itens selecionados, texto de ajuda.
Onde os Flows fazem diferença
Os casos em que o ganho é mais claro:
Agendamento — data, horário e serviço em uma tela só, em vez de seis mensagens trocadas.
Qualificação de lead — orçamento, prazo e necessidade em campos tipados, prontos para decidir o roteamento sem ninguém ler.
Pesquisa de satisfação — nota e comentário logo após o atendimento, dentro da mesma conversa.
Cadastro e documentos — dados pessoais com validação de formato, e upload de documento sem pedir para o cliente mandar foto solta no chat.
Por onde começar
- Comece estático. A maioria dos casos não precisa de endpoint, e adicionar um depois é mais fácil que manter um que não era necessário.
- Faça uma tela, se possível. Cada tela adicional é uma chance de abandono.
- Só marque como obrigatório o que você realmente usa depois.
- Trate a saída de tempo esgotado desde o primeiro fluxo: quem abre e não termina é justamente o lead que vale a pena recuperar.
Perguntas frequentes
- Qual a diferença entre um WhatsApp Flow e um link para formulário?
- O Flow abre em telas nativas dentro do WhatsApp, sem sair do aplicativo. Um link leva o usuário para o navegador, onde a página precisa carregar e o contexto da conversa se perde — o que costuma custar conclusões.
- Preciso programar para criar um WhatsApp Flow?
- Não, se a plataforma oferecer um editor visual. O formato que a Meta recebe é o Flow JSON, mas um editor monta esse documento a partir de campos arrastados e valida as regras de contrato antes de publicar.

