mirror of
https://github.com/chatwoot/chatwoot.git
synced 2026-06-16 21:06:22 +08:00
|
Some checks failed
Frontend Lint & Test / test (push) Has been cancelled
Publish Chatwoot EE docker images / build (linux/amd64, ubuntu-latest) (push) Has been cancelled
Publish Chatwoot EE docker images / build (linux/arm64, ubuntu-22.04-arm) (push) Has been cancelled
Publish Chatwoot CE docker images / build (linux/amd64, ubuntu-latest) (push) Has been cancelled
Publish Chatwoot CE docker images / build (linux/arm64, ubuntu-22.04-arm) (push) Has been cancelled
Run Chatwoot CE spec / test (push) Has been cancelled
Publish Chatwoot EE docker images / merge (push) Has been cancelled
Publish Chatwoot CE docker images / merge (push) Has been cancelled
Fixes https://linear.app/chatwoot/issue/CW-5692/whatsapp-es-numbers-stuck-in-pending-due-to-premature-registration ### Problem Multiple customers reported that their WhatsApp numbers remain stuck in **Pending** in WhatsApp Manager even after successful onboarding. - Our system triggers a **registration call** (`/<PHONE_NUMBER_ID>/register`) as soon as the number is OTP verified. - In many cases, Meta hasn’t finished **display name review/provisioning**, so the call fails with: ``` code: 100, error_subcode: 2388001 error_user_title: "Cannot Create Certificate" error_user_msg: "Your display name could not be processed. Please edit your display name and try again." ``` - This leaves the number stuck in Pending, no messaging can start until we manually retry registration. - Some customers have reported being stuck in this state for **7+ days**. ### Root cause - We only check `code_verification_status = VERIFIED` before attempting registration. - We **don’t wait** for display name provisioning (`name_status` / `platform_type`) to be complete. - As a result, registration fails prematurely and the number never transitions out of Pending. ### Solution #### 1. Health Status Monitoring - Build a backend service to fetch **real-time health data** from Graph API: - `code_verification_status` - `name_status` / `display_name_status` - `platform_type` - `throughput.level` - `messaging_limit_tier` - `quality_rating` - Expose health data via API (`/api/v1/accounts/:account_id/inboxes/:id/health`). - Display this in the UI as an **Account Health tab** with clear badges and direct links to WhatsApp Manager. #### 2. Smarter Registration Logic - Update `WebhookSetupService` to include a **dual-condition check**: - Register if: 1. Phone is **not verified**, OR 2. Phone is **verified but provisioning incomplete** (`platform_type = NOT_APPLICABLE`, `throughput.level = NOT_APPLICABLE`). - Skip registration if number is already provisioned. - Retry registration automatically when stuck. - Provide a UI banner with complete registration button so customers can retry without manual support. ### Screenshot <img width="2292" height="1344" alt="CleanShot 2025-09-30 at 16 01 03@2x" src="https://github.com/user-attachments/assets/1c417d2a-b11c-475e-b092-3c5671ee59a7" /> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> |
||
|---|---|---|
| .. | ||
| captain | ||
| channel | ||
| enterprise | ||
| helpCenter | ||
| inbox | ||
| integrations | ||
| specs | ||
| account.js | ||
| accountActions.js | ||
| agentBots.js | ||
| agentCapacityPolicies.js | ||
| agents.js | ||
| ApiClient.js | ||
| assignableAgents.js | ||
| assignmentPolicies.js | ||
| attributes.js | ||
| auditLogs.js | ||
| auth.js | ||
| automation.js | ||
| bulkActions.js | ||
| CacheEnabledApiClient.js | ||
| campaigns.js | ||
| cannedResponse.js | ||
| channels.js | ||
| contactNotes.js | ||
| contacts.js | ||
| conversations.js | ||
| csatReports.js | ||
| customRole.js | ||
| customViews.js | ||
| dashboardApps.js | ||
| endPoints.js | ||
| inboxes.js | ||
| inboxHealth.js | ||
| inboxMembers.js | ||
| integrations.js | ||
| labels.js | ||
| liveReports.js | ||
| macros.js | ||
| mfa.js | ||
| notifications.js | ||
| notificationSubscription.js | ||
| notion_auth.js | ||
| reports.js | ||
| samlSettings.js | ||
| search.js | ||
| sla.js | ||
| slaReports.js | ||
| summaryReports.js | ||
| teams.js | ||
| userNotificationSettings.js | ||
| webhooks.js | ||