Incoming messages arrive on theDocumentation Index
Fetch the complete documentation index at: https://zapo.to/llms.txt
Use this file to discover all available pages before exploring further.
message event as a WaIncomingMessageEvent.
The event payload
Key fields onWaIncomingMessageEvent:
| Field | Type | Description |
|---|---|---|
message | Proto.IMessage | The decrypted message content. |
chatJid | string | The conversation JID (group or 1:1). |
senderJid | string | Who sent it. |
stanzaId | string | The message id. |
timestampSeconds | number | Server timestamp (unix seconds). |
pushName | string | The sender’s display name. |
isGroupChat | boolean | True for group messages. |
isBroadcastChat | boolean | True for broadcast/status. |
isNewsletterChat | boolean | True for newsletter messages. |
isSender | boolean | True when the message was sent by this account. |
You also receive your own outgoing messages here (multi-device sync), flagged with
isSender: true. Filter them out if you only want inbound traffic.Extracting text
A message’s text lives in different fields depending on its type. A small helper covers the common cases:Identifying the message type
message is a protobuf union — inspect which field is set:
Sending receipts
client.message.sendReceipt marks messages as received/read/played. The easiest form takes the event(s) directly:
Addons
Addons are encrypted follow-ups attached to a message: reactions, poll votes, and comments. They surface as themessage_addon event.
Automatic decryption
Setaddons.autoDecrypt on the client and addons are decrypted and emitted for you:
Manual decryption
If you leaveautoDecrypt off, decrypt on demand from the originating message event:
Protocol messages
Edits, revokes, and other protocol-level updates arrive onmessage_protocol as WaIncomingProtocolMessageEvent (it extends the message event with a protocolMessage field):
Receipts (inbound)
When others read or play your messages, you receivereceipt events:
