Unexpected repeated execution of WhatsApp webhook flow + no user response sent via 360dialog

Describe the problem/error/question

I’m integrating 360dialog’s WhatsApp Business API with n8n Cloud.
The goal: receive WhatsApp messages, process them, and respond back via the API.

However, I’m facing two persistent problems:

  1. The webhook flow is triggered multiple times, even though the user only sends one message – sometimes causing endless loops and overloads.
  2. Users do not receive my reply, even though the HTTP Request node returns 200 OK and a message ID.

What is the error message (if any)?

There’s no error in the execution itself. The HTTP response from the POST to 360dialog looks fine, but:

  • The user never sees the message.
  • n8n still receives multiple triggers per message.

In some cases, executions stack up so quickly that I can’t even open one before the next ones are triggered.

Please share your workflow

{
“nodes”: [
{
“parameters”: {
“httpMethod”: “POST”,
“path”: “incoming-whatsapp”,
“responseMode”: “onReceived”
},
“id”: “WebhookNode”
},
{
“parameters”: {
“conditions”: {
“boolean”: [
{
“value1”: “={{ !!$json.body.entry[0].changes[0].value.messages[0].text.body }}”
}
]
}
},
“id”: “IF_FilterMessageNode”,
“type”: “n8n-nodes-base.if”
},
{
“parameters”: {
“functionCode”: “return [{\n json: {\n to: $json.body.entry[0].changes[0].value.messages[0].from,\n message: "Thanks for your message!"\n }\n}];”
},
“id”: “Code_ResponsePrep”
},
{
“parameters”: {
“authentication”: “headerAuth”,
“url”: “https://waba.360dialog.io/v1/messages”,
“method”: “POST”,
“jsonParameters”: true,
“options”: {},
“bodyParametersJson”: “={\n "messaging_product": "whatsapp",\n "to": $json.to,\n "type": "text",\n "text": { "body": $json.message }\n}”
},
“id”: “HTTP_SendMessage”
},
{
“parameters”: {
“responseData”: “={{ { success: true } }}”
},
“id”: “RespondToWebhook”
}
],
“connections”: {
“WebhookNode”: {
“main”: [
[
{
“node”: “IF_FilterMessageNode”,
“type”: “main”,
“index”: 0
}
]
]
},
“IF_FilterMessageNode”: {
“main”: [
[
{
“node”: “Code_ResponsePrep”,
“type”: “main”,
“index”: 0
}
],
[
{
“node”: “RespondToWebhook”,
“type”: “main”,
“index”: 0
}
]
]
},
“Code_ResponsePrep”: {
“main”: [
[
{
“node”: “HTTP_SendMessage”,
“type”: “main”,
“index”: 0
}
]
]
},
“HTTP_SendMessage”: {
“main”: [
[
{
“node”: “RespondToWebhook”,
“type”: “main”,
“index”: 0
}
]
]
}
}
}

(Select the nodes on your canvas and use the keyboard shortcuts CMD+C/CTRL+C and CMD+V/CTRL+V to copy and paste the workflow.)

Share the output returned by the last node

[
{
“messaging_product”: “whatsapp”,
“contacts”: [
{
“input”: “49171xxxxxxx”,
“wa_id”: “49171xxxxxxx”
}
],
“messages”: [
{
“id”: “wamid.HBgMNDkxNzE0Nzg0MjQ2FQIAERgSRjg5Mzk1NkU0QUNEMjFDNTFDAA==”
}
]
}
]

Information on your n8n setup

  • n8n version: Latest (cloud)
  • Database (default: SQLite): Unknown (cloud-managed)
  • n8n EXECUTIONS_PROCESS setting (default: own, main): Default (cloud-managed)
  • Running n8n via (Docker, npm, n8n cloud, desktop app): n8n cloud
  • Operating system: Cloud instance (jeebly.app.n8n.cloud)

Hi there,welcome to the community, so from what i read from your post you’re facing 2 problem right, let’s discuss it 1 by 1

  1. your webhook triggered multiple times for 1 messages, this is actually normal because from what i know, for 1 message, the webhook sends not just the response with the message itself, like sometimes it also sends a webhook response when you read the message
    also there can be a possibility that when you send message as you, it will also trigger the webhook

so what i suggest here, for 1 message that triggers multiple webhook, try to see what is the difference between this multiple webhook, and find the right webhook that the response is what you really want, and based on that, create a validation to only allow the webhook with the actual response to continue to your next node workflow

  1. Users do not receive my reply ,
    i think if you’re triggering this with a webhook, you also need a respond to webhook node in the end
    and just make sure that the targeted message is targeting the right user and phone number id

hope it helps, and please give this a like and mark it as the solution if it answers your question

1 Like

Hi everyone,

I’m facing the same problem described in this thread. I’m using the WhatsApp API through 360dialog, and my incoming webhook in n8n is being triggered multiple times for a single user message.

From what I’ve observed, the repeated executions are not duplicates of the user message itself. Instead, they seem to be status updates for my outbound messages:

  • One execution when the user sends a message (messages payload).
  • Another execution when my reply is marked as sent (statuses payload).
  • Another execution when it’s delivered.
  • Another execution when it’s read.

These status updates are useful for analytics, but I don’t need to process them in the main workflow. However, right now every status update triggers a new execution, which is consuming my workflow quota extremely fast (executions grow exponentially for each user interaction).

My question:

What’s the recommended way to ignore these status update executions (while still responding with 200 OK to 360dialog so they don’t retry)? Ideally, I only want the workflow to continue when there is a real user message, not for statuses.

I’ve tried filtering later in the workflow, but even those filtered runs still count as executions on my plan. Is there any best practice for handling this scenario?

Thanks in advance!

Hi @fahmiiireza , Thank you very much. The “response to webhook” node with any body like “{ “status”: “ok” }” helped! it needed to be the first thing to do in the workflow (aufter the trigge), because, if you do not send immediatly a response, the worflow will be triggered several times.

Thanks!

1 Like

Glad that i can help you solved it mate!

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.