Apologies for not mentioning this change. It was a hotfix on the product side so it was not in the developer platform release life cycle. We will work on communicating all changes that affect the APIs even if they originate outside of the developer platform.
Same issue. I’m trying to reliably track users as they pay a subscription fee for our service.
I’m noticing the same issues as the other users have posted.
I register the user via the API and log their registrant_id. However if the user logs into Zoom with a different email address using the join URL I get a different participants[0].id in the resulting webhook.
The join URL should always log them in with the original registrant_id no matter what email they use to connect to Zoom. This seems very basic to me otherwise there is no way to track users.
You can sort of use email but what if the email the user decides to use isn’t in your database?
Thanks for sharing, yes this is the case we are working on improving. Right now the constant is the email they register with, it will pass through to the Get participants APIs:
Create registration, gets registration_id back as uAS6dH4LR128h7uNu9527A
Join as logged in user using join link from registration, get payload.object.participant.id as rEhKojUMTK2fBn_lOFDuTQ
Join without logging in, incognito, via browser (but using join_link from registration) payload.object.participant.id is blank
Doing a meetings/###/registrants call returns uAS6dH4LR128h7uNu9527A as the id
The user in the meeting has the name from the local zoom client in both cases (even though zoom client is logged out)
Webinar:
Registrant comes back with ID of McxymcfPTzukKloK1C7Frw
Joining using a logged in zoom session particpant.id of McxymcfPTzukKloK1C7Frw
Joining using an incognito participant.id of McxymcfPTzukKloK1C7Frw
In Webinar, it takes the user name from Registration that was sent to Zoom
The way webinar works seems to be the correct way. This appears to be a bug, instead of a feature request. My guess is that the logic is messed up that enforces the rules for what shows up in the ID field. The documentation is the same for both webinar and meeting webhooks, but they behave different. In no cases does the original registrant ID get passed to the meeting webhook, where it should when there is registration required for the meeting.
@will.zoom Today I was playing around with webhook in order to do the mapping as well and I ran into something interesting. When a participant leaves the id in the webhook is the registrant id but when they join, id is blank: This is the payload I have:
Can you please tell me what is the reliable way to get the id to show up for join? Also if someone is logged in…is the id field still going to be there or will it change?
Did you join and then immediately leave the same meeting right away? I’m wondering if this might be a result of the speed with which you joined and then left. Do you experience this if you wait a few seconds before leaving?
That’s good to know but this endpoint requires Business or a higher plan and its rate limit is Heavy. It will be too costly to fetch the registrant_id from here.
Any ETA for adding the missing registrant_id for a non-logged in user in the participant_joined webhook?
Thanks for the heads-up but the issue is still there as this API corresponds to a past meeting report and not the current active meeting. Is it possible to include the registrant_id in the participant joined hook so that it’s possible to get this value in realtime during the meeting?
We’re working on a longer term solution that makes this ID more accessible. While these endpoints offer some workarounds for now, we will continue to advocate for adding this to the Participant Joined webhook. I appreciate how being able to get this in real time would be most beneficial.
@will.zoom Do you have an ETA for this? We’re facing the same issue that @elearningevolve pointed out above.
Also, it seems that the registrant_id is not being returned for all meetings through the Get Meeting Participant Report API. Just tested it on our side and we can only get them for 1 out of the 4 meetings we looked into. Any reason for that?