WhatsApp Trigger Does Not Receive Events & Webhook Subscription Conflict (Self-hosted n8n)

Environment

  • n8n Version: Latest self-hosted version
  • Deployment: Docker
  • Hosting Provider: Hostinger VPS
  • Operating System: Ubuntu
  • Domain: https://n8n-teep.srv1761962.hstgr.cloud
  • HTTPS/SSL: Enabled and working
  • WhatsApp Integration: Meta WhatsApp Cloud API (OAuth)
  • AI Node: OpenAI Chat Model

Problem Description

I am trying to build a simple AI-powered WhatsApp auto-reply workflow.
Workflow:

WhatsApp Trigger
      ↓
AI Agent
      ↓
OpenAI Chat Model

The AI Agent is never executed because the WhatsApp Trigger never receives incoming events.

What Works

  • WhatsApp OAuth credentials connect successfully.
  • OAuth connection test is successful.
  • HTTPS domain is accessible.
  • Meta WhatsApp Cloud API test number works correctly.
  • I can send template messages successfully from the Meta Developer Dashboard.
  • Meta Developer Dashboard shows incoming webhook events under Check Test Webhooks.

What Does NOT Work

When I click Execute Step on the WhatsApp Trigger, it enters:

Listening for test event

I then send a WhatsApp message to the test number.
The trigger never receives the event and keeps waiting forever.
No execution is created.
The AI Agent never starts.

Additional Error

When I publish or execute the workflow, I receive the following error:

The WhatsApp 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.

What I Have Already Tried

  • Recreated WhatsApp OAuth credentials.
  • Verified OAuth credentials are valid.
  • Tested both Test URL and Production URL.
  • Published the workflow.
  • Verified SSL certificate.
  • Confirmed Meta receives webhook events.
  • Rebuilt the workflow from scratch.
  • Tested with only a WhatsApp Trigger node.
  • Removed AI Agent from testing.
  • Verified the issue is not related to the OpenAI node.

Additional Information

I have another self-hosted n8n instance running on another Hostinger VPS.
It is possible that the same Meta WhatsApp App was previously connected to that instance.
I am unsure whether an old webhook subscription is preventing this new instance from registering its webhook.

Questions

  1. How can I identify which webhook is currently registered for my WhatsApp App?
  2. Is there a way to remove or replace the existing webhook subscription without creating a new Meta App?
  3. Does the WhatsApp Trigger automatically unregister old webhooks?
  4. Is there any command or API endpoint that I can use to manually reset the webhook registration?
  5. Are there any logs that I should check on my self-hosted n8n instance to diagnose why the webhook registration fails?

Expected Behaviour

Incoming WhatsApp messages should trigger the workflow immediately.

Actual Behaviour

The trigger remains in “Listening for test event” forever, and publishing the workflow produces the webhook subscription conflict error.
Any guidance would be greatly appreciated.
Thank you.

Two separate things need to be wired up for WhatsApp events to reach n8n, and a gap in either one causes silent drops:

1. Workflow must be published, not in test mode
The WhatsApp Trigger node has two different webhook URLs: a test URL (used when you click Execute step) and a production URL (used when the workflow is published). Meta only knows about one of them — whichever you registered. If you registered the production URL but then switched to Execute step mode to test, n8n is listening on the wrong URL. Keep the workflow published and monitor the Executions list instead.

2. The webhook subscription conflict
Meta allows only one webhook URL per WhatsApp Business Account. If you previously registered a webhook on the same phone number or business account (even from a different app or an earlier n8n setup), Meta keeps sending to the old URL. To fix:

  • Go to Meta Developer Console → your App → WhatsApp → Configuration
  • Under Webhook, verify your current n8n production webhook URL is the one listed
  • Under Webhook fields, confirm messages is subscribed
  • Check the phone number settings separately: Meta Developer Console → WhatsApp → API Setup → your phone number row → the webhook subscription can be overridden at the phone-number level

Quick diagnostic: Send a message to your WhatsApp test number, then immediately check your n8n Executions list (not the canvas). If you see a triggered execution that errored, the webhook is arriving but failing downstream. If the Executions list is completely empty, the webhook is not reaching n8n at all — which points to a Meta-side registration issue (wrong URL or stale subscription).

Hi @Hussain_Farooq, the important clue is the subscription-conflict error. I would split the diagnosis into three places and prove where the event stops.

  1. Meta side: confirm which webhook callback URL is currently registered for this WhatsApp App, and whether it still points to the old VPS / old n8n instance.
  2. n8n side: confirm whether the active workflow is using the production URL, not only the test listener. For production WhatsApp events, the workflow usually needs to be active and the production webhook URL must be the one Meta has.
  3. Evidence side: send one test message and check whether there is any execution in n8n. If Meta shows the event but n8n has no execution, the event is probably not reaching this instance.

I would not share App Secret, tokens, phone-number credentials, or full dashboard screenshots publicly. A redacted screenshot showing only the callback URL domain/path and the n8n execution list is enough for a first triage pass.