Tipos de mensagem WhatsApp não suportados
WhatsApp transporta conteúdo que o API do Bird não modela, de pedidos de catálogo a avisos do sistema sobre a conversa. Em vez de descartar a mensagem ou entregá-la vazia, Bird a registra com um braço unsupported que nomeia o tipo de conteúdo WhatsApp. A mensagem fica visível no log do WhatsApp e chega ao seu webhook como qualquer outra.
O que uma mensagem não suportada carrega
unsupported.type carrega a string de tipo própria do WhatsApp para o que chegou, e esse é o único conteúdo da mensagem. O envelope ao redor permanece inalterado:
Exemplo de código
{
"id": "wam_01kyh0w4ujnz2x8p1s5dci0vlg",
"direction": "inbound",
"from": { "phone_number": "+14155550100" },
"to": { "phone_number": "+13124495569" },
"status": "received",
"unsupported": { "type": "order" },
"created_at": "2026-08-25T09:31:20Z"
}| type | O que o contato enviou |
|---|---|
| interactive | Conteúdo interativo cuja forma de resposta o API não conseguiu ler como um toque |
| button | Um toque em botão que o API não conseguiu ler como uma resposta |
| order | Um carrinho ou pedido feito a partir de um catálogo de produtos |
| system | Um aviso do sistema sobre a conversa, como um contato alterando seu número de telefone |
| unsupported | O tipo unsupported próprio do WhatsApp, para uma mensagem que seus próprios clientes não conseguem renderizar |
unsupported não é um valor temporário nessa tabela. WhatsApp reporta um tipo de conteúdo próprio com esse nome quando um de seus clientes envia algo que os outros não conseguem exibir, e isso chega como esse valor.
A lista é aberta. WhatsApp adiciona tipos de conteúdo ao longo do tempo, então trate um type que você não reconhece como um tipo futuro, e não como um erro: registre-o e siga em frente em vez de falhar a leitura.
O payload do webhook
whatsapp.received dispara para uma mensagem não suportada também, carregando o mesmo braço:
Exemplo de código
{
"type": "whatsapp.received",
"timestamp": "2026-08-25T09:31:20.774Z",
"data": {
"whatsapp_id": "wam_01kyh0w4ujnz2x8p1s5dci0vlg",
"workspace_id": "ws_01ky7m235keycbnwyajabe1a6b",
"direction": "inbound",
"from": { "phone_number": "+14155550100" },
"to": { "phone_number": "+13124495569" },
"unsupported": { "type": "order" },
"tags": null,
"metadata": null
}
}Um endpoint que faz switch no campo de conteúdo encontrado deve ter um branch padrão, e esse braço é o que cai nele. Confirme o webhook com um 2xx de qualquer forma: tentar novamente não muda nada, já que o conteúdo não vai se tornar modelado entre as tentativas.
O que uma mensagem não suportada ainda faz
A mensagem conta como uma mensagem recebida em todos os aspectos que não dependem do seu conteúdo:
- Ela reinicia a janela de atendimento ao cliente para 24 horas completas, então um pedido feito a partir do seu catálogo reabre respostas de formato livre.
- Ela aparece na lista de mensagens e no log do WhatsApp, com seu tipo exibido em vez de uma linha em branco.
- Ela nunca é cobrada. Nenhuma mensagem recebida tem custo.
O que você não pode fazer é ler o conteúdo. Um pedido não traz o carrinho, e um aviso do sistema não diz o que mudou. Quando esse detalhe importa, pergunte ao contato por mensagem, ou use um botão de resposta ou menu de lista para que a resposta chegue em um braço modelado no qual você possa agir.
Pontos de atenção
- Não trate o braço como um erro. A mensagem foi recebida com sucesso; apenas seu conteúdo não é modelado. Gerar alerta sobre isso significa gerar alerta toda vez que um contato faz um pedido.
- Um tipo system pode significar que o contato mudou de número. A Meta documenta uma mudança de número de telefone como um dos eventos que gera uma mensagem de sistema, e ela regenera o ID de usuário com escopo de negócio do contato ao mesmo tempo. O braço nomeia o tipo e nada mais, então trate-o como um sinal para restabelecer com quem você está falando.
- Uma reação com emoji não é uma mensagem não suportada. Ela não é uma mensagem recebida, então não chega a nenhum webhook e não aparece em nenhuma lista de mensagens: cada alteração é registrada no log de reações da própria mensagem reagida, coberto em eventos do WhatsApp.
- Armazene o tipo literalmente. Um tipo futuro se resolve em um nome para o qual você ainda não tem código, e manter o valor bruto é o que permite encontrar essas mensagens quando tiver.
Próximos passos
- Como o recebimento funciona: o envelope de entrada, busca de mídia e o webhook whatsapp.received
- Recebendo respostas interativas: os toques que chegam como conteúdo modelado
- Log do WhatsApp: navegando pela conversa no dashboard
- Eventos do WhatsApp: a lista completa de eventos, via API ou webhooks
Recursos relacionados
Continue com a documentação, guias e exemplos sobre este tópico. Os recursos estão em inglês.
Assista ao guiaConnecting WhatsApp to Bird: from buying a number to a live channelEntenda o conceitoWhat is the 24-hour customer service window on WhatsApp?Use a ferramentaWhatsApp message builderExplore a funcionalidadeWhatsApp
Experimente na prática e obtenha um resumo de implementação