message.received, message.flow_reply, message.sent, message.delivered, message.read e message.failed; os demais eventos desta página são emitidos por instâncias não oficiais (conexão por QR Code). Na outra direção, message.failed e message.flow_reply existem apenas na API oficial. A API recusa a assinatura de qualquer evento indisponível para o tipo de conexão da instância, tanto na criação quanto na atualização do webhook: a resposta é um erro 400 com o código unsupported_webhook_event, que nomeia todos os eventos recusados e lista os eventos disponíveis para aquela instância. Cada evento com essa restrição traz o aviso na sua própria seção.instance.connected
A instância foi conectada com sucesso e está pronta para envio e recebimento de mensagens.
Exemplo
Exemplo
instance.disconnected
A instância foi desconectada com sucesso.
instance.connected pode ser emitido alguns segundos depois do evento de desconexão.Exemplo
Exemplo
instance.forbidden
A conexão da instância foi rejeitada pelo WhatsApp. Isso pode indicar que o número foi bloqueado, mas o evento sozinho não é uma confirmação de bloqueio: é necessária verificação antes de assumir isso.
disconnected e um novo QR Code costuma ser gerado logo em seguida (o evento instance.qrcode normalmente é emitido na sequência). Ao receber esse evento, reconecte a instância lendo o novo QR Code; se ele voltar a acontecer com frequência, revise as práticas de envio do número.Exemplo
Exemplo
message.received
Uma mensagem foi recebida na instância. Para detalhamento completo de como é o formato do objeto mensagem verifique na página Estrutura dos eventos > Mensagem
Exemplo: Mensagem de texto
Exemplo: Mensagem de texto
Exemplo: Mensagem com imagem
Exemplo: Mensagem com imagem
Exemplo: Mensagem com áudio
Exemplo: Mensagem com áudio
Exemplo: Mensagem de localização
Exemplo: Mensagem de localização
Exemplo: Mensagem com Sticker
Exemplo: Mensagem com Sticker
Exemplo: Mensagem com GIF ou Vídeo
Exemplo: Mensagem com GIF ou Vídeo
Exemplo: Mensagem "quoted" (ou resposta) para outra mensagem
Exemplo: Mensagem "quoted" (ou resposta) para outra mensagem
data.content.quoted, ela representa a citação ou marcação de quem está respondendo e tem o mesmo formato de uma message.received.Exemplo: Mensagem resposta à um status
Exemplo: Mensagem resposta à um status
data.content.quoted que terá o mesmo formato de uma message.received, a grande diferença aqui é que você verá uma nova propriedade data.content.quoted.content.origin sendo o seu valor igual à status.Exemplo: Mensagem com vcard (contatos)
Exemplo: Mensagem com vcard (contatos)
Exemplo: Mensagem com botões
Exemplo: Mensagem com botões

data.content).Exemplo: Mensagem resposta à botões
Exemplo: Mensagem resposta à botões

data.button_reply) mostrará qual botão o usuário pressionou.Exemplo: Mensagem com lista de opções
Exemplo: Mensagem com lista de opções

