Operations of the Turbo Notify node
This page lists what the Turbo Notify node does in a workflow. To install it and send a first message, start with Use Turbo Notify in n8n.
How the fields work
Section titled “How the fields work”Every field takes a fixed value, a value mapped from an earlier node ({{ $json.phone }}) or any other n8n expression. The node runs once for each input item: with 200 incoming rows it sends 200 messages, each with its own recipient and text.
Number is the number to send from. Pick it from the list, or choose By Alias or ID and type its alias (main for the main number) or its num_... ID, or map it.
Message
Section titled “Message”| Operation | What it does |
|---|---|
| Send Text | Sends a text of up to 4096 characters. @5511977770001 (digits, no +) mentions that person. |
| Send Media | Sends an image, video, audio, document or sticker from a public web address. Caption for image, video and document, file name for document. |
| Send Location | Sends a map location. |
| Send Contact Card | Sends a contact card with 1 to 10 phone numbers and optional emails. Set Phones Input to JSON to give the phones as a list from an earlier node, such as {{ $json.phones }}. |
| Send Calendar Event | Sends an event invitation. WhatsApp shows the time only on WhatsApp Business accounts. Add Remind Before (Minutes) for a reminder. |
| Send Link Button | Sends a message with a button that opens a link. |
| Send Typing Indicator | Shows “typing” in a chat while your workflow (or an AI step) prepares the answer, and marks that chat’s unread messages as read. Needs the Lone Wolf plan or higher. |
| Reply | Replies to an earlier message, quoting it. To answer a message from a trigger, map Message ID to {{ $json.data.id }}. |
| React | Reacts with an emoji. An empty emoji removes yours. Needs the Lone Wolf plan or higher. |
| Edit Text, Edit Caption | Changes a message you sent, within 15 minutes of sending. |
| Delete | Deletes a message you sent. The output has deleted: true, which means Turbo Notify accepted the request. WhatsApp finishes the deletion a moment later. |
| Get Status | Returns pending, sent, delivered, read or failed, with the reason when it failed. |
| Get Quota | How many messages the number can still send in this billing cycle. Run it before a big send. |
| Get, Get Many | Reads messages. Get Many filters by group, contact and direction. |
Who receives it
Section titled “Who receives it”The recipient of a send is one of three things:
- Phone Number: with the country code and a leading
+, such as+5511977770001. - Contact or Group: picked from a list, or mapped by ID.
- Auto-Detect: use it when one value from an earlier node can be any of the three. The node tells a phone number, a
ct_ID and agrp_ID apart.
Digits without + are refused, never guessed. Build the value with {{ '+' + $json.phone }}. Sending to a group needs the Business plan or higher.
The content sends (everything except Send Text) can quote an earlier message with Quoted Message ID under Additional Fields.
What the next node receives
Section titled “What the next node receives”Every message step returns the answer of the API plus:
id: the message ID.number_alias, ornumber_idwhen you gave anum_...ID. These are the same names Get, Get Many and the triggers use.to: the recipient as sent, for sends and the typing indicator.
{{ $json.id }} feeds Get Status, Reply, React, Edit or Delete after any message step. After a trigger it is {{ $json.data.id }}. status is an object: use {{ $json.status.state }}.
The values of the input row stay available with {{ $('Name of the previous node').item.json.column }}.
Contact, Group, Number and Event
Section titled “Contact, Group, Number and Event”| Resource | Operations |
|---|---|
| Contact | Get, Get Many. Get Many filters by name, phone, how the contact first appeared and whether you messaged them in the current billing cycle. |
| Group | Get, Get Many. Get Many can include groups the number has left. |
| Number | Get reads one number with its connection status, which is handy to check before a bulk send. Get Many lists the main and extra numbers and filters by status to find numbers that need attention. |
| Event | Get Many reads what happened on your numbers, newest first, filtered by type, number and time. Use it to catch up on events a workflow missed while it was off. |
Return All, Limit and Simplify
Section titled “Return All, Limit and Simplify”Get Many operations return one n8n item per result.
- Return All follows the API cursor until there is nothing left. Otherwise Limit (50 by default) caps the result.
- Simplify is on by default and keeps the main fields (at most 10). Turn it off for the full objects. It is on for Get too, and a simplified message keeps its
text. - A filter that is added must be filled in: an empty one is refused instead of returning everything.
Sending many messages
Section titled “Sending many messages”- Spacing. Each number has a minimum gap between sends that depends on the plan. When Turbo Notify answers that a message came too early, the node waits the time it asks for and tries again, up to 3 times. A quota that is used up is never retried.
- Checked first. The node reads and checks every item before it sends the first one, so one invalid row stops the run with nothing sent. With Continue On Fail the other rows still go out and the invalid one reports what to fix.
- No double sends. Retry On Fail in the node settings re-runs the whole node, so on real runs (not when you select Execute step) the node sets an Idempotency Key by itself. It is the same when n8n repeats an item and different for every item, so a repeat inside the same run never sends a message twice.
- Your own key. Under Options, Idempotency Key should differ for every item, such as the order number from an earlier node. One fixed value sends only the first message, and the node refuses a key that is repeated for a different message in the same run.
- Retrying an execution. Retrying an execution from the editor creates a new execution and sends the items that already went out again.
- A new number. Test with a few messages: a number connected today sends a limited volume a day. The table is in Use Turbo Notify in n8n.
Before a big send, a Number > Get step tells you whether the number is connected, and Message > Get Quota how many messages it can still send in the cycle. Plans and quotas are on Billing (opens in a new tab).
When a step stops
Section titled “When a step stops”The node stops with the reason and what to change. Turn on Continue On Fail in the node settings to keep the workflow going: the failed item then carries the message in error and what to change in hint.
| Code | What to do |
|---|---|
not_authenticated | The key is wrong, revoked or expired. Create a new one under API keys. |
insufficient_scope | The key lacks a permission. The message names it. |
number_not_connected | Reconnect the number under Numbers. |
messages_quota_exceeded, contact_quota_exceeded | The allowance for the billing cycle is used up. It resets when the cycle turns, or when you change the plan under Billing. |
warmup_limit_exceeded | A new number reached its daily volume. The message says how long until the count starts again, at midnight UTC. |
feature_not_available | The plan does not include it, for example sending to groups or the typing indicator. |
edit_window_expired | A text or caption can be edited only within 15 minutes. |
send_rate_spacing, rate_limit_exceeded | Too fast for the plan. The node waits and tries again up to 3 times before it stops. |
If Turbo Notify cannot be reached or does not answer in time, the message says so. For a send, check Message > Get Many with Direction Sent before you run it again, because the message may have gone out. All codes are in the error reference.