Por que o contato do WhatsApp não bate com o CRM? O caso do nono dígito

A Meta pode devolver o número do cliente sem o 9 do celular. O mesmo contato passa a existir duas vezes e a busca no CRM falha. Como cruzar sem errar.

Pedro Henrique Quadroatualizado em 4 min de leitura

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:

  1. Guardar o wa_id que volta na resposta do primeiro envio, ao lado do telefone informado. Ele é o identificador que o WhatsApp usa.
  2. Buscar nas duas formas, com e sem o 9, antes de afirmar que um contato não existe.
  3. 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

  1. Meta: números de telefone da WhatsApp Business Platform (nota sobre Brasil e México)
  2. Meta: envio de mensagens e resposta com input e wa_id
  3. Meta: IDs de usuário no escopo da empresa (BSUID) e nomes de usuário
  4. Green-API: formato do número em cada país, regra do Brasil (fornecedor de API não oficial, não é a Meta)
Pedro Henrique QuadroEngenheiro de software e IA. Constrói aplicativos, sistemas, painéis e agentes de IA em produção, e tem código aceito no Supabase, no Kestra e no QuestDB.

Continue lendo