“A mensagem saiu, mas não foi entregue.” É uma das reclamações mais comuns de quem opera WhatsApp em volume — e uma das que mais leva a conclusões erradas, porque o mesmo sintoma tem causas completamente diferentes.
Uma delas é especialmente irritante: às vezes a mensagem foi entregue, e o seu relatório é que não ficou sabendo.
Os cinco status
A plataforma trabalha com cinco:
| Status | O que significa |
|---|---|
sent |
a mensagem saiu com sucesso dos servidores da Meta |
delivered |
chegou ao aparelho do usuário |
read |
foi exibida numa conversa aberta no aparelho |
failed |
houve falha no envio ou na entrega |
played |
primeira vez que uma mensagem de voz é reproduzida |
Até aí, nada surpreendente. A surpresa está em como eles se encadeiam.
O atalho que estraga o seu relatório
A documentação descreve um caso específico: quando o usuário já está com a conversa aberta no momento em que a mensagem chega, ela é entregue e lida ao mesmo tempo. E aí, nas palavras da própria Meta, “the ‘delivered’ webhook is not sent because it’s implied that the message was delivered since it was read”.
O aviso de entrega não é enviado, porque a entrega está implícita na leitura.
A consequência é direta e afeta muita gente: se o seu relatório calcula a taxa de entrega somando apenas os eventos delivered, ele não conta as mensagens que foram lidas na hora. Ou seja, deixa de fora justamente as mais bem-sucedidas — as que chegaram a alguém que estava com a conversa aberta esperando.
A correção é simples: leitura implica entrega. Toda mensagem com read deve entrar na conta de entregues, mesmo que nunca tenha aparecido um delivered para ela.
Se a sua taxa de entrega parece estranhamente baixa em campanhas que geraram boa resposta, esta é a primeira coisa a conferir. É diferença de medição, não de resultado.
Quando ela realmente não chegou
Descontado o atalho acima, sobram as causas reais. Elas se dividem em duas famílias, e a diferença importa: uma tem código, a outra não.
Com código de erro
Quando a plataforma recusa, ela diz o porquê. Os dois mais frequentes na operação brasileira:
131047 — janela de 24 horas fechada. Você tentou enviar texto livre para alguém que não fala com você há mais de 24 horas. Fora da janela, só template aprovado. Não é punição, não é número queimado, é a regra funcionando — e explicamos o mecanismo em janela de 24 horas do WhatsApp.
131049 — limite de marketing daquele usuário. Existe um teto de quantas mensagens de marketing cada pessoa recebe, considerando todas as empresas, e ele é dinâmico. A sua mensagem pode ter esbarrado num limite que outras empresas ajudaram a encher. A documentação recomenda esperar pelo menos 24 horas antes de tentar reenviar. Detalhamos em erro 131049.
Há ainda o caso de a conta ter atingido o limite de envio do portfólio — quantos clientes você inicia conversa a cada 24 horas, assunto de quantas mensagens posso enviar por dia.
A lista completa de códigos está em códigos de erro da API do WhatsApp.
Sem código de erro
Aqui a mensagem simplesmente fica em sent, sem falha e sem entrega. Três explicações:
O aparelho está desligado ou sem internet. A entrega acontece quando ele voltar. Isso pode levar horas — e é o motivo mais comum de “não entregou” às 7h da manhã que vira “entregou” às 9h.
O número não tem WhatsApp. Acontece mais do que se imagina em bases antigas, com números que mudaram de dono ou nunca tiveram conta.
Você foi bloqueado. Não existe aviso de bloqueio, e é assim por design — o WhatsApp não conta a empresas quem as bloqueou. Um padrão de mensagens que ficam eternamente em sent para contatos que antes respondiam é o sinal indireto mais confiável.
Esse terceiro caso é o que merece atenção, porque bloqueio não afeta só aquela mensagem: é o principal insumo da qualidade do seu número.
A armadilha brasileira: o nono dígito
Esta merece seção própria, porque é específica do Brasil e causa um problema que parece bug da plataforma que você contratou.
A documentação da Meta registra que, para Brasil e México, o prefixo adicional do número pode ser modificado pela Cloud API — e afirma explicitamente que isso é comportamento padrão do sistema, não um defeito.
Traduzindo: o identificador do contato que a plataforma devolve pode não ser idêntico ao número que você enviou. É a velha história do nono dígito nos celulares brasileiros.
As consequências práticas, todas comuns:
- Contato duplicado. O mesmo cliente entra duas vezes, com e sem o 9, e o histórico fica partido entre os dois.
- A resposta não casa com o envio. Você dispara para um número e a resposta chega por um identificador diferente, sem vínculo com o registro original.
- Relatório furado. Enviados e respondidos não batem, porque são chaves diferentes.
- Integração com CRM quebrando. O sistema procura pelo número que cadastrou e não encontra.
A solução é técnica e fica do lado de quem opera a plataforma: normalizar o número antes de gravar e casar sempre pelo identificador que a Meta devolve, não pelo que foi digitado. É o tipo de coisa que uma plataforma madura já resolveu e que uma integração improvisada não trata — e o sintoma aparece como “o sistema está bagunçado”, quando é comportamento documentado.
Um roteiro de diagnóstico
Quando alguém disser que a mensagem não chegou, siga nesta ordem:
1. Existe código de falha? Se sim, o código é a resposta. Vá direto nele — 131047 é janela, 131049 é limite de marketing.
2. Existe read sem delivered? Então chegou, e o seu relatório é que está contando errado.
3. O contato já respondeu alguma vez? Se nunca respondeu e nada nunca é entregue, suspeite do número — pode não ter WhatsApp ou estar com o dígito trocado.
4. Ele respondia e parou de receber? Bloqueio é a hipótese mais provável. Não há confirmação possível, mas o padrão é claro.
5. É manhã cedo ou fim de semana? Aparelho desligado é banal e resolve sozinho. Vale esperar antes de investigar.
6. Só acontece em campanha grande? Então olhe limite de envio da conta e limite de marketing por usuário, nessa ordem.
O que fazer com isso
Conte leitura como entrega. É o ajuste de maior impacto e custa uma linha de cálculo.
Meça falha por código, não em bloco. “5% de falha” não diz nada. “3% por janela fechada e 2% por limite de marketing” diz o que corrigir.
Normalize os números na entrada. Antes de importar base, e sempre, casando pelo identificador que a plataforma devolve.
Limpe a base pelo comportamento. Contato que nunca entrega e nunca responde não é contato: é custo e risco de qualidade.
Não reenvie em rajada. Repetir para quem falhou por limite gera mais falha. A recomendação documentada é esperar pelo menos 24 horas.
Onde a gente entra
Repare que quase tudo aqui depende de ver o que aconteceu com cada mensagem — e é aí que a maioria das operações está cega. Sem o código de falha, “a campanha foi mal” vira palpite: troca-se o texto, o horário, a oferta, quando o problema era janela fechada ou número com o dígito errado.
Com o AtendeChat, sua operação roda na API Oficial com relatórios de entrega, histórico centralizado que junta o contato certo mesmo quando o identificador muda, fila com dono e funil para acompanhar quem respondeu. Somos parceiros oficiais da Meta e conduzimos com você a verificação de negócio, o registro do número e a aprovação dos templates.
Se você não consegue dizer hoje qual a sua taxa real de entrega e por qual motivo as mensagens falham, fale com a gente — normalmente o problema tem nome, código e correção.