fix: Setup webhooks for manual WhatsApp Cloud channel creation (#13278)

Fixes https://github.com/chatwoot/chatwoot/issues/13097

### Problem
The PR #12176 removed the `before_save :setup_webhooks` callback to fix
a race condition where Meta's webhook verification request arrived
before the channel was saved to the database. This change broke manual
WhatsApp Cloud channel setup. While embedded signup explicitly calls
`channel.setup_webhooks` in `EmbeddedSignupService`, manual setup had no
equivalent call - meaning the `subscribed_apps` endpoint was never
invoked and Meta never sent webhook events to Chatwoot.


### Solution
Added an `after_commit` callback that triggers webhook setup for manual
WhatsApp Cloud channels
This commit is contained in:
Muhsin Keloth
2026-01-19 14:12:36 +04:00
committed by GitHub
parent b2ffad1998
commit 7e4d93f649
5 changed files with 65 additions and 13 deletions

View File

@@ -6,7 +6,8 @@ describe Whatsapp::WebhookSetupService do
phone_number: '+1234567890',
provider_config: {
'phone_number_id' => '123456789',
'webhook_verify_token' => 'test_verify_token'
'webhook_verify_token' => 'test_verify_token',
'source' => 'embedded_signup'
},
provider: 'whatsapp_cloud',
sync_templates: false,
@@ -261,7 +262,8 @@ describe Whatsapp::WebhookSetupService do
'phone_number_id' => '123456789',
'webhook_verify_token' => 'existing_verify_token',
'business_id' => 'existing_business_id',
'waba_id' => 'existing_waba_id'
'waba_id' => 'existing_waba_id',
'source' => 'embedded_signup'
},
provider: 'whatsapp_cloud',
sync_templates: false,