Package Information
Available Nodes
Documentation generating…
Documentation
n8n-nodes-chatrail
n8n nodes for ChatRail, a WhatsApp API for developers. Send WhatsApp messages from a number you already have, check whether numbers are on WhatsApp, and start workflows when a customer replies.
- ChatRail: send messages, look up a message's delivery status, check numbers and list your connected numbers.
- ChatRail Trigger: start a workflow on WhatsApp events such as an incoming message, a delivery update or a number disconnecting. Every event is signature-checked.
Installation · Credentials · Operations · Trigger · Example workflows · Troubleshooting · Compatibility · Resources
Installation
Follow the community nodes installation guide in the n8n docs and install n8n-nodes-chatrail.
Credentials
- Sign up at chatrail.dev. The free Sandbox includes 500 messages a month.
- Pair a WhatsApp number in the dashboard by scanning a QR code or entering a pairing code.
- Create an API key under API keys with the scopes you need:
messages:writeto send messagesmessages:readto get messages and check numberswebhooks:readandwebhooks:writefor the ChatRail Trigger
- In n8n, create a ChatRail API credential and paste the key. Leave Base URL as
https://www.chatrail.dev.
The key belongs to one workspace and can act on everything in it, so treat it like a password.
Operations
Message
- Send: send text, or media from a public HTTPS URL, from a connected number.
- Context attaches the data behind an alert (an order, a booking). When the customer replies, the reply is matched back to it, and ChatRail's optional AI replies can answer follow-up questions from it.
- Metadata is your own reference data. It comes back on webhooks and is never sent to WhatsApp.
- Send At schedules the message.
- Reply To Message ID quotes an earlier message in the same chat.
- Each item gets an idempotency key, so n8n's Retry On Fail can't send the same message twice. Set your own key under Additional Fields to deduplicate across executions.
- Get: get a message and its current delivery status, for example
sent,delivered,readorfailed, with the reason when it failed.
A successful send means ChatRail has accepted and queued the message. It doesn't yet mean WhatsApp has delivered it. Use Get, or the trigger's delivery events, to follow the status.
Number
- Check: check up to 10 numbers at a time. Each number becomes its own output item, with
registered, the WhatsAppchat_id, and whether the answer wascached.
Checks go through your own connected number, so ChatRail rations them to protect it:
- An answer from the last 24 hours is reused, and doesn't reach WhatsApp.
- Up to 10 lookups a minute per workspace, and 30 a day on Sandbox.
Use it to check a recipient before sending, not to sweep a list.
Connection
- Get Many: list the WhatsApp numbers in the workspace and their state.
Trigger
Choose one or more events:
| Group | Events |
|---|---|
| Incoming | message.received, message.reply_correlated, message.reaction, message.edited, message.revoked, poll.vote, call.received, group.participants_changed |
| Delivery | message.accepted, message.queued, message.sent, message.delivered, message.read, message.failed |
| Connections | connection.connected, connection.degraded, connection.disconnected, connection.requires_repair |
| Scheduling and AI | schedule.created, schedule.sent, ai.reply_generated, ai.reply_blocked |
- Registration is automatic. Activating the workflow registers its webhook URL with ChatRail, and deactivating it removes the registration.
- Every delivery is checked. The trigger verifies each delivery's HMAC-SHA256 signature and timestamp, and refuses unsigned, altered or replayed requests with
401. - Optional filter: set Connection to receive events from one number only. This needs a plan with more than one connection.
ChatRail only delivers webhooks to public HTTPS addresses, so the trigger needs an n8n instance that is reachable from the internet. That includes n8n Cloud and a self-hosted n8n with a public domain, but not localhost.
Each event has the same envelope:
{
"id": "whd_…",
"type": "message.received",
"created_at": "2026-09-30T12:00:00.000Z",
"workspace_id": "…",
"data": { "…": "…" }
}
id stays the same across retries. Delivery is at least once, so use id to skip duplicates.
Example workflows
- Order update with follow-up answers: a Shopify or WooCommerce trigger feeds ChatRail → Message → Send, with the order as Context. Customers' questions about that order are matched back to it automatically.
- Route replies to your team: ChatRail Trigger on
message.receivedfeeds a Slack or email node. - Know when a number drops: ChatRail Trigger on
connection.disconnectedsends you an alert, so you can re-pair before messages pile up. - Clean a contact before sending: ChatRail → Number → Check, then an IF node on
registered.
More patterns are in the ChatRail n8n guide and tutorial.
Troubleshooting
- The trigger never fires: ChatRail can only deliver to a public HTTPS address. A self-hosted n8n on
localhostor a private network won't receive events. Check the webhook endpoint the trigger created in the ChatRail dashboard, under Webhooks. Its delivery log shows each attempt and its response. - Activating the trigger fails with 402: limiting the trigger to one Connection needs a plan with more than one connection. Leave Connection empty to receive events from every number.
- Number checks return 429, or
reason: minute_limitordaily_limit: lookups are limited to protect your number (10 a minute, and 30 a day on Sandbox). Answers from the last 24 hours are reused and don't count, so wait and try again. - A send returns 409: the connection isn't ready, usually because the WhatsApp number needs pairing again. Re-pair it in the dashboard.
- 401 or 403: check the credential's API key and that it has the scopes listed under Credentials.
Compatibility
Built with the n8n-node CLI against n8n Nodes API version 1.
Resources
- ChatRail documentation
- API reference
- Webhook events and signatures
- n8n community nodes documentation
ChatRail connects through WhatsApp Linked Devices. It isn't affiliated with or endorsed by Meta or WhatsApp.