WhatsApp Message Received
Run on inbound WhatsApp via a Twilio or Exotel connected service.
Types
twilio.whatsapp.on-whatsapp-messageexotel.whatsapp.on-whatsapp-messageListed only when a matching connected service is enabled.
WhatsApp Message Received runs when an inbound WhatsApp message arrives on the configured sender.
Payload
| Field | Type | Description |
|---|---|---|
serviceId | string | Connected Twilio or Exotel service with WhatsApp enabled |
phoneNumber | string | WhatsApp sender to receive on |
Trigger data
Available as args.*.
Twilio:
| Field | Type | Description |
|---|---|---|
message.messageSid | string | Message id |
message.from | string | Sender |
message.to | string | Recipient |
message.profileName | string | Profile name |
message.body | string | Text body |
message.messageType | string | Message type |
message.numMedia | number | Media count |
message.media[].url | string | Media URL |
message.media[].contentType | string | Media content type |
raw | object | Original Twilio payload |
Exotel:
| Field | Type | Description |
|---|---|---|
message.messageSid | string | Message id |
message.from | string | Sender |
message.to | string | Recipient |
message.body | string | Text body |
message.type | string | Message type |
raw | object | Original Exotel payload |
Use case
- Log inbound WhatsApp to a table, keyword-route, or send a template reply — without a continuous chat session.
- After-hours auto-reply or ticket-create when you do not want the WhatsApp Chat default agent.
- Same Twilio or Exotel sender as the rest of your WhatsApp setup; pick the number in payload.
- Use the channel when customers should converse with an agent; this trigger is for fire-and-forget automation on the message.
Channels vs handlers
WhatsApp handlers share identifiers with WhatsApp Chat of the same kind.
If an active channel uses the same identifier, inbound traffic goes to the channel. The event handler does not run for that identifier until you disable or change the channel, or change the handler identifier.