Back to Nodes

Reply To Message ID

Last updated Nov 6, 2026

Send and receive WhatsApp messages in n8n through the AutomiQ Gateway (official WhatsApp Cloud API).

662 Weekly Downloads
2,160 Monthly Downloads

Included Nodes

Reply To Message ID
AutomiQ for WhatsApp Trigger

Description

![npm version](https://www.npmjs.com/package/@automiq/n8n-nodes-automiq)

AutomiQ for WhatsApp (n8n community node)

Send and receive WhatsApp messages in n8n through the AutomiQ Gateway, which uses the official WhatsApp Cloud API.

One credential, no HTTP Request nodes, no Code nodes, no secrets pasted into workflows:

  • AutomiQ for WhatsApp: send text, media and template messages, download media that customers send you, check your AutomiQ account, numbers and delivery log, and send test deliveries. Works as a tool for n8n AI Agents.
  • AutomiQ for WhatsApp Trigger: receives messages and delivery statuses, verifies every delivery inside the node, and outputs one clean item per message.
  • n8n is a fair-code licensed workflow automation platform.

    > WhatsApp is a trademark of Meta Platforms, Inc. AutomiQ is not affiliated with, endorsed by or sponsored by Meta.

    Installation · Credentials · Operations · Trigger · Errors · Compatibility · Resources · Version history

    Installation

    You need an AutomiQ account with a connected WhatsApp number. Get started at www.automiq.fi.

    n8n (self-hosted or Cloud, where community nodes are allowed):

    1. Go to Settings > Community Nodes.
    2. Select Install and enter @automiq/n8n-nodes-automiq.
    3. Confirm and install.

    See the n8n community nodes installation guide for details.

    Manual install (self-hosted): run npm install @automiq/n8n-nodes-automiq in your n8n custom nodes folder (usually ~/.n8n/custom) and restart n8n.

    Credentials

    Create one AutomiQ API credential. Both nodes use it.

    | Field | Where to find it | Needed for |
    | —————— | —————————————————————————————————- | —————- |
    | API Key | AutomiQ portal > API keys. It starts with amqlive and is shown only once when you create it. | Both nodes |
    | Webhook Secret | AutomiQ portal > Webhook > reveal the Webhook secret (64 characters). Not the webhook token. | The Trigger only |

    When you save the credential, n8n tests the API key against AutomiQ. A wrong or revoked key shows “Invalid or revoked AutomiQ API key”.

    Recommended: in the credential, set Allowed HTTP Request Domains to www.automiq.fi, so this key can never be sent to another site from an HTTP Request node.

    Operations

    The node has four resources. Account, Delivery and Webhook use features that only AutomiQ provides, so they work with your AutomiQ API key alone, with no Meta app or token.

    | Resource | Operation | What it does | AutomiQ-native |
    | ——– | ————————— | ——————————————————————————– | —————————————- |
    | Account | Get | Your account status and the requests and messages used in the last 30 days | Yes |
    | Account | Get Many Numbers | The WhatsApp numbers connected to your account | Yes |
    | Account | Get Number | Status, quality rating and messaging limit tier of one number | Yes |
    | Delivery | Get Many | The log of webhook deliveries, newest first, with filters for status and number | Yes |
    | Delivery | Get | One delivery from the log | Yes |
    | Delivery | Send Test Delivery | Sends a signed test event to your webhook URL | Yes |
    | Message | Download Media | Downloads media a customer sent you, up to 4 MB | Yes |
    | Message | Mark as Read | Marks a received message as read | No, uses the official WhatsApp Cloud API |
    | Message | Send Media | Sends an image, document, audio or video | No, uses the official WhatsApp Cloud API |
    | Message | Send Raw Payload (Advanced) | Sends a message body you write yourself | No, uses the official WhatsApp Cloud API |
    | Message | Send Template | Sends an approved template | No, uses the official WhatsApp Cloud API |
    | Message | Send Text | Sends a text message | No, uses the official WhatsApp Cloud API |
    | Webhook | Get Status | Whether a webhook URL is set, its host, the test URL state and the last delivery | Yes |

    Account

    Get returns your account status and your usage in the last 30 days: requests and messages, plus the errors of the last 24 hours. It is a count of use, not a limit.

    Get Many Numbers and Get Number show your connected numbers, with status, quality rating and messaging limit tier.

    Delivery

    AutomiQ keeps a log of every webhook delivery to your workflow. It records when, what kind of event, whether it worked and why it failed, but never the message content.

    | Operation | Notes |
    | —————— | ——————————————————————————————————————————————————————————————————————————————— |
    | Get Many | Newest first. Return All follows the pages for you. Filter by Status (delivered, failed or skipped) and by Phone Number. Deliveries from before the number was recorded have no number, so the number filter does not match them. |
    | Get | One delivery by its ID. |
    | Send Test Delivery | Sends a signed test event to your webhook URL. A failed test returns ok: false, and the reason is in the delivery log. It stops with a message when no webhook URL is set, or when you test too often. |

    Message

    For all message operations except Download Media, pick the Sender Phone Number from the list. It shows the numbers connected to your AutomiQ account.

    #### Send Text

    | Field | Notes |
    | —————————– | ————————————————————————————————————————– |
    | Recipient Phone Number | International format with the country code, for example 16505551234. Spaces, dashes, + and a leading 00 are removed. |
    | Text | Up to 4096 characters. |
    | Options > Link Preview | Shows a preview of the first link. |
    | Options > Reply To Message ID | Sends the message as a reply that quotes a received message. |

    Free-form messages can only be sent within 24 hours after the customer last wrote to you. Outside that window, use Send Template.

    #### Send Media

    | Field | Notes |
    | —————————– | ——————————————————————————————————————————————————————————————————- |
    | Media Type | Image (JPEG or PNG, up to 5 MB), Document (PDF, Word, Excel, PowerPoint or TXT, up to 100 MB), Audio (AAC, AMR, MP3, M4A or OGG Opus, up to 16 MB), Video (MP4 or 3GP with H.264 and AAC, up to 16 MB). |
    | Media Source | URL: a public link that starts with https://. WhatsApp downloads the file from there. Media ID: media already uploaded to WhatsApp. |
    | Options > Caption | Image, video and document only. Up to 1024 characters. |
    | Options > File Name | Document only. Include the extension, so WhatsApp shows the right icon. |
    | Options > Reply To Message ID | Sends the media as a reply. |

    #### Send Template

    Templates are the only way to start a conversation, or to write to someone after the 24-hour window.

    | Field | Notes |
    | ————————— | ——————————————————————————————————————————————————————————————————————————– |
    | Template | Lists the approved templates of the sender number’s WhatsApp account, for example order_update (en). |
    | Body Parameters | One value per variable in the template body. For numbered variables like {{1}}, leave Name empty and keep the order. For named variables like {{firstname}}, fill in Name without braces, for example firstname. |
    | Options > Components (JSON) | Advanced: the full components array from Meta’s template documentation, for header media and buttons. Replaces Body Parameters when set. |

    To choose a template with an expression, write the name and the language code with a vertical bar between them, for example orderupdate|enUS. This is the same format n8n’s built-in WhatsApp node uses. If the template list is cut off, the dropdown says so, and you can use an expression for the others.

    #### Recipients without a phone number

    WhatsApp users can choose a username and hide their phone number. For these users, a message has a business-scoped user ID (BSUID) and may have no phone number. The Trigger outputs it as fromuserid.

    Send Text and Send Template have a Recipient Mode field:

    | Mode | What it sends |
    | ——————————- | ————————————————————— |
    | Phone Number (default) | The phone number in to |
    | Business-Scoped User ID (BSUID) | The BSUID in recipient, for example US.13491208655302741918 |
    | Phone Number and BSUID | Both. WhatsApp gives the phone number precedence |

    For a reply bot, set Recipient Mode to Business-Scoped User ID (BSUID) and Recipient BSUID to {{ $json.fromuserid }}. Send Media supports phone numbers only. For other message types, use Send Raw Payload (Advanced) with a recipient field.

    #### Mark as Read

    | Field | Notes |
    | ——————————- | —————————————————————————————————————— |
    | Message ID | The ID of a received message, for example {{ $json.message_id }} from the Trigger. |
    | Options > Show Typing Indicator | Also shows “typing…” to the customer until you reply, or for up to 25 seconds. Only use it when a reply follows. |

    #### Send Raw Payload (Advanced)

    An escape hatch for message types the other operations do not cover, such as interactive buttons or lists. You provide the message body in the WhatsApp Cloud API format, and messaging_product is added for you. Prefer the other operations when they fit.

    #### Download Media

    Downloads an image, document, audio or video that a customer sent you. WhatsApp only gives you a media ID, and downloading the file needs a Meta token that AutomiQ holds for you.

    | Field | Notes |
    | ———————— | ————————————————————————————————————————————– |
    | Phone Number | The number that received the media. |
    | Media ID | The ID inside the image, audio, document or video object of the received message, not the message ID that starts with wamid. |
    | Put Output File in Field | The name of the binary field for the file. Default data. |

    The file is limited to 4 MB. A larger file stops with a clear message. WhatsApp keeps received media for a limited time, so download it soon after it arrives.

    Webhook

    Get Status shows whether a webhook URL is set, the host it points to, whether a test URL is active, and the result of the last delivery. It never returns the URL path, the secret or the token.

    Use with AI Agents

    The node can be used as a tool by n8n AI Agents. A common setup: AutomiQ for WhatsApp Trigger > Mark as Read with typing indicator > AI Agent > Send Text with Recipient {{ $json.from }}.

    Trigger

    Setup

    1. In the AutomiQ portal, open Webhook and reveal the Webhook secret. Put it in the Webhook Secret field of your AutomiQ API credential. The trigger checks every delivery against it.
    2. Add AutomiQ for WhatsApp Trigger to a workflow and select that credential.
    3. Copy the trigger’s Production URL.
    4. In the AutomiQ portal, on the Webhook page, paste the URL and save.
    5. Activate the workflow.

    Why the URL is set by hand: AutomiQ has one webhook URL per account, and it can only be changed in the portal after a recent sign-in. There is deliberately no API to change it, because anyone who could change it could redirect every incoming message.

    Security

    Every delivery is verified inside the node, before your workflow runs:

  • The x-automiq-signature header must be the HMAC-SHA256 of the timestamp and the exact raw body, signed with your webhook secret.
  • The x-automiq-timestamp must be within 5 minutes, which blocks replayed deliveries.
  • Anything else gets 401 and does not start the workflow.
  • You do not need Header Auth, a Code node or the crypto module setting on self-hosted n8n.

    Events

    | Event | Starts the workflow for |
    | ———————- | ————————————————————– |
    | Messages (default) | Messages your customers send |
    | Statuses | Sent, delivered, read and failed updates for messages you sent |
    | Other Events | Other WhatsApp changes, such as template status updates |

    Use Messages for reply bots. Statuses have no sender (from), so an expression like {{ $json.from }} is empty for them.

    Output

    One item per message or status. Each item also includes raw with Meta’s original object, so no field is ever lost.

    Message:

    {
    	"event": "message",
    	"message_id": "wamid.HBgM...",
    	"from": "16505551234",
    	"fromuserid": "US.123456",
    	"name": "Jessica",
    	"type": "text",
    	"timestamp": 1792772499,
    	"text": "Hello!",
    	"phonenumberid": "100000000000001",
    	"displayphonenumber": "15550001234",
    	"waba_id": "200000000000002",
    	"raw": { "...": "Meta's original message" }
    }
    

    Depending on the message type, it also has mediaid, mimetype, caption and filename (media), replyid (button and list replies), latitude and longitude (location), emoji (reactions) and replytomessageid (when the customer replied to a message).

    Status: event: "status", messageid, status, recipientid, recipientuserid, timestamp, errors (for failed messages), plus the same number fields and raw.

    Options

    | Option | Effect |
    | ——————– | ———————————————————————————————————————– |
    | Include Portal Pings | Also starts the workflow for the portal’s Send test delivery. Off by default. Pings are always answered with 200. |
    | Raw Payload | Outputs the whole delivery as one item instead of one item per message or status. |

    Duplicates: WhatsApp can deliver the same event more than once. To skip repeats, add n8n’s Remove Duplicates node after the trigger, with Operation set to Remove Items Processed in Previous Executions and Value to Dedupe On set to {{ $json.messageid }}. For statuses, use {{ $json.messageid }}-{{ $json.status }}.

    Debugging with real messages

    Use the portal’s Test webhook URL to see real WhatsApp messages in a test run, without touching your live workflow.

    While a test URL is set, every delivery to your production URL is also sent to the test URL, with the same body, signature and token. The two go out in parallel, so a slow test URL never holds up production. The test URL:

  • stops receiving copies 1 hour after it was last set. Keep for 1 more hour restarts the hour.
  • needs a sign-in from the last 10 minutes to set or extend. Removing it does not.
  • receives nothing when no production URL is set.
  • Option A: n8n Cloud or any public n8n

    1. Open the workflow and copy the trigger’s Test URL (it contains /webhook-test/).
    2. In the AutomiQ portal, open Webhook and paste it as the Test webhook URL.
    3. In n8n, select Execute workflow, then send a WhatsApp message to your number within about 2 minutes.

    n8n catches one request per listen. Other copies get 404 and are logged as failed test deliveries, which do not count in the portal’s health figures.

    Option B: local n8n

    1. Expose n8n over https, for example with cloudflared tunnel --url http://localhost:5678.
    2. Use https:///webhook//webhook as the Test webhook URL, with the workflow active.

    Quick tunnel addresses change every time you start one.

    Before you test:

  • A test run executes the whole workflow, so your replies are sent twice: once by production and once by the test run. Deactivate the nodes that send messages in the editor (select the node and press D) and do not save.
  • Do not use public request bins such as webhook.site. Anyone with the link can see the message content and the x-automiq-token header.
  • Remove the test URL when you are done.
  • Errors

    The nodes translate the most common errors into plain messages. The original WhatsApp text and code are always shown in the details.

    | Message | Meaning |
    | ———————————————————- | ———————————————————————————— |
    | Invalid or revoked AutomiQ API key | Create a new key in the portal and update the credential. |
    | This AutomiQ account is suspended | Contact AutomiQ support. |
    | This phone number is not linked to your AutomiQ account | Pick a number from the Sender Phone Number list. |
    | Outside the 24-hour customer service window (131047) | Send an approved template instead. |
    | WhatsApp could not deliver the message (131026) | The recipient may not have WhatsApp, or cannot receive messages from this number. |
    | WhatsApp rate limit reached (130429) | Turn on Retry On Fail in the node settings, or slow the workflow down. |
    | The template parameters do not match the template (132000) | The number of Body Parameters must match the template’s variables. |
    | This template does not exist or is not approved (132001) | Check the name, the language and the approval status in WhatsApp Manager. |
    | The recipient phone number is empty | An expression resolved to nothing, for example {{ $json.from }} on a status event. |
    | … looks like an expression typed in Fixed mode | Click Expression on that field. |

    Compatibility

  • Tested with n8n 2.44.6.
  • Requires an n8n version that supports community nodes.
  • No runtime dependencies.
  • Resources

  • AutomiQ and the AutomiQ portal
  • Example workflows: auto-reply, download media that customers send and daily check for failed deliveries. Import them with Import from File in n8n.
  • n8n community nodes documentation
  • WhatsApp Cloud API: send messages
  • WhatsApp message templates
  • Changelog
  • Version history

    0.3.1: recipients without a phone number.

  • Send Text and Send Template: new Recipient Mode field, to send to a business-scoped user ID (BSUID) instead of a phone number.
  • 0.3.0: AutomiQ-native resources.

  • New resource Account: Get, Get Many Numbers and Get Number.
  • New resource Delivery: Get Many (with status and number filters), Get and Send Test Delivery.
  • New resource Webhook: Get Status.
  • Message: new operations Download Media (media a customer sent you, up to 4 MB) and Send Raw Payload (Advanced).
  • The template list now comes from the AutomiQ Gateway and says when it is incomplete.
  • Delivery Get Many stops with a clear message when the number filter is empty.
  • The trigger is unchanged.
  • 0.2.4: fixes from the n8n verification review.

  • Send Media: Caption and File Name moved into Options.
  • Mark as Read: Show Typing Indicator moved into Options.
  • Trigger: removed the setup notice from the node. The steps are in Trigger > Setup above.
  • 0.2.3: fixes from live testing.

  • Trigger: removed the Ignore Duplicates option. Current n8n versions do not keep what a trigger stores between deliveries, so it could not work reliably. Use n8n’s Remove Duplicates node instead (see Options).
  • Send Template: a Body Parameter Name of only digits, like 1, now counts as a numbered variable instead of failing.
  • Caption, File Name and Reply To Message ID accept numbers from expressions.
  • Shorter action names: Send text message, Send media message, Send template message, Mark message as read.
  • The example workflow no longer has a fixed webhook ID.
  • 0.2.1: README: debugging with the portal’s Test webhook URL.

    0.2.0: first full release.

  • AutomiQ API credential with a live key test and clear messages for invalid keys and suspended accounts.
  • AutomiQ for WhatsApp: Send Text, Send Media, Send Template (with a list of approved templates) and Mark as Read (with an optional typing indicator). Usable as an AI Agent tool.
  • AutomiQ for WhatsApp Trigger: in-node signature and timestamp verification, one clean item per message or status, and options for duplicates, portal pings and the raw payload.
  • Plain-language errors for the most common gateway and WhatsApp errors.

0.1.x: placeholder releases used to set up publishing.

License

MIT

From our network Other tools and sites we build