Kingdom of KumarBack to home

Fix · WhatsApp Cloud API + n8n / Make

WhatsApp Cloud API webhook is active but no messages arrive

By Mayank Raj · Kingdom of Kumar · Published 5 November 2026

The problem

“The WhatsApp Trigger is configured for “Messages”, and the workflow is published, but incoming WhatsApp messages are not triggering any executions.”

andrecury, WhatsApp Trigger not receiving messages – webhook issue (n8n community forum, 4 Nov 2026)

Same problem elsewhere: Make community: active webhook, no incoming events

Short answer: Check the chain in order. The app's webhook subscription for whatsapp_business_account must be active, include the messages field and point at your production URL, not a test URL. Your app must appear in the WABA's subscribed_apps. The phone number must belong to that WABA. The callback must answer the hub.challenge check. The app must be in Live mode, and you must message the real number. The doctor script reads the first four with the Graph API and tells you which one fails.

When the trigger says it is active but nothing arrives, the break is usually on the Meta side, and the dashboard doesn't show it in one place. In n8n, running manual tests on the trigger can also replace or remove the app level subscription, which is why the forum advice is to stop testing and read GET /{app-id}/subscriptions first.

Download

Everything is free to use. The scripts are Python 3 standard library only and default to read-only or dry-run. Each one ships with an offline test on sample data.

Step by step

1. Stop manual trigger tests

While you debug, don't click test on the n8n WhatsApp Trigger. Its test cleanup can change the app level subscription you are trying to inspect.

2. Collect the IDs

App ID, WhatsApp Business Account (WABA) ID and Phone number ID from the Meta app dashboard, and the production webhook URL from your n8n trigger or Make webhook.

3. Set two tokens

META_APP_TOKEN is an app access token, used to read /{app-id}/subscriptions. META_SYSTEM_TOKEN is a system user token with whatsapp_business_management, used for the WABA calls. The script never prints them.

4. Run the doctor

Add --verify-token if you want it to probe your callback with a hub.challenge request.

python3 wa_webhook_doctor.py --app-id <APP_ID> --waba-id <WABA_ID> \
  --phone-number-id <PHONE_NUMBER_ID> \
  --expected-callback-url 'https://your-n8n/webhook/...' --verify-token '<token>'

5. Fix the first FAIL

Common results: the callback points at a /webhook-test/ URL or another workflow, messages is missing from the subscribed fields, or the app is missing from the WABA's subscribed_apps.

6. Re-subscribe if needed

If the app is missing from the WABA, re-run with --apply. It only calls POST /{waba-id}/subscribed_apps and never deletes anything.

7. Check the two things no API shows

Confirm the app is in Live mode, and send from a normal phone to the real business number, not the test number.

What this does not cover

Want this done for you?

Kingdom of Kumar runs it for $500/month, first automation live in 48 hours. Claude + Grok Bot + $500/month (my fee). Email me the task you hate doing every week.

Email me the task

Related: Internal workflow automation · All fixes