Webhook Partcipant joined event payload contains null value for participant id

Hi We are integrating Zoom conferencing into our system. We are using Webhook events to update our database parts. I have multiple questions regarding this.

  1. When Participant joined , payload doesn’t have email id.
  2. If the user belong to same account payload contains zoomId. But sometimes that is also coming as empty string

here is an example

{
  "event": "meeting.participant_joined",
  "payload": {
    "account_id": "U9D7NqiISd-cfmIMEFcx-A",
    "object": {
      "duration": 60,
      "start_time": "2019-07-25T05:47:03Z",
      "timezone": "UTC",
      "topic": "22",
      "id": "200262191",
      "type": 2,
      "uuid": "8v1eR64ORn2qwy4VGQkdOA==",
      "host_id": "_oLLD19CTTSTYAOrHCN9MA",
      "participant ": {
        "user_id ": "16779264",
        "user_name ": "OnePlus 5",
        "id": "",
        "join_time ": "2019 - 07 - 25 T05: 48: 33 Z"
      }
    }
  }
}

In this particular case how to know which user joined to that meeting?

  1. When a user who is not part of the same account joined into conference , payload doesn’t contain email id. how to know which user joined into conference?

Any help is much appreciated.

Hey @yln99517,

What do you mean by “email id”?

If the user is not signed in to a Zoom Account and joins via the Zoom Client, then the id will be blank.

Thanks,
Tommy

There are 2 cases.

case #1.

The user already signed in to zoom. When user gets meeting invitation, on clicking of that email link zoom native client is opening. The payload of “Meeting.participant_joined” often contains empty Id. In the given example payload , users is already signed in but id is missing.

case #2. Participant not part of the same zoom account.
When host adding participant(s) to meeting with emails ( not part of the account but different account) using REST api and zoom sending meeting invitation to that email. If that person joined into meeting, how to know which person joined into meeting?. The payload doesn’t contain any information. Below is payload for “meeting.registrant_created” and “meeting.participant.joined”. We don’t have any common parameter between these payloads.

{
"event": "meeting.registration_created",
"payload": {
	"account_id": "U9D7NqiISd-cfmIMEFcx-A",
	"object": {
		"uuid": "GZPbcCnhRUOztkoCp/uHkA==",
		"id": 140914160,
		"host_id": "oryUAqXYS6emaLDExSmFCQ",
		"topic": "INC000505",
		"type": 2,
		"start_time": "2019-07-25T15: 32: 34Z",
		"duration": 60,
		"timezone": "UTC",
		"registrant": {
			"id": "eqbEHRyPTGyYyyQCKuddkQ",
			"first_name": "Anonymous",
			"last_name": "Anonymous",
			"email": "ylndummy@gmail.om",
			"address": "",
			"city": "",
			"country": "",
			"zip": "",
			"state": "",
			"phone": "",
			"industry": "",
			"org": "",
			"job_title": "",
			"purchasing_time_frame": "",
			"role_in_purchase_process": "",
			"no_of_employees": "",
			"comments": "",
			"custom_questions": [],
			"status": "approved",
			"join_url": "*********************************"
		}
	}
}

}

Meeting.participant_joined.

{
"event": "meeting.participant_joined",
"payload": {
	"account_id": "U9D7NqiISd-cfmIMEFcx-A",
	"object": {
		"duration": 60,
		"start_time": "2019-07-25T15:33:31Z",
		"timezone": "UTC",
		"topic": "INC0000505",
		"id": "14091410",
		"type": 2,
		"uuid": "GZPbcCnhRUOztkoCp/uHkA==",
		"host_id": "oryUAqXYS6emaLDExSmFCQ",
		"participant": {
			"user_id": "33555456",
			"user_name": "yln dummy",
			"id": "qw8myrvZSwGTg5FAkRA5og",
			"join_time": "2019-07-25T15: 4: 54Z"
		}
	}
}

}

-thanksPreformatted text

Hey @yln99517,

For Case #1:

I will look into why the id is missing when the user is already signed in.

For Case #2:

The only way to identify a participant that joins your meeting that’s not apart of your Zoom account is the user_name field. You can even see the Retrieve Past Meeting Participants only returns the participant UUID which is the user_id on the meeting.participant_joined webhook and the user_name field.

Possible duplicate:

Hey @tommy we are seeing events without a user_id in participant, yet the user is indeed logged in. This happened to about 4 users on a call. Is this a Zoom bug?

