Package Information
Documentation
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
- Submit for n8n verification
- 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
- You add WAWCD WhatsApp Receice Message to a workflow and copy its webhook URL.
- In WAWCD → Outgoing Webhooks, you register that URL (POST).
- When a contact messages your WAWCD-connected WhatsApp account, WAWCD sends JSON to n8n.
- The node normalizes field names (including
reciver-*→receiver-*) and passes data to the next nodes.
Outbound flow
- You create WAWCD API credentials in n8n (API base URL + incoming webhook token).
- You add WAWCD WhatsApp Send Message and configure recipient(s) and content.
- The node POSTs to
{API Base URL}/webhooks/send-messagewithAuthorization: Bearer <token>. - 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)
- Webhook trigger with Test URL (while editing) and Production URL (when workflow is active)
- Optional custom Path segment for the webhook URL
- Incoming Authentication — none, or shared secret via
Authorization: BearerorX-WAWCD-Token - Strict Payload Validation — reject requests that do not look like WAWCD JSON
- Normalizes WAWCD’s
reciver-*typo fields to canonicalreceiver-*keys - Supports nested
bodyobjects in the payload - Preserves all other WAWCD fields unchanged
WAWCD WhatsApp Send Message
- Send to one or many recipients (comma or newline separated)
- Text messages with
{first_name}placeholder support - Media URLs (images, documents, etc.) with optional caption
- Audio URLs
- Location pins (latitude / longitude)
- Random delay range (
minDelay/maxDelayin seconds) - Scheduled send via
schedule-timestamp - Personalization fields:
first_name,last_name - Built-in credential test (validates API reachability and token)
- 60 second request timeout; bearer tokens are never echoed in error messages
- Usable as an AI tool in n8n agent workflows
Security
- Credential tokens stored as password fields in n8n
- Send errors redact
Bearertoken values - Optional webhook shared secret on the trigger node
Prerequisites
Before using these nodes you need:
- A WAWCD account with the browser extension installed
- WhatsApp Web connected and the WAWCD extension online (required for outbound delivery)
- A self-hosted n8n instance or n8n Cloud with community nodes enabled
- An Incoming Webhook Token from WAWCD → Webhooks → Incoming (for Send Message)
- 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 build
# In 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 link
# In 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:
N8N_COMMUNITY_PACKAGES=n8n-nodes-wawcd
Quick start
1. Create credentials
- In n8n, go to Credentials → Add credential → WAWCD API.
- Set API Base URL (default:
https://backend.wawcd.com). - Paste your Incoming Webhook Token from WAWCD → Webhooks → Incoming.
- Click Test — you should see Connection successful.
2. Send a test message
- Create a workflow with a Manual Trigger → WAWCD WhatsApp Send Message.
- Select your WAWCD API credentials.
- Set Receiver WhatsApp Number (e.g.
923009897989). - Set Message (e.g.
Hello from n8n!). - Execute the workflow. Ensure WhatsApp Web + WAWCD extension are online.
3. Receive a message
- Create a workflow with WAWCD WhatsApp Receice Message.
- Copy the Test URL from the node panel.
- In WAWCD → Outgoing Webhooks, add a webhook: method POST, paste the URL.
- 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 <token> 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
- Add the node to a workflow.
- (Optional) Set a custom Path — leave empty to use the auto-generated webhook ID.
- (Optional) Enable Incoming Authentication → Shared Secret and set Webhook Token to match WAWCD Outgoing → Bearer.
- (Optional) Enable Strict Payload Validation to reject non-WAWCD payloads.
- Copy Test URL while building, or Production URL after activating the workflow.
- 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 |
whatsapp_account_id |
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 YOUR_WEBHOOK_TOKEN" \
-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
- Confirm install:
npm list n8n-nodes-wawcdin your n8n directory - Restart n8n
- Search for WAWCD in the node panel
- For Docker: rebuild/restart the container after installing the package
Development
Requirements
- Node.js LTS
- npm
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
- Fork the repository
- Create a feature branch
- Run
npm run lint && npm run build - 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
- Create the package on npmjs.com (or it is created on first publish if the name is free).
- On npm → package Settings → Publish access → Trusted Publishers → Add publisher:
- Repository owner:
WAWCD-LLC - Repository name:
wawcd-n8n-node - Workflow name:
publish.yml
- Repository owner:
- Alternatively, set an
NPM_TOKENsecret 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
Submit for n8n verification
To appear in n8n’s verified community nodes panel:
- Ensure
npm run lintpasses and the package has no runtime dependencies - Publish to npm via GitHub Actions (see above)
- Submit at the n8n Creator Portal
Requirements: Submit community nodes · Verification guidelines · UX guidelines
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