Eventos
A lista completa, com o que cada um carrega.
Cada endpoint assina os eventos que quer. Assinar demais custa entrega e ruído; assinar de menos custa o fato que você precisava.
A list
Mensagens
message.received- Uma mensagem do contato chegou por qualquer canal.
message.sent- Uma mensagem sua foi aceita pelo canal.
message.delivered- O canal confirmou a entrega no aparelho do contato.
message.read- O contato leu a mensagem — só nos canais que reportam leitura.
message.failed- O canal recusou a mensagem, com o motivo em `data.message.error`.
Conversas
conversation.created- Uma conversa foi aberta.
conversation.updated- Status, canal ou dados da conversa mudaram.
conversation.assigned- A conversa passou a ter (ou deixou de ter) responsável.
conversation.closed- A conversa foi encerrada.
conversation.reopened- Uma conversa encerrada voltou a ficar aberta.
Contatos
contact.created- Um contato foi criado, pela API ou por um canal.
contact.updated- Os dados de um contato mudaram.
Etiquetas
tag.added- Uma etiqueta foi aplicada a um contato ou conversa.
tag.removed- Uma etiqueta foi retirada.
O que cada família carrega
message.* data.message, data.conversation
conversation.* data.conversation
contact.* data.contact
tag.* data.contact, data.tag
data é um objeto de chaves nomeadas, e não o recurso solto. É o que permite um evento carregar mais de uma coisa — tag.added traz a tag e o contato — sem mudar a forma depois.
`message.sent` chega quando o canal aceita — não no POST
Uma mensagem de WhatsApp nasce
queued. O evento message.sent sai quando o canal confirma o recebimento, e não no instante da sua chamada. Anunciar antes seria prometer o que ainda não aconteceu.Ordem não é garantida
Dois eventos da mesma conversa podem chegar fora de ordem — reentregas e concorrência de rede fazem isso. Use created_at quando a sequência importar, e não a ordem de chegada.
Continue em Assinaturas e Reentregas.
Escrevemos sobre operação de atendimento, canais e IA no blog da Amivu.