Exemplo: Mensagem resposta à lista de opções
Exemplo: Mensagem resposta à lista de opções
data.list_reply) mostrará qual opção o usuário selecionou.Exemplo: Resposta de um WhatsApp Flow
Exemplo: Resposta de um WhatsApp Flow
data.content.flow_reply (flow_token, response e response_raw) e data.type vem como flow_reply.message.flow_reply
Emitido quando alguém conclui um WhatsApp Flow (formulário nativo do WhatsApp) enviado pela sua instância. É um evento dedicado e assinável, pensado para quem precisa reagir só a respostas de formulário, sem inspecionar todas as message.received.
message.received: uma resposta de Flow continua sendo disparada também como message.received, com o conteúdo namespaced em data.content.flow_reply (mesmos campos flow_token, response e response_raw) e data.type igual a flow_reply. O message.flow_reply é emitido em adição, trazendo esses mesmos campos direto na raiz de data.content, para quem só precisa assinar respostas de formulário.data.content:
flow_token: o token que você definiu ao enviar o Flow, usado para correlacionar a resposta com o envio original. Pode virnullquando o Flow não devolve token. Evite colocar dados pessoais nesse token: diferente das respostas do formulário, ele não é tratado como dado sensível pela plataforma.response: as respostas do formulário já parseadas em objeto. As chaves são exatamente as definidas por você no Flow JSON, sem nenhuma transformação de chave ou valor. Oflow_tokennão aparece dentro deresponse, ele já vem promovido para o campo de topo.response_raw: a string JSON original enviada pela Meta, sem nenhum tratamento. Está sempre presente, mesmo quando o parse deu certo, e serve para quem quer aplicar o próprio parser ou fazer auditoria byte a byte da submissão. Se o JSON vier malformado,responsechega como{}eresponse_rawpreserva a submissão original.quoted(quando presente): a mensagem de Flow original que foi respondida, no mesmo formato de citação usado emmessage.received.
Exemplo
Exemplo
message.sent
Uma mensagem foi enviada da instância mensagem pode ter sido enviada através do Whatsapp ou através da API da Zapster.
Você consegue identificar facilmente a origem do envio olhando para a propriedade data.origin que tem 2 valores possíveis (zapsterapi ou whatsapp), que identificarão a origem do envio da mensagem.
message.sent com data.origin igual a whatsapp. Mensagens enviadas pela API têm data.origin igual a zapsterapi.Exemplo: Mensagem de texto
Exemplo: Mensagem de texto
message.delivered
Indica que a mensagem foi entregue ao destinatário.
Exemplo
Exemplo
message.read
Indica que a mensagem foi lida pelo destinatário.
Exemplo
Exemplo
message.failed
O WhatsApp recusou a entrega da mensagem. O evento traz o motivo da recusa em data.errors e, quando a mensagem foi enviada pela Zapster, também o conteúdo original em data.content.
message.failed é recusada ao criar ou atualizar um webhook de instância não oficial.data.errors traz code e title sempre preenchidos, e message e details quando a Meta os envia. Use o code para tratar a falha de forma programática (por exemplo, 131026 indica mensagem não entregue ao destinatário, e 131047 indica que a janela de atendimento expirou e um template é necessário) e o details para registrar a explicação completa.
Exemplo
Exemplo
message.deleted
Indica que uma mensagem foi apagada (para mim ou para todos) na conversa.
Exemplo
Exemplo
message.reaction
Indica que uma reação (emoji) foi aplicada a uma mensagem.
Exemplo
Exemplo
Exemplo
Exemplo
message.pinned
Indica que uma mensagem foi fixada na conversa/grupo.
Exemplo
Exemplo
message.unpinned
Indica que uma mensagem foi desafixada.
Exemplo
Exemplo
instance.mentioned
Indica que sua instância foi mencionada (”@…”) em uma conversa/grupo.
Exemplo
Exemplo
status.reply
Emitido quando alguém responde a um status publicado pela sua instância. É um evento dedicado e assinável, pensado para quem precisa automatizar em cima de respostas de status sem inspecionar todas as message.received.
message.received: uma resposta a status continua sendo disparada também como message.received (com o status em data.content.quoted, no formato completo de mensagem). O status.reply é emitido em adição, com um formato enxuto e dedicado.message.received, o status.reply tem um formato enxuto: o status respondido vem em data.content.status (id, type, text, media, background_color) — sem o data.content.quoted redundante — e não há data.sender, porque nesse contexto ele seria sempre igual ao data.recipient (o contato que respondeu). A resposta em si fica no topo: data.content.text/media, data.recipient, data.sent_at e data.type.
Exemplo: Resposta a um status de texto
Exemplo: Resposta a um status de texto
Exemplo: Resposta a um status de mídia (imagem)
Exemplo: Resposta a um status de mídia (imagem)
instance.qrcode
Notifica quando um novo QR Code é gerado/atualizado para a instância.
Exemplo
Exemplo
group.created
Indica que um novo grupo foi criado.
Exemplo
Exemplo
group.updated
Indica que os dados do grupo foram atualizados (nome, foto, descrição, etc.).
Exemplo
Exemplo
group.participants_added
Indica que um ou mais participantes foram adicionados ao grupo.
Exemplo
Exemplo
group.participants_removed
Indica que participantes foram removidos do grupo.
Exemplo
Exemplo
group.participants_promoted
Indica que participantes foram promovidos a administradores.
Exemplo
Exemplo
group.participants_demoted
Indica que participantes foram rebaixados de administradores para membros.
Exemplo
Exemplo
