Porque o número que a pessoa informou e o identificador que o WhatsApp devolve podem ser diferentes. A documentação da Meta avisa que, para Brasil e México, o prefixo extra do número pode ser modificado pela API, e que o wa_id pode não bater com o número enviado. No Brasil, o que vejo na prática é o nono dígito do celular sumir. Se o CRM guarda o número com o 9 e o WhatsApp guarda sem, qualquer busca por número igual falha. Conferi a documentação em 9 de outubro de 2026.
O que a Meta diz
Duas passagens da documentação importam aqui.
A primeira está na página de números de telefone. Depois de explicar como a Meta trata números sem o código do país, ela acrescenta uma nota: para Brasil e México, o prefixo extra do número pode ser modificado pela Cloud API, isso é comportamento padrão do sistema e não é considerado bug. A Meta não diz qual dígito é esse. A observação de que, no Brasil, é o 9, é minha.
A segunda está na resposta do envio de mensagem. A resposta traz dois campos, o input, que é o número que você mandou, e o wa_id, que é o identificador do usuário no WhatsApp. A documentação diz, de cada um, que pode não bater com o outro.
O que acontece na prática
Um exemplo com número inventado. Eu envio para 5587999990000, e a resposta devolve wa_id: 558799990000. O 9 depois do DDD sumiu.
Sobre quando o 9 some, a única regra que encontrei é de um fornecedor de API não oficial, a Green-API. Ela publica uma lista de DDDs em que o 9 existe (11 a 19, 21, 22, 24, 27 e 28) e diz que para os outros ele deve ser omitido. É a regra dela para montar o identificador da conversa, não da Meta, e eu não uso essa lista. Comparo os números por outro critério, explicado adiante.
Os efeitos que já vi:
- A mesma pessoa vira dois contatos. Quando o agente de IA começa a conversa, ele cria o contato no atendimento com o telefone do CRM, e o contato fica com o 9. Quando o cliente chama primeiro, o contato nasce com o
wa_id, sem o 9. - A busca erra. Numa busca pelo telefone com 9, a conversa existente não aparece. O lead parece "sem contato", e o fluxo quase reenviou um template para pessoas que já estavam em atendimento, num projeto em produção.
- O agente de IA perde a memória. Se a chave da conversa é o telefone, a mesma pessoa passa a ter duas conversas, e o agente não lembra do que foi dito na outra.
- O telefone do formulário também pode vir torto. Num caso parecido, um lead foi dado como ausente porque a busca usou o número digitado no formulário. Ele estava numa conversa ativa, com o número sem o 9.
Como cruzar sem errar
Em vez de comparar o número inteiro, eu comparo uma chave: o DDD mais os últimos 8 dígitos. O 9 extra cai fora da chave, e o código do país também.
function chave(telefone) {
let n = String(telefone).replace(/\D/g, '')
if (n.startsWith('55') && n.length > 11) n = n.slice(2)
const ddd = n.slice(0, 2)
return ddd + n.slice(2).slice(-8)
}
Com os dois números do exemplo, 5587999990000 e 558799990000, a função devolve 8799990000. A checagem de tamanho existe porque 55 também é um DDD, e um número sem código do país não pode perder esses dois dígitos.
Mais três regras:
- Guardar o
wa_idque volta na resposta do primeiro envio, ao lado do telefone informado. Ele é o identificador que o WhatsApp usa. - Buscar nas duas formas, com e sem o 9, antes de afirmar que um contato não existe.
- Montar a chave de conversa do agente de IA a partir da chave normalizada, e não do telefone cru.
O telefone pode nem vir
Há um motivo a mais para não depender só do telefone. Desde abril de 2026, a Meta inclui nos webhooks um identificador novo, o BSUID, no campo user_id. Ele é exclusivo de cada par entre o portfólio da empresa e o usuário, e é gerado de novo se o usuário trocar de número.
Quando o usuário ativa o nome de usuário do WhatsApp, o telefone dele não vem mais no webhook. Há exceções, segundo a documentação: se você enviou ou recebeu uma mensagem ou ligação desse número nos últimos 30 dias, ou se ele está na lista de contatos da sua conta. A página avisa que o conteúdo está sujeito a mudança, e li a versão de 9 de outubro de 2026.
Na prática, isso pede guardar o BSUID, o wa_id e o telefone informado, os três, e cruzar pelo que estiver disponível.
Atendimento no WhatsApp com IA: como eu monto e opero isso.
Fontes
- Meta: números de telefone da WhatsApp Business Platform (nota sobre Brasil e México)
- Meta: envio de mensagens e resposta com input e wa_id
- Meta: IDs de usuário no escopo da empresa (BSUID) e nomes de usuário
- Green-API: formato do número em cada país, regra do Brasil (fornecedor de API não oficial, não é a Meta)