Question
People commonly ask on the Zoom Developer Forum:
How can I consistently identify participants in a Zoom meeting (Linux Meeting SDK) even if they leave and rejoin? The IUserInfo persistentID seems to change on rejoin. Is there a truly persistent ID, and what exactly is “persistent” about persistentID?
Answer
With the Meeting SDK, there is no identifier that persists after a participant leaves and rejoins. The “persistentID” is session-scoped: it stays the same across platforms and when moving between the main meeting and breakout rooms, but it changes if the user leaves and rejoins the meeting.
If you need cross-session tracking, you must introduce your own identifier and/or use host-side features:
-
For stability within a session: - Use IUserInfo.persistentID. It’s stable across client platforms and when switching between breakout rooms and the main meeting, but resets on rejoin. - Reference: Meeting SDK Linux IUserInfo: https://marketplacefront.zoom.us/sdk/meeting/linux/class_i_user_info.html
-
If you control how participants join (you are the host or can configure the meeting): - Use a Customer ID in join parameters as your custom tracking ID. - Or enable registration and issue unique join URLs per registrant:
- Create meeting with registration: POST /users/{userId}/meetings (settings: approval/registration as needed)
- Add registrants: POST /meetings/{meetingId}/registrants
- Or generate unique invite links per attendee:
- meetingInviteLinksCreate endpoint (unique join URLs per attendee)
-
If you prefer not to use registration: - Use webhooks to track participants joining/leaving. For example, meeting.participant_joined includes a unique identifier you can ingest and map in your backend. - Note: You will only receive webhooks for meetings hosted by accounts that have authorized your app. If the meeting is hosted by another account you don’t control, you will not receive those webhooks.
-
Getting participant emails: - If users have installed your Zoom app and you have the required scopes, you can call the “Get Users” endpoint with a userId to retrieve profile details (including email). This requires proper authorization from those users.
Zoom Developer Forum Examples
Some examples of this question are:
