Description
n8n-nodes-waapy
Community nodes for connecting n8n with the WaaPy WhatsApp API.
What This Package Does
It adds 2 nodes to n8n:
1. WaaPy (Action)
Send WhatsApp messages using:
– Text
– Image
– Template (including dynamic template variables)
2. WaaPy Trigger
Start workflows when WaaPy sends webhook events, such as:
– Incoming message event
– Message status event
Installation
Option A: Install from n8n Community Nodes UI
1. Open n8n.
2. Go to Settings -> Community Nodes.
3. Search for n8n-nodes-waapy.
4. Install and restart n8n if required.
Option B: Manual install
npm install n8n-nodes-waapy
Credentials
Create credentials of type WaaPy API in n8n:
1. Server URL
Example: https://api.waapy.co
2. API Key
Your WaaPy API token
The credentials test uses GET /n8n/health.
Node Guide
1) WaaPy (Action)
Resource
Message- Connection Name
- Recipient Number
- Message Text
- Reply Buttons for quick reply options on normal text messages
- Reply Button ID is the internal value returned when the user taps the button
- Reply Button Title is the visible text shown on the button
- Maximum 10 reply buttons per message
- Connection Name
- Recipient Number
- Image Source (
From URLorUpload File) - Caption
- Input Binary Field (default:
data) - Connection Name
- Recipient Number
- Template
- Header Parameters
- Body Parameters
- Button Parameters
- Strict Template Validation (default:
true) checks that your dynamic inputs match the template placeholders. - If counts do not match (for example body expects 2 variables but you pass 1), node execution fails with a clear error.
- Footer is detected from template metadata automatically.
- Footer usually does not require variables; only header/body/buttons can include placeholders.
message.receivedmessage.status- On activation, n8n registers a webhook in WaaPy.
- On deactivation, n8n removes it.
- Incoming webhook payload is output as JSON in the first item.
Operations
#### A. Send Text
Use this when you want to send a normal text message.
Required fields:
Optional:
#### B. Send Image
Use this when you want to send an image.
Required fields:
Optional:
If you choose Upload File, provide:
#### C. Send Template
Use this when you want to send an approved WhatsApp template.
Required fields:
How it works:
1. Template list is loaded from GET /n8n/templates.
2. Selected template ID is used to fetch details from GET /n8n/templates/:templateId.
3. The node inspects template components (header/body/footer/buttons).
4. The node builds payload for POST /n8n/messages/send-template.
Dynamic template inputs:
Validation:
Notes:
2) WaaPy Trigger
Use this node to receive WaaPy webhook events and start workflows.
Available events:
Behavior:
Quick Usage Examples
Send a text message
1. Add WaaPy node.
2. Select Resource: Message.
3. Select Operation: Send Text.
4. Fill connection, recipient, text.
5. Execute node.
Send a text message with quick reply buttons
1. Add WaaPy node.
2. Select Operation: Send Text.
3. Fill connection, recipient, and message text.
4. Add one or more entries under Reply Buttons.
5. For each button, provide Reply Button ID and Reply Button Title.
6. Reply Button ID is used as the returned selection value. Reply Button Title is what the recipient sees.
7. You can send up to 10 reply buttons in one message.
8. Execute node.
Send a template with dynamic values
1. Add WaaPy node.
2. Select Operation: Send Template.
3. Choose template from the list.
4. Fill dynamic values in Header/Body/Button parameters.
5. Execute node.
Trigger on incoming message
1. Add WaaPy Trigger node.
2. Select event message.received.
3. Activate workflow.
4. Send WhatsApp message to your connected number and verify payload in execution.
Development
npm ci
npm run build
npm run dev
Useful commands:
npm run build:watch
npm run lint
npm run lint:fix
For local end-to-end smoke testing:
docker-compose up --build
Troubleshooting
1. Template list is empty
– Check API key permissions.
– Verify Server URL is correct.
– Ensure templates are active/approved in WaaPy.
2. Template send fails due to parameter count
– Review placeholder count in template details.
– Match Header/Body/Button input counts to template variables.
– Temporarily disable Strict Template Validation only for debugging.
3. Trigger not receiving events
– Ensure workflow is active.
– Check that webhook registration exists in WaaPy.
– Verify your n8n webhook URL is publicly reachable by WaaPy.
License
MIT