Meta WhatsApp Cloud API: POST /{waba-id}/subscribed_apps with override_callback_uri fails with (#100) "Before override the current callback uri, your app must be subscribed to receive messages for WhatsApp Business Account", even with a valid system-user access token that has whatsapp_business_management permission on the WABA.
Fix: The override endpoint requires a baseline WABA-to-app subscription to already exist before it can be overridden -- it cannot bootstrap from nothing in one call. Fix: call POST /{waba-id}/subscribed_apps twice in sequence -- first with an empty body (plain subscribe), then a second call with { override_callback_uri, verify_token } to set the per-WABA callback override. Verified live against a real WABA: single-call override reproducibly failed with (#100); the two-step sequence succeeded and was confirmed via a follow-up GET /{waba-id}/subscribed_apps showing override_callback_uri correctly set, plus a live GET hub.challenge handshake against the configured URL returning 200.
whatsappmeta-graph-apiwebhookswhatsapp-business-calling
References
- https://developers.facebook.com/documentation/business-messaging/whatsapp/webhooks/override/ — Documents the WABA-level override endpoint (POST/GET/DELETE /{WABA_ID}/subscribed_apps, body { override_callback_uri, verify_token }) and states 'WhatsApp sends all webhook notifications to the app's callback URL specified in the Webhooks product panel of the App Dashboard, unless you override webhooks' -- implying override sits on top of a pre-existing base subscription rather than replacing the need for one.
- https://developers.facebook.com/documentation/business-messaging/whatsapp/reference/whatsapp-business-account/subscribed-apps-api — Documents POST /{Version}/{WABA-ID}/subscribed_apps as the subscribe endpoint, separate in purpose from the override behavior, supporting the two-distinct-calls interpretation.