Watch attendance build itself for a Live session. Two ways to drive it: open the real Zoom meeting and let Zoom’s own webhooks do the work, or simulate the same four events when you don’t want to stage a live call. Simulated events are signed with the real ZOOM_WEBHOOK_SECRET_TOKEN and go through the identical pipeline — signature check, replay window, duplicate ledger, every handler — so this page mocks Zoom, never the code under test. Development only.
This launches the actual Zoom meeting. Attendance then comes from Zoom’s own webhooks — nothing on this page fakes it, the tables below just poll and show what arrives. This is the real test. Use section 3 only when you don’t want to stage a live call.
Opens the host start link. Zoom must be signed in as the instructor who connected the account. This fires meeting.started.
Opens the same join link the student’s app gets. Zoom must be signed in with the student’s account email, or they land as an unmatched participant.
Synthesises the same four events, signed with the real secret and pushed through the same pipeline. Timings are minutes from when the meeting started, so a 90-minute class replays in seconds. Don’t mix this with a real meeting that is already running.
One click: start → the first student joins at minute 0 → leaves near the end → meeting ends. The quickest way to see a Present appear.
Or step through it manually:
Reset clears Zoom-derived attendance, participants and the event ledger. Manual records are deliberately kept, so you can prove an instructor override survives a replay.
| Student | Status | Method | Attended | % | Joins | First join | Final? |
|---|---|---|---|---|---|---|---|
| Pick a session | |||||||
| Display name | Matched to | How | Time | Intervals | |
|---|---|---|---|---|---|
| No participants yet | |||||