Status de entrega de mensagens
Esta documentação descreve como acompanhar o envio e a entrega das mensagens de template disparadas por um fluxo de conversa acionado através de um webhook de cliente.
O acompanhamento acontece em duas etapas:
Retorno (push), ao disparar o webhook, o integrador pode informar uma URL de callback. Cada mensagem de template enviada pelo fluxo acionado envia, para essa URL, o ID da mensagem no WhatsApp (
waId).Consulta (pull), com esse
waIdem mãos, o integrador consulta, a qualquer momento, o estado atual da mensagem pela API LiveChat 360, usando uma chave de API.
Sumário
Informando a URL de callback
O callback recebido
Consultando o status da mensagem
Vocabulário de status
Limitações
1. Informando a URL de callback
Basta incluir o campo messageIdCallbackUrl no primeiro nível do corpo enviado ao webhook do cliente:
POST https://hooks.atendeserver.com.br/{codigo-do-webhook}
Content-Type: application/json{
"liveChatClientWebhookVersion": "v2.0",
"messageIdCallbackUrl": "https://sua-empresa.com.br/hooks/waid",
"telefone": "5511999999999",
"nome": "Maria Silva"
}O campo é opcional. Regras:
deve ser uma string começando com
http://ouhttps://;valores ausentes ou malformados são simplesmente ignorados, o webhook continua funcionando normalmente, apenas sem o retorno;
só tem efeito quando o webhook está configurado para acionar um fluxo de conversa e esse fluxo envia uma mensagem de template.
2. O callback recebido
Para cada mensagem de template efetivamente enviada ao WhatsApp, disparamos:
Observações:
o disparo é fire-and-forget, com timeout de 10 segundos: se a sua URL estiver indisponível, a mensagem ao contato é enviada e registrada normalmente, apenas o retorno é perdido;
o callback é enviado sempre que o WhatsApp aceita a mensagem e nos devolve um
waId, este é justamente o propósito do retorno: mesmo que a mensagem falhe depois (o WhatsApp aceita e só mais tarde reporta falha, de forma assíncrona), você já terá owaIde poderá acompanhar essa mudança pela consulta de status (que passará a retornarfailed);o callback não é enviado apenas quando a mensagem nunca chega a ser aceita pelo WhatsApp, ou seja, quando nenhum
waIdé gerado (template rejeitado na hora do envio, contato sem número de telefone, ou outros erros similares);envios idênticos repetidos ao mesmo webhook dentro de 30 segundos são deduplicados, nesse caso o fluxo é acionado uma única vez e você recebe um único callback.
3. Consultando o status da mensagem
A consulta é um recurso da API LiveChat 360 e segue todas as suas regras, autenticação, escopos, envelopes de resposta, limites de requisição e registro de uso. Consulte a documentação da API para os detalhes gerais; o essencial está resumido aqui.
Pré-requisitos:
uma chave de API, criada no painel em API ▸ Chaves;
o escopo
messagescom a operaçãoreadhabilitado nessa chave.
Resposta 200 OK:
id
inteiro
Identificador da mensagem no nosso sistema
wa_id
string
ID da mensagem no WhatsApp (o mesmo recebido no callback)
status
string
Estado atual da mensagem (ver seção 4)
has_failed
booleano
true quando o WhatsApp reportou falha
error_message
string | null
Descrição do erro, no formato "<código> - <título>"
created_at
data ISO 8601
Momento em que a mensagem foi registrada
Outras respostas, sempre no envelope de erros da API ({ "errors": [{ "field"?, "detail" }] }):
400
waId não informado
401
Chave de API ausente, inválida, desativada ou revogada
403
A chave não possui o escopo messages (read)
404
Nenhuma mensagem encontrada para o waId informado
429
Limite de requisições excedido (120 por minuto por chave)
Se o
waIdcontiver caracteres especiais, envie-o codificado (encodeURIComponent).
Duas consequências práticas de a consulta ser um recurso da API:
A busca é restrita à sua conta. Um
waIdde outra conta retorna404, exatamente como umwaIdinexistente.Toda consulta é registrada. Método, rota, código de status, duração e origem aparecem no painel em API ▸ Requisições, junto com as demais chamadas da chave.
4. Vocabulário de status
pending
Mensagem registrada, ainda sem confirmação de envio do WhatsApp
sent
Enviada ao WhatsApp
delivered
Entregue no aparelho do contato
read
Lida pelo contato
failed
Falha reportada pelo WhatsApp, consulte error_message
O status evolui conforme o WhatsApp nos envia as confirmações, portanto é normal que uma consulta feita imediatamente após o callback retorne pending ou sent. Recomenda-se consultar novamente após alguns segundos.
5. Limitações
A URL de callback vale apenas para a execução do fluxo disparada por aquele webhook. Se o fluxo enviar outro template mais tarde, por exemplo após uma resposta do contato, esse envio não gera callback.
Somente mensagens do tipo template enviadas pelo fluxo acionado geram callback.
O callback continua sem exigir chave de API, ele é uma configuração do webhook de cliente, não uma chamada à API. A chave é necessária apenas na consulta de status (seção 3).
A consulta só encontra mensagens da sua própria conta.
Atualizado