{
  "event": "meeting.participant_joined",
  "payload": {
    "account_id": "SG7cyaTzRoqSEyRnb4Djeg",
    "object": {
      "duration": 30,
      "start_time": "2019-11-07T14:31:11Z",
      "timezone": "America/New_York",
      "topic": "xxx",
      "id": "123980138",
      "type": 3,
      "uuid": "AJODMKwiRxCzNUSg+Oi5Iw==",
      "participant": {
        "id": "",
        "user_id": "16796672",
        "user_name": "xxx",
        "join_time": "2019-11-07T14:34:14Z"
      },
      "host_id": "1fdj-Wn4Q7avbyg52ddQ0w"
    }
  }
}

Hey @jimig,

Are the 4 users who user_id’s are blank joining via the Web Client or Native Client? Can you share what devices, browsers, and versions of the Zoom Apps?

Also if you could private message me the full payload with all the data present I can take a deeper look.

Thanks,
Tommy

It’s been 6 months since the last message in this thread and I see the same issue.

  1. I create a meeting with registration required
  2. I register participants (just registered participants, not zoom users)
  3. Registered participant joins using their own unique join url
  4. The participant_joined or participant_left webhooks have empty string as payload.object.participant.id. The participant object on the webhook payload has user_id set though, which I’m not sure what user_id that is.

Is this a bug?

@tommy This is only a problem for meeting.participant_joined and meetingh.participant_left webhooks. webinar.participant_joined and webinar.participant_left work correctly and contain payload.object.participant.id value, which matches the registered participant id.

Unfortunately meeting webhooks are way more important to us than webinar webhooks.

I just noticed something in that webhook documentation.

“If participant joins without logging into Zoom, the value of this field will be blank.”

How can I then track registered guest participants? The participant is registered and joins via registered join link, therefore registrant doesn’t have to be logged in to Zoom to join. Why is the id field blank if someone is not logged in to Zoom.

Is there any chance that meeting.participant_joined/left were created before support for registered guest participants was developed on Zoom and these webhooks have not been updated accordingly to add registrant id?

Hey @bartosz.blimke,

You can use the email to track.

Thanks,
Tommy

@tommy email is not available in the meeting.participant_joined webhook either.
For the time being I use user_name available in the webhook which is first name plus last name, but this only works if everyone in the meeting has different name.

1 Like

Hey @bartosz.blimke,

Okay, glad you are able to use the user_name. We will work on making a consistent registration > participant tracking flow.

Thanks,
Tommy

Is there an estimated resolution timeframe for this issue? This is a huge issue for us - not being able to associate the meeting webhook payload.object.participant.id with the registration’s participantId .

Hey @smachado,

Here is how the logic currently works:

Screen Shot 2020-07-16 at 4.44.11 PM

What specific issue are you having?

Thanks,
Tommy

Thank you Tommy for replying.

We see the following behavior-

  • Registered attendee with webinar using API /meetings/{meetingId}/registrants
  • App captures registrant_id and joinURL from the response.

Later attendee joins the meeting by clicking the joinURL link from the earlier payload,

  • App receives webhook -Meeting Participant Joined
  • payload.object.participants.id in the payload does not match registrant_id received during registration. There is no information that can be used to associate the attendance payload to the registrant.

Interestingly, the issue is only with meetings; works perfectly for webinars ie. for webinar payload.object.participants.id == registrant_id

Hey @smachado,

Can you share one of the ids that did not match up so I can look into the issue?

Thanks,
Tommy

Looks like the issue is that if an attendee has logged into their private zoom account and click on the JoinURL provided during registration, to join the meeting, the payload.object.participants.id does not match the registrant_id; the id returned seems to be associated with the zoom account of the participant.
If the participant is logged out if the zoom account/does not have a zoom account, the payload.object.participants.id matches the registrant_id.
I will provide the info you request in a subsequent post. Thanks.

Hey @smachado,

I was thinking the same thing. If the user logs into their own Zoom account, it will be their own userId.

I will talk to the team about this edge case.

Thanks,
Tommy

if user_name is the only reliable way of matching users (even though two users can have the same name “text”) what happens if they rename themselves in the middle of a meeting ? Is there a notification to tell me they changed their name ?

most of the time the id field of the participant seem to be reliable, as the user_id changes regularly especially if they enter a waiting room, and then get admitted to the meeting. However there are payloads where the id field is missing or empty.