Zoom attendance tracking with automatic no-show follow-ups
Every evening we compare who signed up for your Zoom sessions with who actually turned up, log it all in a spreadsheet, and email the people who missed it.
Every day at 6pm, reconcile who registered for my Zoom sessions against who actually showed up, log the result in Google Sheets, and chase the people who missed it.
Start in Zoom with List Meetings using the previous meetings filter, and keep only the sessions that ended today. Skip any meeting that did not have registration enabled, since there is no registrant list to compare against. If List Meeting Registrants comes back empty or unavailable for a meeting, treat that meeting as skipped and move on to the next one.
For each remaining session, pull two lists: List Meeting Registrants for who signed up, and List Past Meeting Participants for who actually joined. Use Get Past Meeting Details for the topic, start time and duration. Zoom meeting UUIDs sometimes contain a leading slash, so double URL encode the UUID before using it in a request, and treat all meeting IDs as strings rather than numbers.
Matching rules. Match a registrant to a participant by email address first, comparing lowercased and trimmed. When a participant record has no email on it, fall back to matching on display name, again case insensitive and trimmed. Zoom writes a separate participant row every time somebody rejoins, so sum every row belonging to the same person into a single total before judging attendance.
Attendance threshold. Count someone as attended only if their total time in the session is at least 10 minutes. A 30 second join does not count. Everyone else is a no-show, whether they never joined at all or dropped out early. The minutes present figure is what tells those two cases apart, so always record it even when it is zero.
Logging. Append one row per registrant to my attendance Google Sheet using Append Values, with the session name, the session date, the person's name, their email, attended or no-show, and minutes present. Before appending anything, read the rows already in the sheet and skip any registrant that is already logged for that session, so a rerun never writes duplicates.
Follow up. Send each no-show one short, warm Gmail message that names the session they missed, offers the recording, and points them at the next available date. If a cloud recording exists for that session, fetch the share link with List Meeting Recordings and include it; if there is no recording yet, say it is on its way. For the next date, run List Meetings again with the upcoming filter and pick the next scheduled session with the same topic. If nothing is scheduled, invite them to reply and say you will let them know once the next one is booked.
One email per person per session, so nobody gets chased twice. The spreadsheet is the ledger: if a registrant already had a row for this session before this run started, they have already been contacted and should not be emailed again. Keep the tone friendly and brief, three or four sentences, no guilt trip.
Example output
What does this prompt do?
- Checks every Zoom session that finished today and compares the sign-up list against the people who actually joined.
- Counts someone as attended only if they stayed at least 10 minutes, so a quick 30 second join does not score as a full attendance.
- Logs one row per registrant in your attendance spreadsheet: session, date, name, email, attended or no-show, and minutes present.
- Emails each no-show a short friendly note naming the session they missed, offering the recording, and pointing them at the next date.
What do I need to use this?
- A Zoom account on a Pro plan or above, connected with admin level access so the detailed attendance data is available.
- Sessions set up with registration turned on, since the whole comparison depends on having a sign-up list.
- A Google Sheet to keep the running attendance log in.
- A Gmail account to send the follow-up notes from.
How can I customize it?
- Change the 10 minute attendance threshold to whatever counts as showing up for your sessions.
- Move the daily 6pm run to a different time, or switch it to weekly if you only run sessions occasionally.
- Rewrite the follow-up email, or have it leave first-time no-shows alone and only chase people who have missed more than once.
FAQs
What happens to meetings that did not use registration?
Does someone who joins, drops off, and comes back get counted twice?
What if someone joined without their email showing up?
Will anyone get chased twice for the same session?
Do I need a paid Zoom plan for this?
Related templates
Every 15 minutes, forwarded phishing reports get traced back to the server that really sent them, with a verdict in Slack and the worst senders reported.
Every Monday, check every S3 bucket for public exposure, missing encryption and weak backup settings, then get the risks ranked in Slack.
Every weekday at 7am, sign in to the tender portals you track, filter new notices against your bid criteria, and open a deal for the ones worth chasing.
Every weekday at 4pm, spot the threads that went quiet, stage a ready-to-send nudge in your mailbox, and get a ranked Slack recap.
Every Thursday, rank your team's upcoming flights by how likely they are to run late, and email the fixes while changes are still cheap.
Each month, spot the saved cards about to expire, email the customers still on recurring billing, and rank the revenue at risk in Slack.
Stop diffing two Zoom exports by hand.
Let the attendance log fill itself in every evening and the no-show emails go out without you writing a single one.