Zoom App SDK "participantUUID" inconsistent despite same account

Meeting SDK Type and Version
@zoom/appssdk": "^0.16.10

Description
I want to create a list of “expected” users and use onParticipantChange and getMeetingParticipants to trigger checks of current users against some “master” list I will create.

I was hoping to have access to Zoom account email address or something for each participant, but understand if that’s not available. But my issue is a soft error:

Error?
Neither participantId nor participantUUID is consistent. When a logged-in user joins a meeting, leaves it, and joins back, despite the user being the same exact user, the data provided in these fields never matches across both “Join” events or the getMeetingParticipants result.

I expected at least one of these properties to be consistent, considering the Zoom Meeting API says:

id : The participant’s universally unique ID. This value is the same as the participant’s user ID if the participant joins the meeting by logging into Zoom. If the participant joins the meeting without logging into Zoom, this returns an empty value.

and

participant_user_id: The participant’s universally unique ID (UUID):

  • If the participant joins the meeting by logging into Zoom, this value is the id value in the Get a user API response.
  • If the participant joins the meeting without logging into Zoom, this returns an empty string value.

Of course, I could just be looking in the wrong place, considering the SDK method’s return data’s property names don’t actually match the API’s property names, and are far fewer than the API returns.

Troubleshooting Routes

Have tried:

  • Logging in via join link while logged out (does not provide “empty value”)
  • Logging in via join link while logged in
  • Logging in via meeting id and password while logged in

How To Reproduce

Simple code to log the results in the zoomapps-sample-js repo after configuring the SDK in /public/index.js :

zoomSdk.onParticipantChange(async (data) => {
            console.log('participant change -> ', data);
            try {
                const data = await zoomSdk.getMeetingParticipants();
                console.log('participants -> ', data);
            } catch (err) {
                console.log({ err });
            }
        });

Hi @ptri7devs,

I was trying to do something similar, but had to settle for identification by name.

You can get your participants emails, using Zoom REST API endpoint (GET /metrics/meetings/{meetingId}/participants; see this) but only if those 2 conditions are met:

  • They are logged in zoom, and not just “joining the meeting”
  • Your users have a business plan