Back to Nodes

WAWCD WhatsApp Send Message

Last updated Jun 8, 2026

Official WAWCD nodes for n8n — send WhatsApp messages and receive WAWCD webhook events

57 Weekly Downloads
334 Monthly Downloads

Included Nodes

WAWCD WhatsApp Send Message
WAWCD WhatsApp Receice Message

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.

![npm version](https://www.npmjs.com/package/n8n-nodes-wawcd)
![License: MIT](LICENSE)

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)

  • 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: Bearer or X-WAWCD-Token
  • Strict Payload Validation — reject requests that do not look like WAWCD JSON
  • Normalizes WAWCD’s reciver- typo fields to canonical receiver- keys
  • Supports nested body objects 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 / maxDelay in seconds)
  • Scheduled send via schedule-timestamp
  • Personalization fields: firstname, lastname
  • 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 Bearer token values
  • Optional webhook shared secret on the trigger node
  • 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 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:

    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 TriggerWAWCD 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

  • 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

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