Delivery format
WaGo sends webhooks asPOST requests using form data, not a raw JSON request body.
Every normal webhook contains:
| Form field | Meaning |
|---|---|
token | The WaGo session token that produced the event. Use it to map the event to one of your users or devices. |
jsonData | A JSON string. Parse this field to get the event payload. |
| Form field | Meaning |
|---|---|
file | The downloaded image, audio, video, document, or sticker file. |
Event envelope
MostjsonData values follow this shape:
type is the WaGo subscription/event name. event is the underlying WhatsApp event object, with fields such as Info, Message, MessageIDs, Timestamp, From, State, or call metadata depending on event type.
Some event types include extra WaGo fields next to event:
| Field | Added for | Meaning |
|---|---|---|
state | ReadReceipt, Presence | Normalized status such as Delivered, Read, ReadSelf, online, or offline. |
decryptVote | Message poll updates | Hex hash for a decrypted selected poll option. |
orderDetails | Message order messages | Order data fetched from WhatsApp when an order message contains orderID and token. |
Subscribe values
Subscriptions are set inPOST /session/connect or POST /session/pair.
| Subscribe value | Events included |
|---|---|
All | Sends all public webhook event types. |
Message | Inbound and outbound message events from chats. |
Newsletter | Message events whose source is a newsletter/channel. |
ReadReceipt | Delivered/read receipts for messages. |
Presence | Online/offline updates for users. |
ChatPresence | Typing and recording indicators inside a chat. |
HistorySync | Historical sync payloads from WhatsApp after login or reconnect. |
Call | Call offer, accept, terminate, relay latency, and WaGo managed-call state events. |
LoggedOut | Session was logged out or unpaired. |
All while integrating. In production, subscribe only to the event types your app needs.
Message event
UseMessage events to process inbound chat messages, outgoing messages from linked devices, media messages, poll updates, order messages, edits, and newsletter messages.
Example text message:
| Field | Meaning |
|---|---|
event.Info.ID | WhatsApp message ID. Store this for replies, reactions, edits, deletes, receipts, or audit logs. |
event.Info.Chat | Chat JID where the message belongs. |
event.Info.Sender | Sender JID. In groups this is the participant who sent it. |
event.Info.IsFromMe | true when the message was sent by the connected account or another linked device. |
event.Info.IsGroup | true for group or broadcast contexts. |
event.Message | The actual WhatsApp message payload. The inner field depends on message type. |
event.Message branches:
| Message field | Meaning |
|---|---|
conversation | Simple text message. |
extendedTextMessage | Text with context, preview, quote, or formatting data. |
imageMessage | Image metadata and caption. |
audioMessage | Audio metadata. |
videoMessage | Video metadata and caption. |
documentMessage | Document metadata, file name, and caption. |
stickerMessage | Sticker metadata. |
locationMessage | Latitude/longitude message. |
contactMessage | vCard contact message. |
pollUpdateMessage | Poll vote update. WaGo tries to decrypt the vote and adds decryptVote. |
orderMessage | Business order message. WaGo tries to fetch orderDetails. |
Media message with file upload
If the binary runs with webhook file forwarding enabled, WaGo downloads supported inbound media and sends the file with the webhook request. ExamplejsonData for image media:
file. Save it in your app before responding.
Supported auto-forwarded file types in WaGo:
| WhatsApp message | File behavior |
|---|---|
| Image | Downloaded and attached as file. |
| Audio | Downloaded and attached as file. |
| Document | Downloaded and attached as file. |
| Video | Downloaded and attached as file. |
| Sticker | Downloaded and attached as file. |
Read receipt event
UseReadReceipt events to update message delivery state in your app.
state values added by WaGo:
| State | Meaning |
|---|---|
Delivered | WhatsApp delivered the message. |
Read | Recipient read the message. |
ReadSelf | Another linked device for the same account read the message. |
Presence event
UsePresence events for online/offline user state.
state is offline, LastSeen may be zero if the contact hides last seen.
Chat presence event
UseChatPresence for typing and recording indicators.
| Field | Values |
|---|---|
State | composing, paused |
Media | text, audio |
Call event
WaGo sends two kinds of call-related webhooks:- Raw WhatsApp call events such as offer, accept, terminate, offer notice, and relay latency.
- Managed-call events from the WaGo call layer, such as
incoming,state,ready, andended.
callID with /call/answer, /call/reject, /call/hangup, /call/status, and live audio endpoints.
Logged out event
UseLoggedOut to detect that the WhatsApp session is no longer linked.
History sync event
HistorySync arrives when WhatsApp sends historical messages after login or reconnect.
HistorySync.
Account and app-state events
WaGo also forwards several account-state event types. These are useful for dashboards and sync jobs, but most apps can ignore them unless they need account administration details.| Type | What it means |
|---|---|
SyncComplete | Offline sync finished after reconnect. |
LabelEdit | A WhatsApp label was edited. |
LabelAssociationChat | A label was applied to or removed from a chat. |
LabelAssociationMessage | A label was applied to or removed from a message. |
ClientOutdated | WhatsApp says this client version is outdated. |
TemporaryBan | Account received a temporary ban event. |
TemporaryBanReason | Reason details for a temporary ban. |
JoinedGroup | The account joined or was added to a group. |
Blocklist | Blocked contacts changed. |
PrivacySettings | Privacy settings changed. |
ClearChat | A chat was cleared. |
Contact | Contact state changed. |
MarkChatAsRead | A chat read/unread state changed. |
UserAbout | A user’s about text changed. |
Receiver rules
Your webhook endpoint should:- Respond with 2xx quickly.
- Parse
jsonDataafter reading form data. - Store
token,type, message IDs, and timestamps. - Deduplicate by
event.Info.IDfor messages or bytype + message ID + timestampfor receipts. - Save uploaded
filebefore returning. - Handle fields you do not recognize. WhatsApp event objects can gain new fields.
- Avoid slow work inside the request. Queue follow-up jobs after storing the event.

