Escolha o tipo interativo certo
Todos exigem
text — o corpo da mensagem acima dos botões ou do botão da lista. São mutuamente exclusivos: um tipo interativo por mensagem. (buttons também pode ir num envio de template; list, carousel e flow não.)
Enviar uma lista
202 de sempre, com id e correlationId. Guarde o id: é ele que liga a escolha do cliente a este menu (veja Ligue a escolha ao menu abaixo).
header e buttons não são permitidos junto com list.
Enviar botões de resposta
reply, um botão pode ser url, call ou copy — os formatos completos estão em Enviar interativos.
Receber a escolha do cliente
A escolha chega no seu webhook como qualquer outra mensagem de entrada. O formato do payload depende de como o número foi conectado — a mesma regra de todos os outros eventos de entrada (Quais eventos o seu número envia).- Meta Cloud API (oficial)
- Não oficial (Pilot Status web)
Você recebe o envelope nativo da Meta (campo de webhook Um botão de resposta chega do mesmo jeito, com
messages), com type: "interactive". O id que você definiu na linha ou no botão volta, e context.id é o wamid da mensagem que levou o menu."type": "button_reply" e "button_reply": { "id": "boleto:tit-2041", "title": "Boleto" }.Decida por interactive.list_reply.id / interactive.button_reply.id — é a chave do seu ERP, intacta.Ligue a escolha ao menu
O seu robô costuma ter vários menus abertos com clientes diferentes. Para saber a qual menu uma escolha pertence, guarde um registro pequeno por menu enviado:POST /v1/messages/senddevolveid→ guarde{ id, cliente, opções }.- Descubra o id do WhatsApp desse menu: em números não oficiais, o
message.senttrazidemessageId; em números oficiais, cada item destatuses[]traz o seuidembiz_opaque_callback_data, ao lado dowamid(statuses[].id). - A escolha cita esse
messageId—quotedMessageId(não oficial) oucontext.id(oficial) — e você encontra o registro e a opção.
"id": "tit-2041"), o passo 2 é opcional: o id da linha — list_reply.id em números oficiais, buttonId nos não oficiais — já diz o que foi escolhido.
A janela de 24 horas e o custo (números oficiais)
- Mensagens de texto livre — botões, listas, carrosséis, texto simples — só são entregues num número Meta enquanto a janela de atendimento de 24 horas estiver aberta, ou seja, até 24 h depois da última mensagem do cliente. Um robô que responde mensagens recebidas está sempre dentro dela.
- Para iniciar a conversa você mesmo (um lembrete de vencimento, por exemplo), use primeiro um template aprovado. Quando o cliente responder, a janela abre e o robô continua com listas e botões.
- Fora da janela o envio falha com
META_OUTSIDE_24H_WINDOW. Você pode consultar a janela antes de enviar comGET /v1/service-window. - Mensagem de serviço não é mais sempre grátis. Desde 01/10/2026, a Meta dá 1.000 mensagens de serviço grátis por mês por número e cobra a tarifa de Utilidade do país depois disso. Quem cobra é a Meta, não a Pilot Status. Veja Preços.
Erros comuns
Próximos passos
- Enviar interativos — todos os tipos de botão, carrosséis, regras de
header/footer. - Enviar uma mensagem — referência completa do parâmetro
list. - Receber mensagens — como configurar o webhook.
- Eventos de webhook — payloads canônicos e nativos.