Skip to main content

Overview

The Whaapy n8n node allows you to integrate WhatsApp automation into your n8n workflows. You can send messages, manage conversations, control AI agents, and receive webhook events.

Installation

From npm

  1. Open your n8n instance
  2. Go to SettingsCommunity Nodes
  3. Click Install a community node
  4. Enter n8n-nodes-whaapy
  5. Click Install

Manual Installation

# Navigate to your n8n custom nodes directory
cd ~/.n8n/custom

# Install the package
npm install n8n-nodes-whaapy

# Restart n8n

Authentication

  1. Go to app.whaapy.comSettingsAPI Keys
  2. Create a new API key
  3. In n8n, go to CredentialsNew Credential
  4. Search for Whaapy API
  5. Enter your API key (starts with wha_)

Available Operations

Message

OperationDescription
SendSend a WhatsApp message (text, image, video, audio, document, template, interactive, location, contacts, sticker, reaction)
RetryRetry a failed message

Media

OperationDescription
UploadUpload media to WhatsApp CDN

Conversation

OperationDescription
ListGet all conversations
GetGet a specific conversation
Get by PhoneFind conversation by phone number
Get MessagesGet message history
CloseClose a conversation
ArchiveArchive a conversation
Mark ReadMark as read
Set AIEnable/disable AI for conversation
Pause AIPause AI temporarily
AI SuggestGet AI suggestion without sending

Agent

OperationDescription
ToggleEnable/disable AI globally
PausePause AI globally for X minutes

Template

OperationDescription
ListGet all WhatsApp templates
GetGet a specific template
Get VariablesGet available template variables
SyncSync templates from Meta

Contact

OperationDescription
ListGet all contacts
GetGet a specific contact
CreateCreate a new contact
UpdateUpdate a contact
DeleteDelete a contact
SearchAdvanced search
BulkBulk operations
MergeMerge two contacts
Get TagsGet all tags
Get FieldsGet custom fields

Funnel

OperationDescription
List StagesGet all funnel stages
Get StageGet a specific stage
Create StageCreate a new stage
Update StageUpdate a stage
Delete StageDelete a stage
Reorder StagesReorder stages
Move ContactMove contact to stage

Trigger Node

The Whaapy Trigger node listens for webhook events:
EventDescription
message.receivedIncoming message
message.sentMessage sent
message.deliveredMessage delivered
message.readMessage read
message.failedMessage failed
conversation.createdNew conversation
conversation.updatedConversation updated
conversation.handoffHandoff to human
*All events
This event fires only when a new conversation is created—i.e., when a contact writes for the first time, or when you send the first message to a new number via the API. To test it, use a WhatsApp number that has never initiated a conversation with your business. If the contact already has a chat history, you won’t see this event; use message.received instead for per-message triggers.

Example Workflows

Send Welcome Message

Webhook (receive lead) → Whaapy (Send template) → Slack (Notify team)

Auto-Response with AI Control

Whaapy Trigger (message.received) → IF (contains "human") → Whaapy (Pause AI) → Slack (Assign agent)

CRM Integration

Whaapy Trigger (message.received) → HTTP Request (CRM API) → Whaapy (Update contact tags)

Funnel Automation

Whaapy Trigger (conversation.created) → Whaapy (Move Contact to stage) → Whaapy (Send welcome template)

Tips

Pausing AI for Manual Intervention

When sending a manual message, use the Pause AI option to prevent the AI from responding:
{
  "to": "+5215512345678",
  "type": "text",
  "content": "I'll handle this personally",
  "additionalFields": {
    "pauseAi": true,
    "pauseDuration": 30
  }
}

Using Templates

Templates are required for messaging outside the 24-hour window. Get your templates first:
  1. Use Template → List to see available templates
  2. Use the template name in Message → Send
{
  "to": "+5215512345678",
  "messageType": "template",
  "templateName": "welcome_message",
  "templateParameters": ["John", "Acme Corp"]
}
By default, Whaapy uses the quick-reply IDs configured in your business template. In the n8n node you can enable Allow Button Payload Override and send a JSON map in Quick Reply Payload Overrides (for example { "0": "confirm_order", "1": "talk_to_agent" }) only when you need per-workflow overrides.
For template headers with media, use Template Options:
  • Header Media Source = URL + Header Media URL for public files.
  • Header Media Source = Media ID + Header Media ID when you already uploaded the media to Meta.
If you receive MEDIA_PERMISSION_DENIED, the media_id was uploaded with a different token/WABA/number than the sender.

Handling Media

  1. Upload media first using Media → Upload
  2. Use the returned media_id in your message

Resources