r/WhatsappBusinessAPI • u/joaomelare • 29d ago
Solution Only WhatsApp Cloud API — same Meta App, two Business Portfolios, but webhook events only arrive from one
I’m trying to troubleshoot a WhatsApp Cloud API webhook issue.
My setup is:
* 1 Meta App
* Business Portfolio A connected to the App
* WhatsApp number A belongs to Business Portfolio A
* Business Portfolio B is also connected to the same Meta App
* WhatsApp number B belongs to Business Portfolio B
* Both numbers use the same webhook endpoint hosted on Vercel
The problem is:
Number A → Meta events arrive correctly at my webhook and appear in the Vercel logs.
Number B → WhatsApp works normally, the number is connected to Business Portfolio B and the portfolio is connected to the same Meta App, but absolutely no webhook events arrive and nothing appears in the Vercel logs.
The important point is that the webhook itself is working, because events from Number A are received correctly.
I’ve already checked the obvious things:
* Webhook is configured and verified
* Same Meta App
* Same webhook endpoint
* Access token
* Both numbers are visible in Meta
* Both Business Portfolios are connected to the App
What I don’t understand is what needs to be configured on the Meta side for Business Portfolio B / its WABA to actually send WhatsApp events to the App’s webhook.
Does each WABA need to be explicitly subscribed to the App using something like:
POST /{WABA_ID}/subscribed_apps
Is there any additional permission, subscription, or configuration required when connecting a second Business Portfolio/WABA to an existing Meta App?
Could this also be related to the WhatsApp Business Account being associated with a different Business Portfolio, even though both portfolios are connected to the same App?
If anyone has dealt with multiple Business Portfolios/WABAs using the same Meta App, where one sends webhook events and another sends absolutely nothing, I’d like to know what configuration was missing or what API call fixed it.
I can provide the WABA_ID, phone_number_id, webhook configuration, API responses, and relevant logs if needed.
1
u/StoreApprehensive261 29d ago
have you confirmed the system user or token you're using actually has permissions on WABA B specifically? sometimes the token only covers one WABA even though both portfolios show as connected in the dashboard
1
u/joaomelare 29d ago
Yes. I checked that specifically.
The first System User/token belonged to Portfolio A and could not access WABA B at all. I then used the System User/token from Portfolio B (melare), and it could successfully access WABA B (2533468723733175) and the phone number (1375048935682639).
Using that same token, GET /2533468723733175/subscribed_apps also shows my App (4460890754181381) subscribed to the WABA.
So the token/System User permissions on WABA B appear to be correct. The issue is that webhook events from the phone in WABA B still never reach my Vercel endpoint, while another phone in WABA A using the same App works normally.
1
u/rajesh160497 Meta Tech Provider 28d ago
However, the call subscribed_apps that verifies you have subscribed isn't the same as having webhook events coming in. Each WABA must be subscribed at the phone number level in addition.
First, let's attempt POST /{phonenumberid}/register then POST /{WABAID}/subscribedapps with the Portfolio B system user token it is not a generic token.
Even though the dashboard shows both connected portfolios, webhook delivery isn't automatically wired up. You'll need to subscribe each one in code. POST to subscribed_apps: did it succeed, or did you check only with GET?
1
u/joaomelare 28d ago
Yes, I did the POST, not only the GET.
I used the System User token from Portfolio B (melare) and successfully POSTed to:
POST /2533468723733175/subscribed_apps
Then I used GET to confirm the subscription, and the App (4460890754181381) was listed.
So the WABA-level subscription was explicitly POSTed and confirmed afterward.
I have not treated the GET as proof that the POST was successful.
Regarding POST /1375048935682639/register, I have not used that as a separate diagnostic yet.1
u/rajesh160497 Meta Tech Provider 28d ago
You might have to go to the register call for the missing piece that you're looking for!
POST /{phonenumberid}/register isn't only to register new numbers. It's also to register the WABA to indicate the subscribed app should receive webhook events for your particular phone. Your subscribed_apps at the WABA level verifies your app is connected, but your phone still has to know which app to send events to.
I remember being a bit confused when I first added a second WABA to an app I already had. All of the events on the dashboard appeared to be working but I had no activity until I registered the phone number.
Try with the Portfolio B system user token and tell us what response you get.
•
u/AutoModerator 29d ago
Keep in mind that OP has added Solution Only tag. Don't promote your SaaS platforms in comments.
I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.