Unable to send the Whatsapp event from test number

WhatsApp Trigger doesn’t receive incoming messages, although Meta sends the webhook successfully

Describe the problem/error/question

Hi everyone,
I’m facing an issue with the WhatsApp Trigger node in n8n. I’ve spent quite a bit of time debugging it, and it seems that Meta is successfully sending the webhook, but the WhatsApp Trigger never creates an execution.

Environment
n8n Version: 2.28.7
Installation: Local (Node.js)
Started using: n8n
Operating System: macOS
Tunnel: ngrok
WhatsApp Cloud API: Meta Test Number
Webhook: HTTPS (ngrok)

The WhatsApp Trigger never fires when I send a message from my personal WhatsApp to the Meta test number.

No execution is created.


What works

1. Webhook verification

Meta successfully verifies the callback URL.


2. Meta “Test” button

In:

Meta Developers → Webhooks → WhatsApp Business Account → Test

The POST request reaches my webhook successfully.

I can see the POST request in ngrok.


3. Incoming WhatsApp message

When I send “Hi” from my verified personal WhatsApp number to the Meta Test Number:

  • Message is delivered successfully (double grey ticks)
  • Meta shows the incoming webhook payload
  • ngrok receives the POST request

Payload received:

{
  "object": "whatsapp_business_account",
  "entry": [
    {
      "changes": [
        {
          "field": "messages",
          "value": {
            "metadata": {
              "phone_number_id": "1262521306937058"
            },
            "contacts": [
              {
                "profile": {
                  "name": "Venkat"
                },
                "wa_id": "919553532575"
              }
            ],
            "messages": [
              {
                "from": "919553532575",
                "type": "text",
                "text": {
                  "body": "Hi"
                }
              }
            ]
          }
        }
      ]
    }
  ]
}

This confirms that Meta is generating the webhook correctly.

WhatsApp Trigger behavior

Execute Step

If I click Execute Step, then send a message from the WhatsApp Business Account → Message subscribe->Test

:white_check_mark: Trigger fires successfully.


Active Workflow

If I activate the workflow:

:cross_mark: Sending the same WhatsApp message from test number, creates no execution.


Things I’ve already checked

  • Updated from n8n 1.97.1 to 2.28.7
  • Removed and recreated the WhatsApp Trigger
  • Created a brand-new workflow
  • Removed and recreated Meta webhook subscription
  • Verified callback URL successfully
  • Subscribed only to the messages field
  • Generated a new Meta access token
  • Verified Phone Number ID matches
  • Verified recipient number is added in Meta
  • ngrok receives webhook requests successfully
  • Tested both Test URL and Production URL
  • Restarted n8n multiple times

Strange behavior

When the workflow is activated, the WhatsApp Trigger UI often still highlights the Test URL, even after selecting the Production URL.

Also:

  • Executing the node listens on /webhook-test/...
  • Activating the workflow should use /webhook/...

However, regardless of which URL is configured in Meta, incoming WhatsApp messages never create an execution in the active workflow.


Question

Has anyone experienced this?

Is there:

  • a known issue with the WhatsApp Trigger in n8n 2.28.7?
  • any additional configuration required for the trigger to process incoming Cloud API webhooks?
  • any debug logs I should enable to determine why the webhook is ignored?

Any help would be greatly appreciated.

Thank you!

Please share your workflow

WhatsApp Trigger
      ↓
AI Agent
      ↓
WhatsApp Send Message

Share the output returned by the last node

Information on your n8n setup

  • n8n version:2.28.7
  • Database (default: SQLite):SQLite (default)
  • n8n EXECUTIONS_PROCESS setting (default: own, main):Default (own)
  • Running n8n via (Docker, npm, n8n cloud, desktop app):npm (installed globally and running locally via Node.js)
  • Operating system:macOS Sequoia (Apple Silicon M1 Air)

@jio_mobile

Try these steps in order:

  • The “Hard Reset”: Unpublish (Deactivate) your workflow, wait about 30 seconds, and then Publish (Activate) it again. This forced change often triggers a re-registration of the webhook on Meta’s side.
  • Verify WEBHOOK_URL: Since you are running locally with ngrok​, ensure that your n8n environment variables include: WEBHOOK_URL=https://your-ngrok-subdomain.ngrok-free.app/ If this isn’t set, n8n might be generating the “Production URL” in the UI using localhost, which causes a mismatch when Meta tries to hit your ngrok tunnel.

Does it work now?

The best solution is to create a separate, simple workflow that keeps your WhatsApp connection “fresh.”

How to build it:

  1. Schedule Trigger​: Set it to run every 6 or 12 hours (Trial and error for optimum result)
  2. n8n API Key​: Go to Settings → API in n8n and generate an API key.
  3. HTTP Request Node (Deactivate):
    • Method​: POST
    • URL​: https://<your-n8n-instance>/api/v1/workflows/<YOUR_WHATSAPP_WORKFLOW_ID>/deactivate
    • Authentication​: Header Auth (X-N8N-API-KEY)
  4. Wait Node​: Wait for 5–10 seconds.
  5. HTTP Request Node (Activate):
    • Method​: POST
    • URL​: https://<your-n8n-instance>/api/v1/workflows/<YOUR_WHATSAPP_WORKFLOW_ID>/activate
    • Authentication​: Header Auth (X-N8N-API-KEY)

By periodically cycling the activation state, you force Meta to re-verify and re-establish the webhook subscription, preventing it from going stale.