logo_smallAxellero.io

WhatsApp

Send and receive messages via WhatsApp Business API (360dialog)

WhatsApp Business API integration for automated messaging in Axellero Workflow Designer and Agentflow Designer via 360dialog.

Setup Required: See the Setup Guide for authentication configuration and connector setup.

Quick Navigation

Overview

The WhatsApp node enables automation of WhatsApp messaging through the 360dialog Business Solution Provider (BSP). Send text messages, media, interactive buttons, and list menus. Receive incoming messages and delivery status updates via webhooks.

Key Features:

  • Send Messages - Send text, images, and documents with optional captions to WhatsApp users
  • Templates - Send pre-approved message templates for business-initiated conversations outside the 24-hour window
  • Interactive - Quick reply buttons and list selection menus for conversational flows
  • Webhooks - Receive incoming messages and delivery status updates in real-time
  • Delivery Tracking - Monitor sent/delivered/read status with conversation pricing data

Connection Configuration

ParameterTypeRequiredDescription
apiKeyTEXTYes360dialog API key (D360-API-KEY)
baseUrlTEXTNoAPI base URL (default: https://waba-v2.360dialog.io)

Setup Instructions: See the Setup Guide for step-by-step instructions on getting your API key, creating connectors, and configuring triggers.

Available Operations

CategoryOperationDescription
MessagessendTextMessageSend a plain text message
MessagessendTemplateMessageSend a pre-approved message template
MessagessendImageMessageSend an image with optional caption
MessagessendDocumentMessageSend a document file
InteractivesendInteractiveButtonsSend message with quick reply buttons (max 3)
InteractivesendInteractiveListSend message with list selection menu
StatusmarkAsReadMark a received message as read

Operations Reference

Messages

sendTextMessage

Send a plain text message to a WhatsApp user.

Parameters:

ParameterTypeRequiredDescription
toTEXTYesRecipient phone number with country code (e.g., 14155238886)
bodyTEXTYesMessage text content (max 4096 characters)
previewUrlBOOLEANNoEnable URL preview in the message

Configuration Example:

{
  "to": "{{ctx.vars.customerPhone}}",
  "body": "Hello {{ctx.vars.customerName}}, your order #{{ctx.vars.orderId}} has been confirmed!",
  "previewUrl": false
}

Note: Connector options (apiKey, baseUrl) are automatically injected by the runtime. You only need to specify operation-specific parameters.

Success Response:

{
  "messageId": "wamid.HBgLNzcwODE2MDEwMjAVAgARGBI2NDVF...",
  "waId": "77081601020"
}

Error Response:

{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "to is required"
  }
}

sendTemplateMessage

Send a pre-approved message template. Templates are required for initiating conversations with users who haven't messaged you in the last 24 hours.

Parameters:

ParameterTypeRequiredDescription
toTEXTYesRecipient phone number with country code
templateNameTEXTYesName of the approved message template
languageCodeTEXTYesTemplate language code (e.g., en, es, pt_BR)
componentsOBJECTNoJSON array of template components with parameters

Configuration Example:

{
  "to": "{{ctx.vars.customerPhone}}",
  "templateName": "order_confirmation",
  "languageCode": "en",
  "components": [
    {
      "type": "body",
      "parameters": [
        { "type": "text", "text": "{{ctx.vars.customerName}}" },
        { "type": "text", "text": "{{ctx.vars.orderId}}" }
      ]
    }
  ]
}

Success Response:

{
  "messageId": "wamid.HBgLNzcwODE2MDEwMjAVAgARGBI...",
  "waId": "77081601020"
}

sendImageMessage

Send an image message with an optional caption.

Parameters:

ParameterTypeRequiredDescription
toTEXTYesRecipient phone number with country code
imageUrlTEXTYesPublic URL of the image (JPEG, PNG supported)
captionTEXTNoOptional caption for the image (max 1024 characters)

Configuration Example:

{
  "to": "{{ctx.vars.customerPhone}}",
  "imageUrl": "{{ctx.vars.productImageUrl}}",
  "caption": "Here's the product you requested!"
}

Success Response:

{
  "messageId": "wamid.HBgLNzcwODE2MDEwMjAVAgARGBI...",
  "waId": "77081601020"
}

sendDocumentMessage

Send a document file with optional caption and filename.

Parameters:

ParameterTypeRequiredDescription
toTEXTYesRecipient phone number with country code
documentUrlTEXTYesPublic URL of the document
filenameTEXTNoDocument filename to display
captionTEXTNoOptional caption for the document (max 1024 characters)

Configuration Example:

