Question
People commonly ask on the Zoom Developer Forum:
How can I identify meeting participants (ideally by email) in real time when using the Linux Meeting SDK bot that captures raw audio? Using IUserInfo->GetUserName() isn’t reliable because names can duplicate. Can I map live participants to their Zoom emails, including external guests? What IDs from the Meeting SDK (GetUserId vs GetPersistentId) should be used, and how do they relate to webhook or API IDs?
Answer
There isn’t a single SDK call that returns participant emails for everyone (especially external guests). Developers typically combine SDK events/IDs with Zoom OAuth or registration data to map users to emails:
- Require OAuth consent (user:read) from each participant
- Have each participant install your app to grant the user:read scope.
- During the meeting, use SDK user IDs to correlate to the users who authorized, then use the Get a User endpoint to fetch their email.
- Notes:
- This requires every participant to complete the OAuth flow.
- In the SDK:
- GetUserId() returns an ID valid only for the current meeting session.
- GetPersistentId() is intended to be stable across meetings for the same user and is the better choice for cross-meeting mapping. One developer reported seeing different persistent IDs across meetings; validate this behavior in your environment.
- Use meeting registration
- If you can enforce registration for the meetings, capture registrant_id (e.g., from the meeting.participant_joined webhook).
- Then call the Get a Meeting Registrant endpoint to retrieve the registrant’s email.
- This works for external guests if they register.
- Consider a managed solution - A third-party API like Recall.ai provides meeting bots and calendar integrations (Google/Outlook) that help tie meeting participants to emails without you having to build and maintain the full mapping stack yourself.
Zoom Developer Forum Examples
Some examples of this question are:
