Hi!
I’m experiencing an inconsistency between the data received during app installation and webhook events for my user-managed Zoom app.
Current Behavior:
When a user installs the app (OAuth flow):
I receive the user_id: ‘Cbjk82LdRYeeMakV2Jo8eQ’
account_id is null/not provided
When receiving webhooks (e.g., meeting.started):
I receive the account_id: ‘HUIB2tWdSTmoEUMiRJzO5w’
The user_id is included as host_id: ‘Cbjk82LdRYeeMakV2Jo8eQ’
Issue:
For a user-managed app, I need to retrieve the user’s access token when processing webhooks. However, the webhook primarily identifies the user by account_id, while my stored OAuth credentials are mapped to user_id.
Questions:
Is this the intended behavior for user-managed apps?
What is the recommended way to map between account_id and user_id in this scenario?
Can webhooks include the same user identification method (user_id) as provided during OAuth installation?
Hey @Tamir
Thanks for your patience here.
Since you’re working with a user-managed app, you’re actually doing the right thing by mapping the user_id. This is because you need the user_id of the specific user who authorized the app.
When you listen for events, you’ll receive the account_id, user_id, and host_id. You receive both the host_id and user_id because events are only triggered for actions that happen within that specific user’s account.
To map account_id and user_id, you’ll be able to do so when receiving events. You’ll notice that the account_id will never change, nor will the user_id.
Thank you for your response! However, I think there might be a misunderstanding that I’d like to clarify.
You mentioned that “When you listen for events, you’ll receive the account_id, user_id, and host_id.” However, looking at my webhook payload, I only receive:
account_id at the root level
host_id in the object payload (which matches the user_id from OAuth installation)
More importantly, I have a fundamental question about my use case: How can I handle meetings where my authenticated user is a participant but not the host? The current webhook only tells me about the host, but not about other participants.
For example:
User A installs my app (I store their user_id and access token)
User B starts a meeting where User A is an invited participant
I receive a meeting.started webhook, but it only contains User B’s host_id
I have no way to know that User A (my authenticated user) should join this meeting
Is there a webhook event type that notifies about meetings where my authenticated user is an invited participant? Or is there another recommended approach for this use case?
If user B does not install your app, you won’t have a way to know that User A joined their meeting.
Because user A installed your app, you will receive events associated with User A’s account, so if user A starts a meeting on their end you will receive events; but for any action that occurs in user B’s account, you won’t receive those events because user B has not installed your app