WhatsApp Trigger Node
Start a workflow whenever a WhatsApp message arrives — text, image, audio, video, location, button reply, order, and more. The foundation for building WhatsApp order bots, support automation, and OTP flows.
Prerequisites
- A Meta Business account with a WhatsApp Business API phone number
- A Meta App with the WhatsApp Business product added
- A permanent System User access token (not a temporary token)
- Meta App Review approval if you plan to message non-test users
For testing, you can use the sandbox numbers provided by Meta in the WhatsApp Business API setup wizard without going through App Review.
Setup
- Add a WhatsApp Trigger node to your workflow canvas
- Configure the Phone Number ID filter (leave blank to receive from all numbers)
- Select Message Types to listen to
- Toggle Ignore Own Messages to avoid loops
- Click Save — Nodebase generates a webhook URL and verify token
- Go to Meta Developer Portal → Your App → WhatsApp → Configuration → Webhooks
- Paste the webhook URL and the auto-generated verify token
- Subscribe to the messages field
- Click Verify and Save
The verify token is a UUID auto-generated by Nodebase. You can find it in the trigger node's configuration panel — copy it exactly as shown.
Configuration
| Field | Description |
|---|---|
| Phone Number ID | Filter events to a specific phone number ID. Leave blank to receive from all. |
| Message Types | Which message types trigger the workflow: text, image, audio, video, document, location, contacts, sticker, reaction, interactive, button, order, system. |
| Ignore Own Messages | Skip messages sent from your own phone number ID. Prevents trigger loops. |
Supported Message Types
| Type | Key Variables Available |
|---|---|
| text | {{whatsappTrigger.text}} |
| image / audio / video / document | {{whatsappTrigger.mediaId}}, {{whatsappTrigger.caption}}, {{whatsappTrigger.filename}} |
| location | {{whatsappTrigger.latitude}}, {{whatsappTrigger.longitude}}, {{whatsappTrigger.locationName}}, {{whatsappTrigger.address}} |
| interactive (button_reply) | {{whatsappTrigger.buttonId}}, {{whatsappTrigger.buttonTitle}} |
| interactive (list_reply) | {{whatsappTrigger.listId}}, {{whatsappTrigger.listTitle}} |
| reaction | {{whatsappTrigger.emoji}}, {{whatsappTrigger.reactedToMsgId}} |
| order | {{whatsappTrigger.raw}} (full order object) |
| status event | {{whatsappTrigger.status}} — "sent" / "delivered" / "read" / "failed" |
Output Variables
| Variable | Type | Description | Example |
|---|---|---|---|
{{whatsappTrigger.from}} | string | Sender phone number with country code | "919876543210" |
{{whatsappTrigger.senderName}} | string | Sender display name | "Rahul Sharma" |
{{whatsappTrigger.type}} | string | Message type | "text" |
{{whatsappTrigger.text}} | string | Message body (text messages only) | "Track my order" |
{{whatsappTrigger.mediaId}} | string | Media ID for image/audio/video/doc | "1234567890" |
{{whatsappTrigger.caption}} | string | Media caption | "Product photo" |
{{whatsappTrigger.filename}} | string | Document filename | "invoice.pdf" |
{{whatsappTrigger.latitude}} | string | Location latitude | "19.0760" |
{{whatsappTrigger.longitude}} | string | Location longitude | "72.8777" |
{{whatsappTrigger.locationName}} | string | Place name | "Bandra Station" |
{{whatsappTrigger.address}} | string | Location address | "Bandra West, Mumbai" |
{{whatsappTrigger.buttonId}} | string | Button reply ID | "track_order" |
{{whatsappTrigger.buttonTitle}} | string | Button label clicked | "Track Order" |
{{whatsappTrigger.listId}} | string | List reply row ID | "size_m" |
{{whatsappTrigger.listTitle}} | string | List reply row title | "Medium" |
{{whatsappTrigger.emoji}} | string | Reaction emoji | "❤️" |
{{whatsappTrigger.reactedToMsgId}} | string | ID of message that was reacted to | "wamid.abcd1234" |
{{whatsappTrigger.messageId}} | string | Unique WhatsApp message ID | "wamid.HBgNOTE..." |
{{whatsappTrigger.timestamp}} | string | Unix timestamp of message | "1712051400" |
{{whatsappTrigger.phoneNumberId}} | string | Your phone number ID | "107900725821067" |
{{whatsappTrigger.eventType}} | string | "message" or "message_status" | "message" |
{{whatsappTrigger.status}} | string | Delivery status (status events only) | "delivered" |
{{whatsappTrigger.raw}} | object | Full raw webhook payload | { ... } |
Complete Workflow Examples
WhatsApp Order Tracking Bot
Use case: Customer types an order ID on WhatsApp and receives live tracking status.
textWorkflow
WhatsApp Trigger (messageTypes: text)
→ Shiprocket — Track Shipment
awbCode: {{whatsappTrigger.text}}
→ WhatsApp — Send Message
to: {{whatsappTrigger.from}}
message: "Order status: {{shiprocket.current_status}}
Last update: {{shiprocket.tracking_data.etd}}"Customer Support — Image Complaint
Use case: When a customer sends a product image (e.g. damaged item), log it and notify the support team.
textWorkflow
WhatsApp Trigger (messageTypes: image)
→ Google Sheets — Append Row
spreadsheetId: {{env.COMPLAINTS_SHEET_ID}}
values:
- from: {{whatsappTrigger.from}}
- name: {{whatsappTrigger.senderName}}
- mediaId: {{whatsappTrigger.mediaId}}
- caption: {{whatsappTrigger.caption}}
- time: {{whatsappTrigger.timestamp}}
→ Slack — Send Message
channel: #support
text: "New complaint from {{whatsappTrigger.senderName}} ({{whatsappTrigger.from}}):
{{whatsappTrigger.caption}}"
→ WhatsApp — Send Message
to: {{whatsappTrigger.from}}
message: "Hi {{whatsappTrigger.senderName}}, we've received your complaint
and will respond within 24 hours."Common Issues & Solutions
| Issue | Cause | Solution |
|---|---|---|
| Webhook verification fails | Wrong verify token entered in Meta portal | Copy the verify token exactly from the Nodebase node panel — no extra spaces |
| No events received | messages field not subscribed in Meta portal | Go to App → WhatsApp → Configuration → Webhooks and subscribe to messages |
| {{whatsappTrigger.text}} is empty | Message is not a text type | Check {{whatsappTrigger.type}} first with If/Else before reading .text |
| Trigger fires for own sent messages | Ignore Own Messages is off | Enable Ignore Own Messages in the node configuration |
Related Nodes
- WhatsApp — send replies, templates, and media back to the user
- If / Else — branch on message type or content
- Shiprocket — look up order tracking from the message text
- MSG91 — send OTP or SMS in addition to WhatsApp
- AI Nodes — build intelligent chatbot responses using the message text