Description
n8n-nodes-wawcd
Official WAWCD community nodes for n8n. Connect WhatsApp automation in n8n to your WAWCD account — send messages from workflows and trigger workflows when customers message you on WhatsApp.


—
Table of contents
- What this package does
- How it works
- Features
- Prerequisites
- Installation
- Quick start
- Credentials (WAWCD API)
- Nodes
- WAWCD WhatsApp Receice Message (Trigger)
- WAWCD WhatsApp Send Message
- Example workflows
- Common use cases
- Debugging & troubleshooting
- Development
- Publishing to npm
- Support & links
- License
—
What this package does
This npm package adds two n8n nodes that bridge n8n workflows and WAWCD (WhatsApp automation via the WAWCD browser extension):
| Direction | Node | What happens |
|———–|——|————–|
| Inbound (WhatsApp → n8n) | WAWCD WhatsApp Receice Message | WAWCD POSTs a JSON payload to your n8n webhook when someone messages your connected WhatsApp line. The workflow starts automatically. |
| Outbound (n8n → WhatsApp) | WAWCD WhatsApp Send Message | n8n calls the WAWCD API to deliver text, media, audio, location, or scheduled messages to one or more WhatsApp numbers. |
You can use either node alone or chain them — for example, receive a customer message, run AI or CRM logic, then reply with Send Message.
—
How it works
sequenceDiagram
participant WA as WhatsApp contact
participant WAWCD as WAWCD extension + API
participant n8n as n8n workflow Note over WA,n8n: Inbound — Receive Message (Trigger)
WA->>WAWCD: Customer sends message
WAWCD->>n8n: POST JSON to webhook URL
n8n->>n8n: Workflow runs (AI, CRM, etc.)
Note over WA,n8n: Outbound — Send Message
n8n->>WAWCD: POST /webhooks/send-message (Bearer token)
WAWCD->>WA: Message delivered via WhatsApp Web
Inbound flow
1. You add WAWCD WhatsApp Receice Message to a workflow and copy its webhook URL.
2. In WAWCD → Outgoing Webhooks, you register that URL (POST).
3. When a contact messages your WAWCD-connected WhatsApp account, WAWCD sends JSON to n8n.
4. The node normalizes field names (including reciver- → receiver-) and passes data to the next nodes.
Outbound flow
1. You create WAWCD API credentials in n8n (API base URL + incoming webhook token).
2. You add WAWCD WhatsApp Send Message and configure recipient(s) and content.
3. The node POSTs to {API Base URL}/webhooks/send-message with Authorization: Bearer .
4. WAWCD delivers the message through WhatsApp Web (extension must be online).
The WhatsApp account is tied to your incoming webhook token on the WAWCD backend — you do not pass a separate account ID in the send body.
—
Features
WAWCD WhatsApp Receice Message (Trigger)
Authorization: Bearer or X-WAWCD-Tokenreciver- typo fields to canonical receiver- keysbody objects in the payloadWAWCD WhatsApp Send Message
{first_name} placeholder supportminDelay / maxDelay in seconds)schedule-timestampfirstname, lastnameSecurity
Bearer token values—
Prerequisites
Before using these nodes you need:
1. A WAWCD account with the browser extension installed
2. WhatsApp Web connected and the WAWCD extension online (required for outbound delivery)
3. A self-hosted n8n instance or n8n Cloud with community nodes enabled
4. An Incoming Webhook Token from WAWCD → Webhooks → Incoming (for Send Message)
5. An Outgoing Webhook configured in WAWCD (for Receive Message)
—
Installation
From npm (after the package is published)
npm install n8n-nodes-wawcd
In n8n Cloud or self-hosted with community nodes UI: search for WAWCD in Settings → Community nodes → Install and install n8n-nodes-wawcd.
> Note: If you get 404 Not Found, the package has not been published to npm yet. Use local installation below.
Self-hosted — custom extensions directory
Follow the n8n community nodes installation guide:
Example: install into n8n's custom node directory
cd ~/.n8n/custom
npm install n8n-nodes-wawcd
Restart n8n after installing.
Local installation (before publish)
Use this while developing or before the first npm release.
Option 1 — install from this repository folder
cd /path/to/wawcd-n8n-node
npm install
npm run buildIn your n8n project or custom nodes folder:
npm install /path/to/wawcd-n8n-node
Option 2 — npm link
In this repo
cd /path/to/wawcd-n8n-node
npm install
npm run build
npm linkIn your n8n install directory
npm link n8n-nodes-wawcd
Restart n8n. You should see WAWCD WhatsApp Receice Message and WAWCD WhatsApp Send Message in the node panel.
Environment variable (Docker / server installs)
Set n8n’s community nodes environment variable as described in the n8n docs:
N8NCOMMUNITYPACKAGES=n8n-nodes-wawcd
—
Quick start
1. Create credentials
1. In n8n, go to Credentials → Add credential → WAWCD API.
2. Set API Base URL (default: https://backend.wawcd.com).
3. Paste your Incoming Webhook Token from WAWCD → Webhooks → Incoming.
4. Click Test — you should see Connection successful.
2. Send a test message
1. Create a workflow with a Manual Trigger → WAWCD WhatsApp Send Message.
2. Select your WAWCD API credentials.
3. Set Receiver WhatsApp Number (e.g. 923009897989).
4. Set Message (e.g. Hello from n8n!).
5. Execute the workflow. Ensure WhatsApp Web + WAWCD extension are online.
3. Receive a message
1. Create a workflow with WAWCD WhatsApp Receice Message.
2. Copy the Test URL from the node panel.
3. In WAWCD → Outgoing Webhooks, add a webhook: method POST, paste the URL.
4. Send a WhatsApp message to your connected line — the workflow should execute.
—
Credentials (WAWCD API)
| Field | Required | Description |
|——-|———-|————-|
| API Base URL | Yes | WAWCD API host. Default: https://backend.wawcd.com. No trailing slash. |
| Incoming Webhook Token | Yes | Token from WAWCD extension → Webhooks → Incoming. Used as Authorization: Bearer on send requests. Paste the token only, or a full Bearer … line. |
Credential test behavior
| Result | Meaning |
|——–|———|
| Connection successful | API reachable and token accepted |
| Invalid token or access denied | HTTP 401/403 — check your token |
| Host reachable (404 on root is acceptable) | Server responds; root path may 404 |
| Could not reach WAWCD API | Wrong URL, network issue, or firewall |
—
Nodes
WAWCD WhatsApp Receice Message (Trigger)
Starts a workflow when WAWCD POSTs JSON to your n8n webhook URL.
#### Setup steps
1. Add the node to a workflow.
2. (Optional) Set a custom Path — leave empty to use the auto-generated webhook ID.
3. (Optional) Enable Incoming Authentication → Shared Secret and set Webhook Token to match WAWCD Outgoing → Bearer.
4. (Optional) Enable Strict Payload Validation to reject non-WAWCD payloads.
5. Copy Test URL while building, or Production URL after activating the workflow.
6. Register the URL in WAWCD → Outgoing Webhooks (POST).
#### Output fields (after normalization)
| Field | Description |
|——-|————-|
| user-whatsapp-number | Your WAWCD-connected WhatsApp line |
| receiver-whatsapp-number | Contact who sent the message |
| receiver-display-name | Contact display name |
| receiver-saved-name | Saved contact name |
| receiver-message | Message text |
| receiver-message-timestamp | Message timestamp |
| receiver-country / receiver-country-code | Contact country info |
| whatsappaccountid | Account ID when present |
Example output:
{
"user-whatsapp-number": "+12456784545",
"receiver-whatsapp-number": "96234343434",
"receiver-display-name": "John Doe",
"receiver-message": "Hello, I completed the payment online.",
"receiver-message-timestamp": "2025-02-26T00:00:00Z"
}
#### Reply to the sender
Connect to WAWCD WhatsApp Send Message and set:
Receiver WhatsApp Number: {{ $json['receiver-whatsapp-number'] }}
Message: {{ $json['receiver-message'] }}
—
WAWCD WhatsApp Send Message
Sends WhatsApp messages via POST {API Base URL}/webhooks/send-message.
#### Parameters
| Parameter | Required | Description |
|———–|———-|————-|
| Receiver WhatsApp Number | Yes | One or more numbers with country code. Comma or newline separated. Accepts +923… or 923…. |
| Message | Conditional | Text body. Required unless sending media, audio, or location. Supports {first_name}. |
| Additional Fields | No | See table below. |
#### Additional fields
| Field | Description |
|——-|————-|
| Media URLs | One or more image/document URLs |
| Audio URLs | One or more audio file URLs |
| Caption | Caption when sending media |
| Send Location | Enable location pin |
| Latitude / Longitude | Required when Send Location is enabled |
| First Name / Last Name | Personalization for {first_name} |
| Min Delay / Max Delay | Random delay range in seconds before sending |
| Schedule Timestamp | ISO-style datetime to schedule the message |
#### Example API payload (simple text)
{
"receiver-whatsapp-number": ["923009897989"],
"message": "hello"
}
#### Example API payload (media + delay)
{
"receiver-whatsapp-number": ["923009897989", "923001234567"],
"message": "Hi {first_name}!",
"first_name": "Ali",
"mediaUrl": ["https://example.com/image.jpg"],
"caption": "Your order receipt",
"minDelay": 2,
"maxDelay": 5
}
—
Example workflows
Import JSON files from the examples/ folder in n8n (Workflows → Import from file):
| File | Description |
|——|————-|
| shopify-order.json | Manual trigger with sample order data → Send Message (order notification) |
| ai-support.json | Receive Message → processing stub → Send Message (auto-reply pattern) |
| lead-capture.json | Receive Message with strict validation → field mapping stub |
Replace placeholder credentials and webhook URLs before running in production.
—
Common use cases
| Use case | Workflow pattern |
|———-|——————|
| Order notifications | Shopify/WooCommerce trigger → Send Message |
| AI customer support | Receive Message → OpenAI/AI Agent → Send Message |
| Lead capture | Receive Message (strict validation) → CRM node (HubSpot, Airtable, etc.) |
| Appointment reminders | Schedule trigger → Send Message |
| Two-way chat bot | Receive Message → logic/Code node → Send Message with {{ $json['receiver-whatsapp-number'] }} |
—
Debugging & troubleshooting
Send Message issues
| Symptom | Check |
|———|——-|
| Credential test fails | Verify API Base URL and Incoming Webhook Token in WAWCD → Webhooks → Incoming |
| 401 / access denied | Token expired or wrong — regenerate in WAWCD |
| Message not delivered | WhatsApp Web must be open; WAWCD extension must be online |
| Timeout after 60s | Network or WAWCD API slow — check https://backend.wawcd.com reachability |
| “At least one receiver required” | Set Receiver WhatsApp Number with country code |
| “Provide at least one of: Message, Media…” | Add text, media URL, audio URL, or location |
Debug commands (local development)
cd /path/to/wawcd-n8n-node
npm run lint # Check n8n community node standards
npm run build # Compile TypeScript → dist/
npm run dev # Run n8n locally with this node loaded (hot reload)
Use n8n’s Executions panel to inspect input/output JSON for each node run. Enable Continue On Fail on Send Message to capture per-item errors without stopping the workflow.
Receive Message (Trigger) issues
| Symptom | Check |
|———|——-|
| Workflow never triggers | Workflow must be active for Production URL; use Test URL while editing |
| 401 Unauthorized | Webhook Token in n8n must match WAWCD Outgoing → Bearer |
| 400 Invalid payload | Enable/disable Strict Payload Validation; confirm WAWCD sends JSON with expected fields |
| Wrong field names | Node auto-normalizes reciver- → receiver-; use $json['receiver-whatsapp-number'] in expressions |
| Webhook URL not reachable | n8n must be publicly accessible (or use ngrok/tunnel for local dev) |
Testing the webhook manually
curl -X POST "https://your-n8n.example.com/webhook-test/your-path"
-H "Content-Type: application/json"
-H "Authorization: Bearer YOURWEBHOOKTOKEN"
-d '{
"user-whatsapp-number": "+12456784545",
"receiver-whatsapp-number": "96234343434",
"receiver-message": "Test message"
}'
npm install returns 404
The package is not on npm yet. Use local installation or wait until the first release is published via GitHub Actions.
Node not visible in n8n
1. Confirm install: npm list n8n-nodes-wawcd in your n8n directory
2. Restart n8n
3. Search for WAWCD in the node panel
4. For Docker: rebuild/restart the container after installing the package
—
Development
Requirements
Commands
| Command | Description |
|———|————-|
| npm install | Install dependencies |
| npm run lint | Run n8n community node linter |
| npm run lint:fix | Auto-fix lint issues where possible |
| npm run build | Compile TypeScript to dist/ |
| npm run build:watch | Watch mode TypeScript compile |
| npm run dev | Start local n8n with this node (hot reload) |
| npm run release | Bump version, tag, push — triggers npm publish workflow |
Project structure
wawcd-n8n-node/
├── credentials/ # WAWCD API credential type
├── nodes/
│ ├── WawcdSendMessage/ # Send Message node
│ ├── WawcdTrigger/ # Receive Message trigger
│ └── shared/ # Shared payload & HTTP logic
├── examples/ # Sample workflow JSON files
├── dist/ # Compiled output (generated by build)
├── package.json
└── README.md
Contributing
1. Fork the repository
2. Create a feature branch
3. Run npm run lint && npm run build
4. Open a pull request against WAWCD-LLC/wawcd-n8n-node
—
Publishing to npm
This package is published via GitHub Actions with npm provenance, as required by n8n for verified community nodes (from May 2026).
One-time setup
1. Create the package on npmjs.com (or it is created on first publish if the name is free).
2. On npm → package Settings → Publish access → Trusted Publishers → Add publisher:
– Repository owner: WAWCD-LLC
– Repository name: wawcd-n8n-node
– Workflow name: publish.yml
3. Alternatively, set an NPM_TOKEN secret in GitHub Actions (see .github/workflows/publish.yml).
Release
npm run release
This lints, builds, prompts for a version bump, commits, tags (e.g. 0.1.1), and pushes. The publish.yml workflow publishes to npm when a version tag is pushed.
After publish, install with:
npm install n8n-nodes-wawcd
—
Support & links
| Resource | URL |
|———-|—–|
| WAWCD website | wawcd.com |
| GitHub issues | github.com/WAWCD-LLC/wawcd-n8n-node/issues |
| n8n community nodes docs | docs.n8n.io/integrations/community-nodes |
| n8n Creator Portal | creators.n8n.io/nodes |
| npm package | npmjs.com/package/n8n-nodes-wawcd |
—
License
MIT — Copyright (c) WAWCD