WhatsApp Flows pela API: formulários e telas dentro da conversa
Como enviar um WhatsApp Flow pela API: o endpoint, os campos flowId e flowAction, e quando um formulário nativo bate um menu de texto ou uma lista.
WhatsApp Flow é uma tela de formulário nativa que abre dentro da conversa — o cliente preenche campos, navega entre passos e envia, sem sair do WhatsApp e sem abrir um link. Pela API, você não desenha a tela na chamada: referencia um Flow já criado e aprovado, e manda uma mensagem interativa com o botão que o abre.
Quando um Flow vale mais que uma lista ou um link
Antes de desenhar a tela, vale a pergunta inversa: o caso realmente precisa de um formulário nativo?
| Se você precisa de... | Use |
|---|---|
| Uma escolha simples entre poucas opções | Botões ou lista |
| Confirmar ou cancelar algo | Botão de resposta rápida |
| Coletar vários campos (nome, endereço, data) numa etapa | Flow |
| Um formulário com passos condicionais (pergunta B só se A for "sim") | Flow |
| Uma página completa fora do WhatsApp (checkout de site) | Link externo |
Flow ganha exatamente no meio: quando um link externo seria fricção demais (o cliente sai do app, talvez não volte) mas botão e lista são simples demais para o que precisa ser coletado.
O endpoint
O envio é um POST para o endpoint de mensagem de Flow da sua instância, com os campos que definem qual Flow abrir e como:
curl -X POST "https://us.api-wa.me/{key}/message/flow" \
-H "Content-Type: application/json" \
-d '{
"to": "5566996852025",
"flowId": "1605871230584440",
"flowCta": "Agendar horário",
"header": "Agende sua consulta",
"body": "Toque no botão abaixo para escolher data e horário.",
"footer": "Resposta em até 1 dia útil",
"flowAction": "navigate",
"screen": "WELCOME",
"mode": "published"
}'Campo a campo:
| Campo | Obrigatório | O que faz |
|---|---|---|
to | Sim | Número do destinatário, com DDI |
flowId | Sim | ID do Flow já criado e aprovado |
flowCta | Sim | Texto do botão que abre a tela (ex: "Agendar horário") |
header / body / footer | Não | Texto ao redor do botão, antes de abrir o Flow |
flowAction | Não | navigate (abre a primeira tela) ou data_exchange (troca dados com seu backend a cada passo) |
screen | Não | Tela inicial, quando o Flow tem mais de uma |
data | Não | Dados que você já quer pré-preenchidos na tela |
mode | Não | draft para testar antes de publicar, published em produção |
navigate vs data_exchange
Essa é a decisão que muda a arquitetura do que você constrói:
navigate — o Flow é estático: as telas e a navegação entre elas já estão definidas na publicação, e no fim você recebe os dados coletados numa única mensagem de retorno. Serve bem para formulários fechados: cadastro, pesquisa de satisfação, coleta de dados de contato.
data_exchange — cada passo do Flow chama o seu endpoint, e a próxima tela pode depender da resposta. É o modo certo quando o formulário precisa de lógica: mostrar horários disponíveis de verdade (consultando sua agenda), validar um CEP, ou pular uma pergunta com base na resposta anterior.
// Endpoint que o WhatsApp chama a cada passo, em modo data_exchange
app.post("/webhook/flow", async (req, res) => {
const { screen, data } = req.body;
if (screen === "ESCOLHER_DATA") {
const horarios = await consultarAgendaDisponivel(data.dataEscolhida);
return res.json({
screen: "ESCOLHER_HORARIO",
data: { horariosDisponiveis: horarios },
});
}
// ...demais telas
});Recebendo a resposta
Quando o cliente conclui o Flow, os dados chegam pelo mesmo webhook onde chegam suas outras mensagens — como um evento do tipo interactive, com os campos preenchidos no corpo. O parser que você já usa para ler mensagens no formato padrão da Meta só precisa reconhecer esse tipo adicional.
Onde isso é útil de verdade
Agendamento. Data, horário e serviço numa tela só, sem trocar cinco mensagens de texto para chegar ao mesmo resultado — e sem o cliente esquecer de responder no meio, o problema que lembretes com confirmação por botão já reduz, mas um Flow resolve num passo a mais.
Cadastro e atualização de dados. Nome, endereço, CPF — campos estruturados, com validação, em vez de interpretar texto livre com IA para extrair a mesma informação.
Pesquisa com lógica condicional. NPS que só pergunta "o que faltou?" quando a nota é baixa, por exemplo — sem enviar uma sequência de mensagens de texto para simular o mesmo comportamento.
Conclusão
Flow é a ferramenta certa quando o formulário tem mais de um ou dois campos, ou quando a navegação depende de lógica — abaixo disso, botão e lista continuam mais simples de implementar e de manter. A chamada pela API é direta: flowId do que já foi publicado, flowCta no texto do botão, e a escolha entre navigate e data_exchange decidindo se o formulário é estático ou conversa com seu backend em tempo real.
Pronto para automatizar seu WhatsApp?
Crie sua conta gratuita e comece a enviar mensagens pela API em minutos.
Começar grátisPerguntas frequentes
O que é um WhatsApp Flow?+
É uma tela nativa que abre dentro da própria conversa do WhatsApp, com campos de formulário, seleção e navegação entre passos — sem sair do app e sem abrir um link externo. É usado para agendamento, pesquisa, cadastro e checkout guiado.
Como envio um Flow pela API?+
Você manda uma mensagem interativa referenciando o flowId (o identificador do Flow já criado e aprovado no Gerenciador do WhatsApp Business), junto com o texto do botão que abre a tela (flowCta). A API expõe isso como um tipo de mensagem próprio, separado de texto, botão ou lista.
Preciso criar o Flow em algum lugar antes de usar a API?+
Sim. O Flow em si — as telas, os campos, a navegação — é definido e publicado no Gerenciador do WhatsApp Business (ou via API de Flows da Meta), de forma parecida com a aprovação de um template. A chamada pela API só dispara um Flow que já existe e já foi publicado.
Qual a diferença entre Flow, lista e botões?+
Botões e listas continuam dentro do fluxo de mensagens — cada toque gera uma nova mensagem trocada. Um Flow abre uma tela própria, com múltiplos campos e passos, e só devolve os dados no fim (ou a cada etapa, se configurado como data_exchange). Use lista para 'escolha uma opção entre poucas'; use Flow para 'preencha um formulário'.
Flow funciona na API não oficial?+
Flows são um recurso da Cloud API oficial da Meta, ligado à conta verificada. Antes de desenhar um fluxo em cima de Flows, confirme na documentação da sua instância se o suporte está disponível para o tipo de conta que você está usando.
Continue lendo
Automatizar grupos de WhatsApp pela API: guia completo
Como automatizar grupos de WhatsApp pela API: criar, adicionar participante, moderar entrada e enviar aviso automático, com exemplos práticos em cURL.
Catálogo com carrinho no WhatsApp: como vender sem sair da conversa via API
Veja como popular o catálogo de produtos via API do WhatsApp e montar um fluxo de carrinho nativo, sem redirecionar o cliente pra fora da conversa.
Checklist de compliance para WhatsApp API em 2026
Checklist prático de compliance para WhatsApp API: opt-in, LGPD, Quality Rating e política de template — o que auditar antes de escalar o envio em 2026.