Participant Joined Webhook – Mapping user_id to registrant_id

I’d like some clarification on the intended function of “user_id” in the participant joined webhook payload.

From the list registrants endpoint, the “registrant_id” seems to be a string, whereas “user_id” is an int. So, are these two fields not the same? Looking in the Zoom Forum History, @tommy I think you were saying here (Mapping join and leave of participants webhook events with users on our application) that these ought to be the same.

So… if user_id doesn’t map to that… does it really map to anything?

Which App Type (OAuth / Chatbot / JWT / Webhook)?

Which Endpoint/s?
Webhook – Participant Joined
OAuth V2 – List/Add Participants

Thanks for your time in looking at this!

Assuming all of our users are logged out: If user_id and registrant_id are not matching, the only way I can see to match registrants against joiners is by doing a string comparison on the name. Is that correct?

Hey @ankurk,

Please see if my post here answers your question:


Thanks for your reply Tommy, hi! In your post you’re talking really about a logged in user and their Zoom user id overwriting the registrant_id in the “id” field of the payload.

My query is a bit different:

We’re trying to track the un-logged-in users who join via their registration link. At this time, it looks like the only way to do that is to match on user_name.

The registrant_id we get back when we register them (or by list participants) is never again shared with us in the webhook payload. Is that the intended API behavior?

Hey @ankurk,

The registrant_id should be the id in the participant webhooks:

Screen Shot 2020-04-15 at 5.20.07 PM

Are you seeing something different for the id field?


Our main goal – we’re trying to track un-logged-in users. So, the id field is blank unfortunately. I would looooove to be able to get the registrant_id there always!! Wish it was so…

It’s pretty weird that we have no way of identifying our registrant’s joining with this webhook if they are logged out but join with their registration link.

Hey @ankurk,

If you are seeing that, it is a bug.

If a participant joins via registration URL and is not logged in, the id will be the same as their registrant_id.

Please see the description in the screenshot of the docs I sent ^


Hey Tommy, I can confirm:

When a participant joins with their registration link, and they are not logged in, the id field in the participant webhook is blank.

So… it is a bug. What now?

Hey @ankurk,

Yes, seems like a bug. Can you private message me a few meeting ids so we can take a look?


1 Like

Yes, I am waiting for the same situation. I need registerrant_id information via webhook.

Thanks @gamebooker,

We are looking into the issue and will get back to you. (ZOOM-155849)


Hi, any progress on this issue?

We also have use-case where we need registrant_id to track if people showed up.

1 Like

Hey @trafo,

Please email your meeting number to and a description of your issue.


Hi @tommy,

We have the exact same problem here.

Our workflow is as follows:

  1. We add meeting registrants via the Zoom API with this call:
    POST /meetings/{meetingId}/registrants

  2. From the response we get the registrant_id.

  3. We then listen to the participant_joined webhook in order to know when the user we registered in step 1 joins the meeting.

  4. From the payload of the webook call we get 2 IDs:

  • user_id: As per the documentation This is the participant id and has no correlation whatsoever with the previous registrant_id we got in step 1, so we can’t use it to correlate the joining user with the registrant.
  • id: As per documentation this can assume 3 different values:
    registrant_id: If the user is logged in AND joins via a private URL from a previous registration
    userId: If the user is logged in AND wasn’t registered, then this is their Zoom unique userId
    blank: If the user is not logged in
  1. From what we get on point 4, we are only able to correlate the participant with the previously registered user IF AND ONLY IF the user is logged in. If the user is not logged in the id field we get in step 4 is always blank.

Having said this, how can we correlate a participant that joins with a private URL with the previously created registrant if the user is not logged in?

You can simply include the registrant_id as a separate/new field in the webhook payload that assumes the registrant_id value for participants that join with a private url, or is blank if participants weren’t registered beforehand.

Hi @dsousa, this is a great suggestion. We’re working on finding a solution to map user identity to registration. We’re not actively working on this, as we’re currently focused on security & privacy reviews, but we’ll add this suggestion into our planning.

We have the same exact issue that @dsousa highlighted.

@michael.harrington could you please get this feature added in as soon as possible?

Hi @neecholai Our engineering & product teams are working exclusively on Security & Privacy reviews, but we’ll do our best to prioritize this after our 90 day feature freeze :slight_smile:

Same here… registrant_idn obtained on the /meetings/{meeting_id}/registrants service does not map to the participant_joined data that is available when users join the webinar…

Hey @develapweb,

We are aware of an edge case here and are working to fix as soon as possible. (ZOOM-167980)


1 Like

Hi everyone, we’re having the same issue.

Any update on the fix ?


This issue should be fixed in Zoom Client release 5.1.1.

Stay updated here: