chat.presence
EVENTO
chat.presencedesde M7envelope v1Presença no chat.
Quando é emitido
Contato digitando (composing), gravando áudio (recording) ou parando (paused) num chat, e contatos assinados com POST /presence/subscribe ficando online/offline. Opt-in: só chega com presence.online ligado nas settings (o WhatsApp só manda presença para contas online, e com isso o celular para de mostrar notificações) e só para webhooks/streams que pedem o tipo pelo nome (chat.presence ou chat.*; * não inclui). Repetições do mesmo estado em menos de 5 segundos são descartadas.
Campos de data
| Campo | Tipo | Descrição |
|---|---|---|
chat | string | JID do chat (ou do contato, em online/offline). |
sender | string | Quem digita (o participante, em grupos). |
is_group | boolean | Chat de grupo (opcional). |
state | string | composing, recording, paused, online ou offline. |
last_seen | string | Em offline: visto por último, se o contato mostra (opcional). |
O envelope (id, type, version, instance_id, timestamp,data) está em Visão geral. Campos novos podem ser adicionados emdata sem mudar a versão: ignore os que não conhecer.
Exemplos
{ "id": "evt_7e1b4d8a2c6f0935", "type": "chat.presence", "version": 1, "instance_id": "inst_7f3a9c2e5b1d4086", "timestamp": "2026-10-18T10:06:00.000Z", "data": { "chat": "5511999999999@s.whatsapp.net", "sender": "5511999999999@s.whatsapp.net", "state": "composing" }}Entrega e ordem
- Por webhook: pelo menos uma vez, com retry por até 24 horas. O mesmo evento pode chegar duas vezes: deduplique por
X-LiteZap-Event-Id. Veja Entrega e retentativas. - A ordem entre eventos não é garantida (retentativas reordenam): use
timestamp. - Por SSE: ao vivo, sem replay. Veja Tempo real com SSE.
- Para assinar só este tipo:
"events": ["chat.presence"]no webhook, ou?types=chat.presenceno SSE.
Relacionados: message.received
Equivalente na Z-API: Status do chat.

