WhatsApp is a globally popular messaging platform that enables secure, reliable communication between individuals and businesses.
WhatsApp Business API provides organizations with powerful capabilities to:
- Engage customers: Send personalized messages, notifications, and updates directly to customers' preferred messaging app
- Automate conversations: Create interactive chatbots and automated response systems for common inquiries
- Enhance support: Provide real-time customer service through a familiar interface with rich media support
- Drive conversions: Facilitate transactions and follow-ups with customers in a secure, compliant environment
In AACFlow.io, the WhatsApp integration enables your agents to leverage these messaging capabilities as part of their workflows. This creates opportunities for sophisticated customer engagement scenarios like appointment reminders, verification codes, alerts, and interactive conversations. The integration bridges the gap between your AI workflows and customer communication channels, allowing your agents to deliver timely, relevant information directly to users' mobile devices. By connecting AACFlow.io with WhatsApp, you can build intelligent agents that engage customers through their preferred messaging platform, enhancing user experience while automating routine messaging tasks.
Integrate WhatsApp into the workflow. Send text, template, media, and interactive messages, react to messages, and mark messages as read through the WhatsApp Cloud API.
Send a text message through the WhatsApp Cloud API.
| Parameter | Type | Required | Description |
|---|
phoneNumber | string | Yes | Recipient phone number with country code (e.g., +14155552671) |
message | string | Yes | Plain text message content to send |
phoneNumberId | string | Yes | WhatsApp Business Phone Number ID (from Meta Business Suite) |
previewUrl | boolean | No | Whether WhatsApp should try to render a link preview for the first URL in the message |
| Parameter | Type | Description |
|---|
success | boolean | WhatsApp message send success status |
messageId | string | Unique WhatsApp message identifier |
messageStatus | string | Initial delivery state returned by the API |
messagingProduct | string | Messaging product returned by the API |
inputPhoneNumber | string | Recipient phone number echoed back by WhatsApp |
whatsappUserId | string | WhatsApp user ID resolved for the recipient |
contacts | array | Recipient contact records returned by WhatsApp |
↳ input | string | Input phone number sent to the API |
↳ wa_id | string | WhatsApp user ID associated with the recipient |
Send a pre-approved WhatsApp template message with a language and optional variable components.
| Parameter | Type | Required | Description |
|---|
phoneNumber | string | Yes | Recipient phone number with country code (e.g., +14155552671) |
templateName | string | Yes | Name of the approved message template |
languageCode | string | Yes | Template language/locale code (e.g., en_US) |
components | json | No | Template components array with parameters for header/body/button variables, per the WhatsApp template message schema |
phoneNumberId | string | Yes | WhatsApp Business Phone Number ID (from Meta Business Suite) |
| Parameter | Type | Description |
|---|
success | boolean | Send success status |
messageId | string | WhatsApp message identifier |
messageStatus | string | Initial delivery state returned by the send API, such as accepted or paused |
messagingProduct | string | Messaging product returned by the send API |
inputPhoneNumber | string | Recipient phone number echoed by the send API |
whatsappUserId | string | Resolved WhatsApp user ID for the recipient |
contacts | array | Recipient contacts returned by the send API (each item includes input and wa_id) |
eventType | string | Webhook classification such as incoming_message, message_status, or mixed |
from | string | Sender phone number from the first incoming message |
recipientId | string | Recipient phone number from the first status update in the batch |
phoneNumberId | string | Business phone number ID from the first message or status item in the batch |
displayPhoneNumber | string | Business display phone number from the first message or status item in the batch |
text | string | Text body from the first incoming text message |
timestamp | string | Timestamp from the first message or status item in the batch |
messageType | string | Type of the first incoming message in the batch, such as text, image, or system |
status | string | First outgoing message status in the batch, such as sent, delivered, or read |
contact | json | First sender contact in the webhook batch (wa_id, profile.name) |
messages | json | All incoming message objects from the webhook batch, flattened across entries/changes |
statuses | json | All message status objects from the webhook batch, flattened across entries/changes |
webhookContacts | json | All sender contact profiles from the webhook batch |
conversation | json | Conversation metadata from the first status update in the batch (id, expiration_timestamp, origin.type) |
pricing | json | Pricing metadata from the first status update in the batch (billable, pricing_model, category) |
raw | json | Full structured WhatsApp webhook payload |
error | string | Error information if sending fails |
Send an image, document, video, or audio message via a public link or an uploaded media ID.
| Parameter | Type | Required | Description |
|---|
phoneNumber | string | Yes | Recipient phone number with country code (e.g., +14155552671) |
mediaType | string | Yes | Type of media to send: image, document, video, or audio |
mediaLink | string | No | Public HTTPS URL of the media (provide this or mediaId) |
mediaId | string | No | ID of media previously uploaded to WhatsApp (provide this or mediaLink) |
caption | string | No | Optional caption for image, video, or document media |
filename | string | No | Optional file name shown to the recipient for document media |
phoneNumberId | string | Yes | WhatsApp Business Phone Number ID (from Meta Business Suite) |
| Parameter | Type | Description |
|---|
success | boolean | Send success status |
messageId | string | WhatsApp message identifier |
messageStatus | string | Initial delivery state returned by the send API, such as accepted or paused |
messagingProduct | string | Messaging product returned by the send API |
inputPhoneNumber | string | Recipient phone number echoed by the send API |
whatsappUserId | string | Resolved WhatsApp user ID for the recipient |
contacts | array | Recipient contacts returned by the send API (each item includes input and wa_id) |
eventType | string | Webhook classification such as incoming_message, message_status, or mixed |
from | string | Sender phone number from the first incoming message |
recipientId | string | Recipient phone number from the first status update in the batch |
phoneNumberId | string | Business phone number ID from the first message or status item in the batch |
displayPhoneNumber | string | Business display phone number from the first message or status item in the batch |
text | string | Text body from the first incoming text message |
timestamp | string | Timestamp from the first message or status item in the batch |
messageType | string | Type of the first incoming message in the batch, such as text, image, or system |
status | string | First outgoing message status in the batch, such as sent, delivered, or read |
contact | json | First sender contact in the webhook batch (wa_id, profile.name) |
messages | json | All incoming message objects from the webhook batch, flattened across entries/changes |
statuses | json | All message status objects from the webhook batch, flattened across entries/changes |
webhookContacts | json | All sender contact profiles from the webhook batch |
conversation | json | Conversation metadata from the first status update in the batch (id, expiration_timestamp, origin.type) |
pricing | json | Pricing metadata from the first status update in the batch (billable, pricing_model, category) |
raw | json | Full structured WhatsApp webhook payload |
error | string | Error information if sending fails |
Send an interactive WhatsApp message with reply buttons or a selectable list.
| Parameter | Type | Required | Description |
|---|
phoneNumber | string | Yes | Recipient phone number with country code (e.g., +14155552671) |
bodyText | string | Yes | Main body text of the interactive message |
headerText | string | No | Optional plain-text header shown above the body |
footerText | string | No | Optional footer text shown below the body |
buttons | json | No | Reply buttons array (max 3), each item: { "type": "reply", "reply": { "id": "...", "title": "..." } }. Provide buttons or sections. |
listButtonText | string | No | Label for the menu button that opens the list (required when sending a list) |
sections | json | No | List sections array, each item: { "title": "...", "rows": [{ "id": "...", "title": "...", "description": "..." }] }. Provide sections or buttons. |
phoneNumberId | string | Yes | WhatsApp Business Phone Number ID (from Meta Business Suite) |
| Parameter | Type | Description |
|---|
success | boolean | Send success status |
messageId | string | WhatsApp message identifier |
messageStatus | string | Initial delivery state returned by the send API, such as accepted or paused |
messagingProduct | string | Messaging product returned by the send API |
inputPhoneNumber | string | Recipient phone number echoed by the send API |
whatsappUserId | string | Resolved WhatsApp user ID for the recipient |
contacts | array | Recipient contacts returned by the send API (each item includes input and wa_id) |
eventType | string | Webhook classification such as incoming_message, message_status, or mixed |
from | string | Sender phone number from the first incoming message |
recipientId | string | Recipient phone number from the first status update in the batch |
phoneNumberId | string | Business phone number ID from the first message or status item in the batch |
displayPhoneNumber | string | Business display phone number from the first message or status item in the batch |
text | string | Text body from the first incoming text message |
timestamp | string | Timestamp from the first message or status item in the batch |
messageType | string | Type of the first incoming message in the batch, such as text, image, or system |
status | string | First outgoing message status in the batch, such as sent, delivered, or read |
contact | json | First sender contact in the webhook batch (wa_id, profile.name) |
messages | json | All incoming message objects from the webhook batch, flattened across entries/changes |
statuses | json | All message status objects from the webhook batch, flattened across entries/changes |
webhookContacts | json | All sender contact profiles from the webhook batch |
conversation | json | Conversation metadata from the first status update in the batch (id, expiration_timestamp, origin.type) |
pricing | json | Pricing metadata from the first status update in the batch (billable, pricing_model, category) |
raw | json | Full structured WhatsApp webhook payload |
error | string | Error information if sending fails |
React to a WhatsApp message with an emoji. Send an empty emoji to remove an existing reaction.
| Parameter | Type | Required | Description |
|---|
phoneNumber | string | Yes | Recipient phone number with country code (e.g., +14155552671) |
messageId | string | Yes | ID (wamid) of the message to react to |
emoji | string | No | Emoji to react with. Leave empty to remove an existing reaction. |
phoneNumberId | string | Yes | WhatsApp Business Phone Number ID (from Meta Business Suite) |
| Parameter | Type | Description |
|---|
success | boolean | Send success status |
messageId | string | WhatsApp message identifier |
messageStatus | string | Initial delivery state returned by the send API, such as accepted or paused |
messagingProduct | string | Messaging product returned by the send API |
inputPhoneNumber | string | Recipient phone number echoed by the send API |
whatsappUserId | string | Resolved WhatsApp user ID for the recipient |
contacts | array | Recipient contacts returned by the send API (each item includes input and wa_id) |
eventType | string | Webhook classification such as incoming_message, message_status, or mixed |
from | string | Sender phone number from the first incoming message |
recipientId | string | Recipient phone number from the first status update in the batch |
phoneNumberId | string | Business phone number ID from the first message or status item in the batch |
displayPhoneNumber | string | Business display phone number from the first message or status item in the batch |
text | string | Text body from the first incoming text message |
timestamp | string | Timestamp from the first message or status item in the batch |
messageType | string | Type of the first incoming message in the batch, such as text, image, or system |
status | string | First outgoing message status in the batch, such as sent, delivered, or read |
contact | json | First sender contact in the webhook batch (wa_id, profile.name) |
messages | json | All incoming message objects from the webhook batch, flattened across entries/changes |
statuses | json | All message status objects from the webhook batch, flattened across entries/changes |
webhookContacts | json | All sender contact profiles from the webhook batch |
conversation | json | Conversation metadata from the first status update in the batch (id, expiration_timestamp, origin.type) |
pricing | json | Pricing metadata from the first status update in the batch (billable, pricing_model, category) |
raw | json | Full structured WhatsApp webhook payload |
error | string | Error information if sending fails |
Mark a received WhatsApp message as read so the sender sees blue checkmarks.
| Parameter | Type | Required | Description |
|---|
messageId | string | Yes | ID (wamid) of the incoming message to mark as read |
phoneNumberId | string | Yes | WhatsApp Business Phone Number ID (from Meta Business Suite) |
| Parameter | Type | Description |
|---|
success | boolean | Whether the message was successfully marked as read |
A Trigger is a block that starts a workflow when an event happens in this service.
Trigger workflow from WhatsApp incoming messages and message status webhooks
| Parameter | Type | Required | Description |
|---|
verificationToken | string | Yes | Enter any secure token here. You |
appSecret | string | Yes | Required for WhatsApp POST signature verification. AACFlow.io uses it to validate the X-Hub-Signature-256 header on every webhook delivery. |
| Parameter | Type | Description |
|---|
eventType | string | Webhook classification such as incoming_message, message_status, or mixed |
messageId | string | First WhatsApp message identifier (wamid) found in the webhook batch |
from | string | Sender phone number from the first incoming message in the batch |
recipientId | string | Recipient phone number from the first status update in the batch |
phoneNumberId | string | Business phone number ID from the first message or status item in the batch |
displayPhoneNumber | string | Business display phone number from the first message or status item in the batch |
text | string | Text body from the first incoming text message in the batch |
timestamp | string | Timestamp from the first message or status item in the batch |
messageType | string | Type of the first incoming message in the batch (text, image, system, etc.) |
status | string | First outgoing message status in the batch, such as sent, delivered, read, or failed |
contact | json | First sender contact in the batch (wa_id, profile.name) |
webhookContacts | json | All sender contact profiles from the webhook batch |
messages | json | All incoming message objects from the webhook batch, flattened across entries/changes |
statuses | json | All message status objects from the webhook batch, flattened across entries/changes |
conversation | json | Conversation metadata from the first status update in the batch (id, expiration_timestamp, origin.type) |
pricing | json | Pricing metadata from the first status update in the batch (billable, pricing_model, category) |
raw | json | Complete structured webhook payload from WhatsApp |