How can we prevent duplicated participants in meeting?

Note: why are links not allowed?? It literally asks in the post writing prompt to use links for context.

We are using the Meeting SK for web (developers DOT zoom DOT us/docs/meeting-sdk/web/client-view/meetings/) to have users join meetings started by our Zoom users (using the personal meeting number). These users (the ones starting the meetings) all run Zoom Pro licenses.

The way it works is one of our Zoom users starts the meeting as a host, then guests join that meeting via the web client, using a link in our website. We use the join() method described in the documentation linked above. All this works perfectly fine.

The problem is that when we look at those meetings usage reports, there are many duplicated users, we suspect because some might be reloading the page that hosts the web client, or joining and leaving, multiple times, etc. These meetings host about 30 people, but in the reports we see many times over 100 participants (we know there haven’t been that many participants in reality, it’s just duplicated entries).

We’re trying to make an implementation to prevent these duplicate participants. Based on what we’ve found online, it looks like we could achieve that theoretically by using the Zoom API to consult the list of participants and manage their sessions when they join to prevent duplicates, but we can’t figure out how to do that with the tools available to us.

We have created a Server-to-server OAuth app using this guide (developers DOT zoom DOT us/docs/internal-apps/s2s-oauth/), for which we have managed to generated an access token correctly. But now, we can’t find a way to retrieve a list of participants, or to remove/delete participant from a meeting (if for example a participant joins and we detect they have already joined, we could remove their previous session).

The documentation of the S2S OAuth API doesn’t seem to show a way of listing or removing participants, or we can’t find it: (developers DOT zoom DOT us/docs/api/meetings/ma/#tag/meetings)

We’ve seen mentioned in older posts the idea of using user registrants (instead of the participant approach), but in theory a registrant and a participant are different things right? Someone can register for a meeting and not actually attend/participate/join. Also our join process doesn’t require registration, we control who can join programmatically in other ways.

If someone could point us in the right direction we’d really appreciate it! Maybe we’re going about all this with the wrong approach.

Hi @bcntechs
Thanks for reaching out to us! The reason why you are getting duplicates is the one you stated, when a participant joins multiple times or when there is a page reload.

Have you tried using any of our Reports endpoint?

Or even any of our Dashboard endpoings:

But no, we do not have a way to remove participants from a meeting via API

Hi @elisa.zoom,

Thank you very much for your reply. The second link looks like could be useful to at least detect if the user has an existing session in the meeting. With the first one, would you mind explaining how we could use the reports in this context? It looks like the reports endpoint works for past meetings, not ongoing, right?

And in general, what strategy would you recommend to prevent these duplicates? Even if we detect that a user already has an ongoing session in a meeting, since we can’t end that session for them, how do we prevent the duplication? Is there a way to make them “re-join” an ongoing session? I can’t seem to find anything like that. Or how would you recommend approaching this?

Again thanks for your help with this!

Hi @bcntechs
You are correct, the report endpoint works for past meetings, so I suggested this endpoint just so you can use it once the meeting has ended, to identify duplicates.

I do not think there is a way to make them “re-join an ongoing session”, because there is no way to prevent participants from leaving the meeting by choice or if they have network issues, so once the join again, they will be joining the same meeting but it will generate duplicates.

I am thinking that you could also look into webhooks, you can be listening to the meeting.participant_joined event and use the payloads to track who joins the meeting and potentially identify a way of tracking if this event gets triggered twice by the same participant, which might be helpful but you would have to make sure that participants join with the same user_name because a new participant_id gets generated every time participants joins meetings

Let me know what you think

Hi @elisa.zoom,

Thank you very much for your message. We have looked into the link that you sent, and while we’re able to see if someone already has an ongoing session (already joined the meeting), we can’t figure out how to prevent the duplicates. How does Zoom do it? There has to be a way of preventing duplicates right? We didn’t have duplicates before using the Meeting SDK, and many users joined using the web client. What is the right approach for what we’re trying to accomplish? That is, having our own embedded web client without having duplicated participants.

For more context, based on what users are reporting, we believe the duplicates happen when they get kicked out of a meeting and see this message:

Translation: Unknown error. There has been an unknown error. Try refrershing this page to join the meeting again.

Then of course users refresh the page, and the duplicate happens. How does Zoom avoid the duplicates?

By the way, we have not been able to identify what’s causing this errors, and Zoom doesn’t provide logs for them, I have another post regarding that here: Unknown error while joining or during meeting

Hello @elisa.zoom ,

Would you have any updates? We really need to figure out a solution, especially for the Unknown Error mentioned in my other post. It’s causing lots of frustration to our users being kicked out of meetings and we don’t have a way to replicate or troubleshoot that, Zoom provides no logs from those errors (at least not that we can access).