Unable to map meeting registrant id with live participant id

Participant email is now encrypted!

So as of this morning, it looks like you are now returning Participant emails encrypted? So our workaround isn’t working anymore because we can’t even match the original registrant to an email.

I didn’t see this change announced or in the change log. Can we be given a heads up before things change drastically like this? It breaks our solution for hundreds of customers.


1 Like

Hi @tommy,

Looks like these rules from the docs aren’t accurate anymore.

Here’s what I found with my testing this AM (anonymized real info):

  • Case 1: John Doe johndoe@domainone.com - using Zoom without logging in (iMac)

    • Registrant ID when registering: OwWzMgReRdu-aGu68QEflB
    • Participant ID when meeting completed: OwWzMgReRdu-aGu68QEflB
    • Participant name when meeting completed: John Doe
    • Participant email when meeting completed: Lgd_R8DXZNfTj2L0XzKZMiSUsN-kaKilevRS4S4ENa6g7Wssfyr6.H-GFuoxOBffzYFot@domainone.com
    • Conclusions
      • Same name is reported
      • Registrant ID & Participant ID are the same
      • Email is encrypted except the domain name (same as registrant)
  • Case 2: Lisa Cargill (lisa@domaintwo.com) - Using Zoom logging in Zoom with another email: Ben Salem ben@domainthree.com (iPhone)

    • Registrant ID when registering: _oGEOFoNTLqC9soQU_BGPf
    • Participant ID when meeting completed: JXJdhVT4TvKp6yMIZrj6nb
    • Participant name when meeting completed: Lisa Cargill
    • Participant email when meeting completed: 9Uj3SNO9k6jpH_VGilPyhovgoF0gzs_wjwqh4bMHvRh8qfrr.eelaTcsnFrfy-h7V@domaintwo.com
    • Conclusions
      • Same name is reported
      • Registrant ID & Participant ID are different
      • Email is encrypted except the domain name (same as registrant)
  • Case 3: Jerry Seinfeld (jerry@domainfour.com) - Using Zoom logging in with the same email on Mac)

    • Registrant ID when registering: ngyeNHW1S7mFnuyyqwlnmB
    • Participant ID when meeting completed: FjUFBPVhQs6ISiowyqaTDB
    • Participant name when meeting completed: Jerry Seinfeld
    • Participant email when meeting completed: TyWQUWetzsv6A3-fMWn8PQoTBT-JJo1Ubd1CBlNQBayhAcU.RTAhV8W_1XKgdaN0@domainfour.com
    • Conclusions
      • Same name is reported
      • Registrant ID & Participant ID are different
      • Email is encrypted except the domain name (same as registrant)
  • Additional conclusions:

    • All Participants’ name showed accurately.
    • Host shows up as a participant as well

I’m seeing the exact same thing as Fred. Even though the doc says Participant ID = Registrant ID when registration required, it doesn’t. That gives me no way of matching a registrant created through /meetings/{meetingId}/registrants to the participant delivered in meeting.participant_joined webhook.

What’s the current recommendation to do this? For my scenario, it has to be 100% reliable and secure, as I’m charging a fee when we detect someone has joined the meeting. It can’t be an email, or if I had your email I could just charge all my office visits to you.

Hey @fred,

Are you saying the email is encrypted in the Participant Joined Webhook and Get Participant Report API?

What you found in your testing is correct, although maybe not optimal for case 1 and 2.

Basically if you register for a meeting, and you are logged into a Zoom account when joining said meeting, your Zoom user ID overrides the registrant ID.

We will work on improving this or adding another field so there is always a mappable id. (ZOOM-125626) (ZOOM-181169)

CC @saurabh @alden @neecholai


Yes, I believe that is the issue. In short, what I need is to have the Registration ID that is returned from the Add Registration endpoint appear in the participant.joined webhook and Participants Report endpoint whenever a registration was made. We make all registration from the Add Registration endpoint. If no registration was made, I understand this field will not be available (anonymous or joined without registration).

Alden Gannon
Six Fish, LLC

Hi @tommy

As the emails are encrypted now, we are left with no workaround for identifying participants. It also breaks our solution and customers are affected.

Till the time there is no possible way to map participants, can you revert this change of email encryption as we were not given a heads up before this drastic change?


Hey @alden, @saurabh,

We are working on fixing the email encrypted issue asap:



Hey @alden,

Got it thanks! :slight_smile: We are working on a solution.


@tommy The change to the encrypted emails was reverted last Tuesday it looks like but we didn’t get notified, so our workaround broke again.

Do you have a reliable changelog we can consult for your API? I am not seeing the encryption of the email or the reversal mentioned in this changelog?

Hey @fred,

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.


1 Like

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?


Hey @FutureX,

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:


My question is why does this work in Webinar but not Meeting API?

@tommy here’s an example:


  • Meeting is registration required
  • 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)


  • 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.

1 Like

Hi @gagathos,

We are aware of this issue, and it will be fixed in one of our upcoming releases.


1 Like

Any ETA for this fix?


This needs to be fixed. It’s basically destroying half of our zoom automation and forcing us to manually review thousands of records.

Hey @BCELT @elearningevolve,

Our team is aware of this issue and they’re planning to address it as soon as they can.


1 Like

@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:

Participant joined { user_id: ‘16780288’,
user_name: ‘Sanjay --1171-- Uppal’,
id: ‘’,
join_time: ‘2020-10-09T12:52:09Z’ }
Participant left { leave_time: ‘2020-10-09T12:52:52Z’,
user_id: ‘16780288’,
user_name: ‘Sanjay --1171-- Uppal’,
id: ‘QvFTv8-ZTUGWQBw1qQMqSw’ }

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?

Hey @saj.arora,

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?

Let me know—thanks!