wabot-my

n8n community nodes for Wabot WhatsApp API - Send messages, templates, manage groups, labels, and more

Package Information

Released: this month
Downloads: 3 weekly / 11 monthly
Latest Version: 1.5.1
Author: Wabot

Documentation

n8n-nodes-wabot-my

n8n community node package for the Wabot WhatsApp API, published on npm as
n8n-nodes-wabot-my by teamfames. Install this exact package name
— n8n-nodes-wabot (without -my) is a different, unrelated package.

This README covers the current Wabot node (version 3, default for new
workflows). If you have version-1 or version-2 Wabot nodes already, see the
MIGRATION.md file for their full legacy operation reference and upgrade
cautions; see CUSTOMER-GUIDE.md for expanded setup notes. Both files are
bundled inside this npm package, so they're available locally after install
regardless of whether a linked copy elsewhere happens to be reachable.

Current release: 1.5.1 (template Button Values since 1.4.0; template
details in List Approved Templates and the dropdown since 1.5.0).

Install

  1. In n8n, open Settings > Community Nodes > Install.
  2. Enter n8n-nodes-wabot-my and confirm.
  3. Already installed? Use Update in the same screen.
  4. Add a Wabot node to a workflow — new nodes default to version 3.

Installing or updating does not migrate any node to a newer version and
does not modify saved workflow JSON — an existing node keeps using whichever
version it was built on. A package update can still change runtime
behavior for an already-saved workflow
with no workflow edit at all,
though, if a release changes how that node version's logic works (e.g.
which host it connects to). Check what changed before updating a workflow
you depend on, back up workflows first, and test with your own recipient
number before relying on this live.

Set up a connection

Pick a Service on the node first: Wabot (Gateway) or Wabot Pro.
Each needs its own credential.

  • Wabot (Gateway) — credential fields: Instance ID, Access
    Token
    , from your Wabot dashboard. Requests go to app.wabot.io (no host
    option to set). The only exception: a request that provably never reached
    Wabot is retried once on a Wabot backup address. Send Text/Send Media work once the instance is
    connected; List Approved Templates and Send Template additionally require
    the instance to report Official mode, or they fail before anything sends.
  • Wabot Pro — credential fields: Token / API Key, Phone Number
    ID
    , WABA ID. Every request goes to crm.wabot.pro. Credential setup
    verifies WABA template access and that a phone number ID is present, but
    it can't verify the phone number ID actually belongs to that WABA —
    double-check that pairing yourself. All four operations work without an
    Official-mode check.

Operations

Both services expose the same four operations: Send Text (free-form
message), Send Media (image/video/audio/document by public HTTPS URL,
optional caption and, for documents, filename), List Approved Templates,
and Send Template (approved template with an optional header, body
values and button values). Recipient numbers must be the country code followed by the number, digits
only: no spaces, punctuation or leading +. Media and header URLs must be public
HTTPS links — plain http:// links are rejected.

Send Template

A Template Selection field picks how you identify the template:
Choose From List (default) — a dropdown of currently approved
templates, fetched only while open in the editor, filling in name and
language. Each option shows language, name, category, header, body variable
count and buttons, e.g. [en] order_update | UTILITY | Header: None | Body vars: 1 | Buttons: #0 URL (value), #1 Quick reply ((value) = needs a
Button Value); or Enter Manually — type or map Template Name and
Template Language (e.g. en, en_US, ms) yourself.

Neither choice checks the template against the approved list before
sending — the request goes straight to Wabot, whose response determines
validity. An unapproved or misspelled template is typically rejected by
that send call, but if Wabot's response is itself ambiguous (timeout, 5xx,
unrecognized body) the outcome is unknown instead — see "Send outcomes
and errors" below.

The form shows the header fields first, then Body Values, then
Button Values. Set Header Type to match the template: none needs
nothing further; text needs one Header Text Value per placeholder;
image/video/document need a Header Media URL (and, for documents,
an optional filename). Set Body Values in placeholder order. Optional Button
Values
fill dynamic buttons in template order: a URL button takes only the
{{1}} suffix (not the full URL), a copy-code button takes the code; fixed
URL and quick-reply buttons need no value. On Wabot Pro, Button Position
is the button's zero-based place among all template buttons (blank = entry
order). Named parameters and location/carousel headers aren't supported.

List Approved Templates output

Each item is { templates, count, provider }. Each template entry:
{ "name": "test_wabot_14ogos", "language": "en", "status": "APPROVED", "category": "UTILITY", "id": "123", "header type": "NONE", "header vars": 0, "header text": null, "body vars": 4, "body text": "Hi {{1}} ...", "footer text": null, "buttons": [{ "position": 0, "type": "URL", "text": "Track", "url": "https://example.test/{{1}}", "needs value": true }], "button count": 1, "components": [ ... ] }.

id appears only when returned. buttons lists every button, zero-based,
with the API type; needs value is true for COPY_CODE and for URLs with
{{n}}. components is raw, exactly as returned. Missing or malformed parts
are null (or [] buttons when there are none); nothing throws.

body vars/header vars are numbers when confidently known, null
otherwise; header vars is 0 (a known zero, not null) when
header type is NONE. header type is NONE, TEXT, IMAGE, VIDEO,
DOCUMENT, or UNKNOWN. Media headers always report header vars: null
— this never guesses a placeholder count for a media attachment slot.

Wabot Trigger

A separate Wabot Trigger node receives events over a webhook: put the
URL it gives you into your Wabot dashboard, then activate the workflow.
Options: Event (All Events / Message Received / Message Status),
Only From Numbers (comma-separated allow-list, empty = all), and
Ignore Groups (skip events from a WhatsApp group chat).

Send outcomes and errors

A send Wabot acknowledges produces one output item:
{ "status": "accepted", "deliveryConfirmed": false, ... } — acknowledgment
only, not proof of delivery or a read receipt.

A send Wabot rejects, or whose outcome can't be confirmed (429, 5xx, or an
unrecognized response body), does not produce a normal output item by
default — it raises a node error and stops the workflow at that item, like
any other n8n error. Two distinct internal outcomes exist: rejected
(Wabot actively refused it) and unknown (the response didn't confirm
success or failure — "maybe sent," never "definitely failed"). No
automatic retry happens for either, since resending an unconfirmed send
risks a duplicate message. The only automatic retry: in the current (version
3) node, a Wabot request that could not reach Wabot at all (DNS failure,
connection refused, TLS rejected before sending) is retried once on Wabot's
alternate address; never after a timeout or any response.

Enabling the node's Continue On Fail setting turns these errors into
output items instead of stopping the workflow
({ "status": "rejected" | "unknown", "error": "...", "deliveryConfirmed": false })
— but it doesn't retry anything itself, only changes how the error is
reported. n8n's separate Retry On Fail node setting does automatically
re-execute on failure; enabling that here can resend after an unknown
outcome and cause a duplicate message, since this node can't tell whether
an earlier attempt already reached Wabot. Check Wabot's delivery logs before
manually resending after a rejected or unknown result.

Support

License

MIT

Discussion