WhatsApp Cloud API messages not reaching n8n webhook (send works, trigger doesn’t fire)

Hi, I’m trying to build a WhatsApp bot using Meta WhatsApp Cloud API + n8n.
I’m stuck on a weird issue:
What works:
• I can send messages from n8n using the WhatsApp Send Message node :check_mark:
• Meta webhook “Send test” from the developers dashboard reaches n8n :check_mark:
• Webhook subscription shows messages enabled :check_mark:
• Callback URL is correct and uses production webhook URL :check_mark:
What does NOT work:
• When I send a real WhatsApp message to the test number
• n8n webhook trigger does NOT fire
• Nothing appears in n8n executions :cross_mark:
Setup details:
• Using WhatsApp Cloud API
• Webhook subscribed to: messages
• n8n webhook is active
• Meta says webhook is connected successfully
• Send test from Meta works, but real messages don’t hit n8n
What I already checked:
• Callback URL correct (production URL, HTTPS)
• Subscription includes messages
• Workflow is active in n8n
• No authentication on webhook
• No obvious errors in Meta dashboard
Confusing part:
Test webhook from Meta works instantly, but real WhatsApp messages never trigger n8n.
So it feels like Meta is not sending real message events to my webhook even though everything looks correctly configured.
Question:
What could cause Meta test webhook events to reach n8n, but real WhatsApp messages never trigger the webhook?
Is this usually:
• webhook routing issue?
• missing subscription detail?
• n8n hosting/reverse proxy issue?
• or something else in WhatsApp Cloud API setup?
Any help appreciated.

Describe the problem/error/question

What is the error message (if any)?

Please share your workflow

(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

Information on your n8n setup

  • n8n version:
  • Database (default: SQLite):
  • n8n EXECUTIONS_PROCESS setting (default: own, main):
  • Running n8n via (Docker, npm, n8n cloud, desktop app):
  • Operating system:

welcome to the n8n community @Ahmad_Naji
I would confirm that the real user message is being sent to the same WhatsApp Business phone number connected to that WABA and app, and that the app is subscribed to the messages field for that WhatsApp Business Account, not only passing the generic dashboard test. If those are aligned and no execution appears in n8n, the evidence points to Meta not emitting the real message event rather than n8n failing to receive it.

yes everything is connected properly, and it is the correct number, so the issue is meta not emitting the real message? what is the solution then?

@Ahmad_Naji
I recommend you verify your Meta app is subscribed to the messages field for the specific WhatsApp Business Account that owns the test number. The dashboard test only validates connectivity, not real message routing. Then perform a subscription reset by sending DELETE then POST to the WABA ID endpoint with subscribed fields set to messages. Finally confirm the phone number status is CONNECTED via API because a number in PENDING status will receive messages but will not emit webhook events. If these steps yield no execution in n8n, Meta is not emitting the real message event.

i already established that meta isn’t emitting the message. whjat is the solution. eveyrhting you mentioned is already done

good day @Ahmad_Naji
At this point I would not keep troubleshooting the n8n webhook, because n8n already documents a dedicated WhatsApp Trigger for message events, so the clean fix is to rebuild the inbound side with that trigger and OAuth2 credentials, then use the regular WhatsApp Business Cloud node only for outbound sends.

yes i can confirm all three are set correctly and still nothing

Two things to check that tripped us up: (1) Your phone number status must be CONNECTED in Meta Business Manager (check the actual phone number in your WABA settings, not just “webhook connected”) — if it shows PENDING or FAILED, Meta won’t send real messages to your webhook even if the test works. (2) Your webhook subscription needs to include the messages field specifically — we had webhooks_subscribed: true but messages wasn’t in the subscription array. Go to your WABA settings, find Webhook Configuration, and verify BOTH that the messages field is checked AND that your phone number status is CONNECTED. If the status is PENDING, you may need to re-verify your phone number or contact Meta support.