Yes, that’s correct, @noahviktorschenk ! In your case, you can rely on the persistent user ID to track users consistently across sessions when they transition between a main meeting and breakout rooms. This ID remains the same in such scenarios.
However, if a user leaves and rejoins a meeting, their user ID will change. To handle this, you can implement a backend tracking solution using unique URLs for each participant with the Zoom REST API and Webhooks. Here’s how:
1. Creating Meetings with Registration
To streamline participant tracking, you can set up meetings with automatic registration and provide each participant with a unique URL. This approach ensures that users join with the email they used during registration, regardless of their Zoom client login status.
1a. Create a Meeting with Registration
Set up the meeting with automatic registration, disable multiple device login, and ensure manual approval.
POST /users/{userId}/meetings
{
"start_time": "2024-09-20T14:00:00Z",
"timezone": "America/Los_Angeles",
"topic": "Participant Tracking Configuration",
"type": 2,
"duration": 15,
"settings": {
"allow_multiple_devices": false,
"join_before_host": true,
"waiting_room": false,
"approval_type": 1,
"registration_type": 2,
"audio": "both"
}
}
1b. Add Meeting Registrants
Register users programmatically.
POST /meetings/{meetingId}/registrants
{
"email": "rachel.ruskin@whoareyou.com",
"first_name": "Rachel",
"last_name": "Ruskin",
"auto_approve": true
}
2. Creating Meetings Without Registration
If you prefer not to use registration, you can track users by utilizing Webhooks. For instance, the meeting.participant_joined
event provides a unique identifier for each participant. You can ingest this data into your system for tracking purposes.
Learn More: meeting.participant_joined Webhook Documentation
You can also generate unique join URLs for each attendee using the meetingInviteLinksCreate
endpoint.
POST /users/{userId}/meetings
{
"attendees": [
{
"join_url": "https://example.com/j/11111",
"name": "Jill Chill"
}
]
}
I hope this helps! Let us know if you have any more questions or clairfications.