{
  "to": "{{ctx.vars.customerPhone}}",
  "documentUrl": "{{ctx.vars.invoiceUrl}}",
  "filename": "Invoice_{{ctx.vars.orderId}}.pdf",
  "caption": "Please find your invoice attached."
}

Success Response:

{
  "messageId": "wamid.HBgLNzcwODE2MDEwMjAVAgARGBI...",
  "waId": "77081601020"
}

Interactive

sendInteractiveButtons

Send a message with up to 3 quick reply buttons.

Parameters:

ParameterTypeRequiredDescription
toTEXTYesRecipient phone number with country code
bodyTextTEXTYesMessage body text
buttonsOBJECTYesJSON array of buttons [{id, title}] (max 3 buttons, title max 20 chars)
headerTextTEXTNoOptional header text
footerTextTEXTNoOptional footer text

Configuration Example:

{
  "to": "{{ctx.vars.customerPhone}}",
  "bodyText": "How would you rate our service?",
  "headerText": "Feedback Request",
  "footerText": "Thank you for your time",
  "buttons": [
    { "id": "rating_good", "title": "Good" },
    { "id": "rating_ok", "title": "OK" },
    { "id": "rating_bad", "title": "Bad" }
  ]
}

Success Response:

{
  "messageId": "wamid.HBgLNzcwODE2MDEwMjAVAgARGBI...",
  "waId": "77081601020"
}

sendInteractiveList

Send a message with a list selection menu.

Parameters:

ParameterTypeRequiredDescription
toTEXTYesRecipient phone number with country code
bodyTextTEXTYesMessage body text
buttonTextTEXTYesText for the list menu button
sectionsOBJECTYesJSON array of sections (max 10 sections, max 10 total rows)
headerTextTEXTNoOptional header text
footerTextTEXTNoOptional footer text

Configuration Example:

{
  "to": "{{ctx.vars.customerPhone}}",
  "bodyText": "Please select a category:",
  "buttonText": "View Options",
  "headerText": "Product Catalog",
  "footerText": "Tap to select",
  "sections": [
    {
      "title": "Electronics",
      "rows": [
        { "id": "cat_phones", "title": "Smartphones", "description": "Latest mobile devices" },
        { "id": "cat_laptops", "title": "Laptops", "description": "Portable computers" }
      ]
    },
    {
      "title": "Clothing",
      "rows": [
        { "id": "cat_shirts", "title": "Shirts", "description": "Casual & formal" },
        { "id": "cat_pants", "title": "Pants", "description": "Jeans & trousers" }
      ]
    }
  ]
}

Success Response:

{
  "messageId": "wamid.HBgLNzcwODE2MDEwMjAVAgARGBI...",
  "waId": "77081601020"
}

Status

markAsRead

Mark a received message as read, showing blue checkmarks to the sender.

Parameters:

ParameterTypeRequiredDescription
messageIdTEXTYesThe wamid of the message to mark as read

Configuration Example:

{
  "messageId": "{{ctx.steps.triggerStep.messageId}}"
}

Success Response:

{
  "success": true
}

JSON Structure Reference

Template Components (sendTemplateMessage)

The components parameter accepts an array of template component objects:

[
  {
    "type": "header",
    "parameters": [
      { "type": "image", "image": { "link": "https://example.com/image.jpg" } }
    ]
  },
  {
    "type": "body",
    "parameters": [
      { "type": "text", "text": "John Doe" },
      { "type": "text", "text": "ORD-12345" }
    ]
  },
  {
    "type": "button",
    "sub_type": "quick_reply",
    "index": 0,
    "parameters": [
      { "type": "text", "text": "confirm_123" }
    ]
  }
]
FieldTypeRequiredDescription
typestringYesComponent type: header, body, or button
parametersarrayNoArray of parameter objects
sub_typestringNoButton subtype: quick_reply or url
indexintegerNoButton index (0-based)

Parameter types: text, currency, date_time, image, document, video


Interactive Buttons (sendInteractiveButtons)

The buttons parameter accepts an array of 1-3 button objects:

[
  { "id": "btn_yes", "title": "Yes" },
  { "id": "btn_no", "title": "No" },
  { "id": "btn_maybe", "title": "Maybe" }
]
FieldTypeRequiredConstraintsDescription
idstringYesMax 256 charsUnique button identifier (returned in webhook)
titlestringYesMax 20 charsButton display text

Limits: Minimum 1 button, maximum 3 buttons.


Interactive List Sections (sendInteractiveList)

The sections parameter accepts an array of section objects:

[
  {
    "title": "Category A",
    "rows": [
      { "id": "item_1", "title": "Item 1", "description": "Description for item 1" },
      { "id": "item_2", "title": "Item 2" }
    ]
  },
  {
    "title": "Category B",
    "rows": [
      { "id": "item_3", "title": "Item 3", "description": "Description for item 3" }
    ]
  }
]

