Full participant data for webinars for a user-level OAuth App

Problem we are facing

  • We are a CRM company with event management tools. Our clients want an easy way to register people for Zoom meetings/webinars directly from our product and then have participant data sync back after the meeting is over. They need to be able to authenticate at the user level each time they want to link a webinar or a meeting to an event record in our system.
  • We can get the participant data just fine for meetings using the “get past meeting participants” endpoint, but we cannot do it easily for webinars.

Solution we’d like

  • We would like a way to get the basic data for webinar participants in an endpoint accessible through a user-level Oauth App.

Describe alternatives you’ve considered

  • The “get webinar participants report” endpoint would work fine, but it is only accessible for account level Oauth Apps so we can’t use it.
  • The “get webinar absentees” endpoint tells us who didn’t show up to the meeting, so we could extrapolate who did show up by comparing it to the “get webinar participants” endpoint. But the problem is that if someone called into the meeting from their phone without clicking the link from their email as well, than their registration shows up on the absentee report. We also don’t get to see participants who didn’t register in advance. Basically, working with the absentees endpoint to extrapolate participants is a poor substitute for a true “get webinar participants” endpoint.

Additional context

  • We are trying to build an integration that will be used by thousands of organizations that use our CRM and Zoom for Virtual Meetings. Our clients are major non-profits and political organizations and if we can get this integration to work, we know it will improve the stickiness of Zoom for our shared clients once the current crisis is over.

Hey @NGPVANEveryAction,

Thank you for the detailed post.

Have you tried using our Webinar Webhooks at all to get realtime Webinar participant data?

Thanks,
Tommy

Hi @tommy,

We have taken a look at the Participant Joined Webhook and it does partially work for us, but here are its limitations:

  1. As well as setting up a link for a future webinar, we are hoping to allow clients to link webinars to events in our CRM after they have occurred and get a list of the participants into our tool. This would not be possible with the webhook but only if there is an endpoint.

  2. We are also concerned about the fragility of only working with Webhooks. What if our system is down for a minute, or if your webhook retries break (as they did a little while ago). If there was at least a past webinar participants endpoint then we would have a backup source for the data. ((As an aside: can you point me to any details about the webhook retries? When and how often does the retry occur?))

  3. For our clients, meetings and webinars are just two different options, they don’t see them as categorically different, so to have disparate functionality between the two entities for our integration will cause problems. We would have to have disparate functionality because the ParticipantJoined Webhook for meetings does not allow for matching between participants and registrants, like the webinar does, as you note here

So all in all it is quite inconsistent to not have one and it causes us significant difficulty in our attempt to integrate with Zoom. Do you therefore think it would be possible to get a webinar participants endpoint on your API team’s backlog?

Thanks,
NGPVAN/Everyaction Team

PS: There seem to be some errors in the API documentation:

  1. The above helptext from the ParticipantJoined webhook Indicates that the ID in the participant object is the userID from the Users API, and that it only shows if the person logs into zoom. However, our testing (and other comments) show that this ID is the RegistrantID from the registration record and that when you enter the meeting by clicking the tokenated link from the registration confirmation email then you always have this value, whether you are previously signed-in to Zoom or not. This is very good, though, because if the registrationID did not display in the Participant Joined Webhook, there would be no way to match the participant to the registrant, since User_Email is not there. So I am definitely not complaining about the functionality, but I wanted to alert you that the API reference note is not correct!

  2. The Participant UUID field in the Past Meeting Participants Endpoint actually seems to function like the helptext in the ParticipantsJoined webhook but that is not indicated as such.

Hey @NGPVANEveryAction, thanks for the detailed post! :slight_smile:

Yes, I will add this as a feature request, and keep you updated! (ZOOM-149942)

Currently we have turned off the retry logic for webhooks, see more details here:

Hey @shrijana.g, can you double check the docs?

Thanks,
Tommy

1 Like

Hi @tommy,

Thanks for your thorough response.

A couple follow-up questions from me.

  1. Do you have a sense of when retry logic may get turned back on? Our team is very uncomfortable building an integration relying on webhookds don’t have retries. And for when it is turned back on can you point me to something that lays out how the retries would work?

  2. Thank you for logging the feature request. I, being a Product Manager myself, know how these things tend to go, but I thought I’d ask anyway: is there a timeline for when we might know if the request has been accepted for your roadmap or not? And is the current feature freeze also affecting API update work?
    Mixed with no retry logic we can’t build our integration off of the webhook for webinar participant joined, so we are basically dead in the water without this feature.

@shrijana.g Let me know if you have any followup questions about my API docs comment. I also just realized one other tiny thing. In the sidebar of the API docs page, the Meeting Registration Created Webhook is titled Meeting Registrant Webhook. I know that is tiny, but I always appreciate when my clients share copy edits of my help docs, so I thought you might also!

Best,
NGPVAN/EveryAction Team

Hey @NGPVANEveryAction,

No timeline yet, stay updated here:

We have approved the feature request, but not sure of timeline yet. Will keep you updated.

Thanks,
Tommy

Hi @NGPVANEveryAction Thank you for providing the details! I truly appreciate it and I have updated the changes in the docs. In addition to what you reported, I confirmed the following with my team:

  • If a webinar is a registration required webinar and the participant joined this webinar with login, the id will be the same as the registration id.
  • If the webinar is not a registration enabled webinar and the participant joined this webinar with login, the id will be the same as the user id.

If you find otherwise, please let me know and I will investigate further. Thank you.

1 Like

Thanks, @tommy. I appreciate the diligence in your responses!

Hi @shrijana.g,

I’m glad that my comment was helpful! If I find anything else as we work on this project, I will be sure to let you know. One small followup question:

Do you know if what you confirmed with the team about the webinar Participant ID is true for all webinar endpoints and webhooks or just for the participant joined webhook. For example, would it also be the case for this endpoint? Either way, I think it would be helpful to put some helptext next to the Participant UUID field on this doc page!

Thanks again,
NGPVAN/EveryAction Team

Hey @NGPVANEveryAction,

Happy to help!

Thanks,
Tommy