Title: WhatsApp Trigger error: “The WhatsApp App ID already has a webhook subscription” on self-hosted instance
Body:
Hi everyone,
I’m running a self-hosted instance of n8n via Docker behind a Cloudflare tunnel. I’m trying to test/activate a WhatsApp Trigger node, but I keep getting the following error:
Problem running workflow
The WhatsApp App ID [MY_APP_ID] already has a webhook subscription. Delete it or use another App before executing the trigger. Due to WhatsApp API limitations, you can have just one trigger per App.
Setup details:
Self-hosted n8n running in Docker
Public URL exposed via Cloudflare Tunnel (WEBHOOK_URL environment variable is set correctly)
Using Meta Developer App with WhatsApp API credentials
I do not have any other active workflows in n8n using this same WhatsApp App ID.
How can I properly clear or reset the webhook subscription on Meta’s side or in n8n so the trigger node can register properly? Any help or advice would be greatly appreciated!
The subscription lives on Meta’s side, not in n8n. So having no other active workflows doesn’t mean there’s no subscription, and that’s why deactivating things in n8n doesn’t clear it.
Check what’s actually registered:
GET https://graph.facebook.com/v21.0/{app-id}/subscriptions?access_token={app-id}|{app-secret}
Note the token format, it’s your app ID and app secret joined by a pipe. That’s the app access token and it catches people out.
Then delete it:
DELETE https://graph.facebook.com/v21.0/{app-id}/subscriptions?object=whatsapp_business_account&access_token={app-id}|{app-secret}
Or do it in the dashboard: your app then WhatsApp then Configuration, and there’s a Remove subscription button next to the callback URL.
Once that’s gone, activate the workflow and n8n will register its own subscription cleanly.
As for where it came from, the usual culprit is hitting Execute workflow at some point. Test mode registers a subscription too, and it doesn’t always get cleaned up when the test ends. After that every activation attempt hits the one-trigger-per-app limit against a subscription you can’t see from inside n8n.
Worth knowing going forward: that limit is Meta’s, not n8n’s, so you can’t have a test and a production trigger on the same App at once. Once it’s activated, leave Execute alone or you’ll be back here.
Your Cloudflare tunnel isn’t involved in this one by the way, this error happens before anything tries to reach your instance.