Hello guys,
I’m working on a workflow integrated with the WhatsApp Cloud API. At one step, I need to ask the user for a confirmation.
Right now, I’m sending a button reply with Yes / No, but the problem is that this response triggers the entire workflow again.
I’m looking for a solution similar to the “Send message and wait for response” node, but without using an external link.
Do you know any workaround for this? Maybe using the Wait On Webhook Call node?
Thanks!
Hey @MGV_Tech
if you need ‘Send message and wait for response’ node for WhatsApp i recommend considering this node
And in this Business Cloud you get a series of all the actions you require such as
So this might make your flow easier to maintain without any custom HTTP or webhook request, and this is pretty stable i also use this node. Let me know if you need any help with that!
Cheers!
@MGV_Tech You’re right that the “Wait On Webhook Call” node is the solution here.
Do you need help setting it up?
Thanks! The issue is that this node sends an external link to the user, and I want to avoid that.
I need the user to stay entirely inside WhatsApp (no browser/link step).
I’ve tested this approach before, but the results weren’t great. Several people mentioned that it breaks the conversation flow and leads to a poor user experience.
That’s why I’m looking for an alternative that works fully inside WhatsApp.
Yes! I’m using a WhatsApp Trigger at the beginning of the workflow, so it fires every time a new message arrives at my number.
How can I link this trigger/webhook with a Wait node?
@sergeys If you need to see anything from my workflow, I can share it. I appreciate the help!
Hey @MGV_Tech — you’ve hit the core limitation of webhook-based messaging: WhatsApp sends every message (including button replies) as a new, independent webhook event. There’s no native way to “pause” a running workflow and wait inline.
The real solution is stateful routing — store conversation state in a database and check it at the top of every trigger execution.
The pattern:
- WhatsApp Trigger fires on every inbound message
-
- First node: query your DB for the current state of this
chat_id (sender’s number)
-
- IF node: is there a pending confirmation for this chat?
-
- Yes → route to confirmation handler (check if reply = “Yes”/”No”, proceed accordingly, then clear the state)
-
- No → normal workflow flow
-
- When you send the Yes/No question, write a record:
{ chat_id, state: “awaiting_confirmation” }
-
- When the answer arrives, the next trigger reads that state and routes correctly
- Quick Postgres implementation:
-
sql
- CREATE TABLE conversation_state (
- chat_id TEXT PRIMARY KEY,
- state TEXT,
- context JSONB,
- created_at TIMESTAMPTZ DEFAULT now()
- );
- On each trigger:
SELECT state FROM conversation_state WHERE chat_id = ‘{{ $json.from }}’
- If
state = ‘awaiting_confirmation’ → handle the Yes/No and DELETE the row. Otherwise → proceed normally.
- Why Wait On Webhook Call won’t work here: it generates a new URL that requires someone to navigate to it — but WhatsApp button replies come back to your original webhook, not the wait URL. So the wait node never gets “resumed” by the button reply.
- The stateful DB pattern is how production WhatsApp bots handle multi-step conversations, and it scales cleanly to any number of steps. Happy to share a more complete workflow structure if useful!