Section Object:

FieldTypeRequiredConstraintsDescription
titlestringYesMax 24 charsSection header text
rowsarrayYesMin 1 rowArray of row objects

Row Object:

FieldTypeRequiredConstraintsDescription
idstringYesMax 200 charsUnique row identifier (returned in webhook)
titlestringYesMax 24 charsRow display text
descriptionstringNoMax 72 charsOptional row description

Limits: Maximum 10 sections, maximum 10 total rows across all sections.


Triggers

New WhatsApp Message

Triggered when a message is received or message status changes via 360dialog webhook integration.

Supported Events

Event CodeEvent NameDescription
messageNew MessageTriggered when a new message is received (text, image, document, interactive reply)
statusMessage StatusTriggered when delivery status changes (sent, delivered, read, failed)

Configuration Options

OptionTypeRequiredDefaultDescription
eventsTEXTNomessageEvent types to trigger on (message, status)

Event Payload Examples

Message Event (message):

{
  "_eventType": "message",
  "_eventSubType": "text",
  "_wabaId": "123456789",
  "_phoneNumberId": "851682941371819",
  "_displayPhoneNumber": "551146733492",
  "contactName": "John Doe",
  "contactWaId": "14155238886",
  "messageId": "wamid.HBgLNzcwODE2MDEwMjAVAgARGBI...",
  "from": "14155238886",
  "timestamp": "1770066372",
  "timestampISO": "2026-02-02T21:26:12.000Z",
  "messageType": "text",
  "text": "Hello, I need help with my order"
}

Interactive Reply Event (button_reply):

{
  "_eventType": "message",
  "_eventSubType": "button_reply",
  "_wabaId": "123456789",
  "_phoneNumberId": "851682941371819",
  "_displayPhoneNumber": "551146733492",
  "contactName": "John Doe",
  "contactWaId": "14155238886",
  "messageId": "wamid.HBgLNzcwODE2MDEwMjAVAgARGBI...",
  "from": "14155238886",
  "timestamp": "1770066400",
  "timestampISO": "2026-02-02T21:26:40.000Z",
  "messageType": "interactive",
  "buttonReplyId": "rating_good",
  "buttonReplyTitle": "Good"
}

Status Event (status):

{
  "_eventType": "status",
  "_eventSubType": "delivered",
  "_wabaId": "123456789",
  "_phoneNumberId": "851682941371819",
  "_displayPhoneNumber": "551146733492",
  "statusId": "wamid.HBgLNzcwODE2MDEwMjAVAgARGBI...",
  "status": "delivered",
  "statusTimestamp": "1770066390",
  "statusTimestampISO": "2026-02-02T21:26:30.000Z",
  "recipientId": "14155238886",
  "conversationId": "4ab26f64cef2469d2014da9d0b14741f",
  "conversationOriginType": "user_initiated",
  "pricingBillable": true,
  "pricingModel": "CBP",
  "pricingCategory": "user_initiated"
}

Webhook Setup: See the Setup Guide for webhook configuration.


Use Cases

Customer Support with Ticket Creation

Automate customer support by creating Linear tickets from incoming WhatsApp messages and confirming back to the customer.

  1. WhatsApp Trigger: New message received (message event)
  2. Linear - createIssue: Create support ticket with message content
  3. WhatsApp - sendTextMessage: Confirm ticket creation to customer
  4. WhatsApp - markAsRead: Mark message as read

Order Notifications via Templates

Send automated order status updates using pre-approved templates on a schedule.

  1. Schedule Trigger: Run at specified intervals
  2. WhatsApp - sendTemplateMessage: Send order update template
  3. WhatsApp Trigger: Listen for status event to track delivery

Interactive Customer Surveys

Collect customer feedback using interactive button messages and process responses.

  1. WhatsApp - sendInteractiveButtons: Send rating buttons
  2. WhatsApp Trigger: button_reply received
  3. WhatsApp - sendTextMessage: Send thank you message

Appointment Reminders with Confirmation

Send appointment reminders with interactive confirmation options and handle responses.

  1. Schedule Trigger: Fire 24 hours before appointment
  2. WhatsApp - sendInteractiveButtons: Send Confirm/Reschedule/Cancel buttons
  3. WhatsApp Trigger: button_reply received
  4. WhatsApp - sendTextMessage: Confirm the action taken

Multi-Channel Notifications

Forward important Gmail messages to WhatsApp for immediate mobile attention.

  1. Gmail Trigger: New email received (label: Important)
  2. Gmail - getMessage: Fetch full email content
  3. WhatsApp - sendTextMessage: Forward summary to WhatsApp

Resources