Msgeradocs

Webhook events

Reference of the inbound-message payload Msgera POSTs to your webhook URL.

Msgera POSTs a JSON payload to your configured webhook URL whenever a WhatsApp message arrives at one of your connected devices. There is one payload shape — the normalized inbound message — and Msgera dispatches it to either your personal or group webhook URL depending on whether the message arrived in a 1:1 chat or a group chat. See Webhooks for how to configure these URLs.

Status events are websocket-only

Delivery, read, and failure updates for messages yousent are streamed over the dashboard's realtime socket — they are not delivered to your webhook URL. Use the dashboard or the messages listing endpoint to track outbound status.

Payload shape

{
  "eventId": "evt_01HXPNZ123",
  "sessionId": "sess_4f8c2a1e",
  "tenantId": "cust_4821",
  "from": "+201001234567",
  "fromName": "Zeyad",
  "text": "When will my order arrive?",
  "mediaType": null,
  "mediaUrl": null,
  "timestamp": "2026-04-12T10:11:23.000Z",
  "providerMessageId": "wamid.HBgM…",
  "isGroup": false,
  "groupId": null,
  "groupName": null
}

Fields

FieldTypeDescription
eventIdstringStable id for this delivery — useful for deduping retries.
sessionIdstringInternal session/device identifier the message arrived on.
tenantIdstringOptional pass-through tenant identifier if you set one.
fromstringSender phone number.
fromNamestringSender display name if WhatsApp exposed one.
textstringMessage text. Empty when the payload is media-only.
mediaTypestringimage | video | audio | document | sticker, or null for text.
mediaUrlstringURL to fetch the media binary. null for text-only messages.
timestampstringISO 8601 timestamp the provider stamped on the message.
providerMessageIdstringUnderlying WhatsApp message id.
isGroupbooleanTrue when the message came from a group chat.
groupIdstringProvider id of the group chat (only when isGroup is true).
groupNamestringDisplay name of the group chat.

Reactions and typing events are dropped

Empty inbound events (no text and no media) are filtered out server-side, so your endpoint will not see reaction/typing/system noise.