Skip to main content
O encaminhamento envia para uma URL sua cada mensagem que entra ou sai da sua conta na WizeBot. Use para alimentar um CRM, uma planilha, um N8N ou um Make, ou qualquer sistema que aceite webhooks. Cada mensagem vira um POST com um corpo JSON de formato fixo: campos que não se aplicam vêm como null ou false, nunca são omitidos.
Esta página trata do envio de mensagens da WizeBot para o seu sistema. Para o caminho inverso, em que uma plataforma externa dispara mensagens na WizeBot, veja Automações com webhooks.

Onde configurar

Acesse Configurações › Webhook e clique em Novo Webhook. Você pode ter mais de um webhook, cada um com a própria URL e os próprios filtros.

Todas as mensagens ou só alguns tipos

Em Mensagens enviadas você decide quais mensagens que saem da sua conta chegam ao webhook:
  • Todas as mensagens: toda mensagem enviada, inclusive de tipos que a WizeBot venha a criar depois.
  • Escolher tipos: só os tipos marcados. É preciso marcar pelo menos um.
Um webhook novo já vem com Todas as mensagens selecionado.
Webhooks criados antes desta opção recebem só mensagens do atendente (attendant), exatamente como antes. Ao abrir um desses webhooks, a tela mostra Escolher tipos com só Atendente marcado. Nada muda até você alterar a seleção e salvar.

Eventos

Mensagem enviada só é encaminhada depois que o canal aceita o envio. Envio recusado não gera message.sent.

Formato do envio

Todo envio tem o mesmo envelope:

Campos de data

Os campos seguem camelCase, diferente do snake_case da API da WizeBot.

Diferenças por tipo de mensagem

Texto

body traz o texto. mediaUrl, caption, mimeType e fileName vêm null.

Mídia

Imagem, áudio, vídeo, documento e figurinha. body vem null; a legenda, quando existe, vem em caption.
  • Recebida: mediaUrl é o endereço público do arquivo, guardado pela WizeBot. O encaminhamento acontece depois que o arquivo foi baixado do WhatsApp, por isso pode chegar alguns segundos depois de uma mensagem de texto enviada no mesmo momento. Se o arquivo não puder ser obtido do WhatsApp, a mensagem é encaminhada assim mesmo, com mediaUrl: null.
  • Enviada: mediaUrl é o endereço do arquivo usado no envio.
  • Resposta pelo celular (phone_echo): vem com mediaUrl: null. O tipo, a legenda e o nome do arquivo vêm preenchidos quando existem.

Botão e lista

Quando o contato toca num botão ou escolhe um item de lista, chega um message.received com type interactive (botão ou lista de mensagem interativa) ou button (botão de modelo). body vem null: a opção escolhida não vem no encaminhamento. Na mensagem enviada com botões ou lista, type é interactive e body traz o texto principal da mensagem. Os botões não vêm.

Resposta de formulário

A resposta de um formulário do WhatsApp chega como message.received com type interactive e body null. As respostas preenchidas não vêm no encaminhamento.

Modelo

Na mensagem enviada com type template, body traz o texto do corpo do modelo com as variáveis já preenchidas. Cabeçalho e botões não vêm, e mediaUrl vem null mesmo quando o modelo tem cabeçalho de mídia.

Anúncio de clique para o WhatsApp

A mensagem que o contato envia ao chegar por um anúncio traz referral preenchido: Qualquer um desses campos pode vir null.

Localização, contatos e outros

Mensagens de localização, cartão de contato e pedido chegam com o type correspondente e body null. O conteúdo delas não vem no encaminhamento.

Exemplos

Todos os dados abaixo são fictícios.
Respostas longas do agente de IA podem ser enviadas em várias partes. Nesse caso, cada parte chega como um message.sent separado.

Cabeçalhos

Assinatura HMAC-SHA256

Com o Secret preenchido, a WizeBot calcula o HMAC-SHA256 do corpo da requisição, usando o secret como chave, e envia o resultado em hexadecimal no cabeçalho X-Webhook-Signature, com o prefixo sha256=. Para validar:
1

Use o corpo bruto

Calcule a assinatura sobre os bytes do corpo exatamente como chegaram, antes de converter o JSON. Reconverter o objeto para texto pode mudar espaços ou a ordem dos campos e invalidar a comparação.
2

Calcule e compare

Calcule o HMAC-SHA256 do corpo com o seu secret, acrescente o prefixo sha256= e compare com o cabeçalho. No seu servidor, use uma comparação de tempo constante.
3

Recuse o que não bate

Responda com erro e descarte o conteúdo quando a assinatura não bater.
Para conferir manualmente uma requisição salva, com o corpo gravado em corpo.json:

Entrega

Desativação automática

Cada tentativa que falha soma uma falha seguida, e cada entrega com sucesso zera a contagem. Ao chegar a 50 falhas seguidas, o webhook é desativado automaticamente e para de receber mensagens. Para reativar, corrija o problema no seu servidor e clique em Resetar no card do webhook, em Configurações › Webhook. Isso zera a contagem e volta a ativar o webhook. Só ligar o webhook de novo, sem resetar, mantém a contagem: a próxima falha o desativa outra vez.

Mensagens repetidas

A mesma mensagem pode chegar mais de uma vez, por exemplo quando o seu servidor processa a requisição mas demora mais que o tempo limite para responder. Para não processar duas vezes, use a combinação de event com data.messageId como chave.
Não use X-Webhook-Delivery para descartar repetição: ele muda a cada tentativa de entrega da mesma mensagem.
1

Responda rápido

Responda 200 assim que receber e processe depois. Processamento demorado dentro da requisição aumenta a chance de nova tentativa.
2

Não dependa da ordem

Mensagens podem chegar fora da ordem em que aconteceram, inclusive por causa das novas tentativas.

Testar a configuração

O botão Enviar teste, no card do webhook, manda um message.received de exemplo só para aquele webhook, desde que ele esteja ativo. O messageId do teste começa com test-.

Limitações atuais

  • Status de entrega não é encaminhado. Os eventos de enviado, entregue, lido e falha não geram encaminhamento. Para saber se um envio foi entregue ou lido, use a consulta de status.
  • Reações não são encaminhadas, nem as recebidas nem as enviadas.
  • Mensagens recebidas só são encaminhadas no WhatsApp. Mensagens recebidas no Telegram, no chat do site ou por SMS não geram message.received.
  • Mensagens enviadas em outros canais (Telegram, chat do site e SMS por fluxo) só chegam a webhooks com Todas as contas em Conta WhatsApp.
  • Conteúdo que não vem no encaminhamento: a opção escolhida em botões e listas, as respostas de formulários, o conteúdo de localização, de cartão de contato e de pedido, e o cabeçalho e os botões de modelos.