The moment it happens
Get an attendance list when a meeting ends
When your meeting ends you get who attended and how long each person stayed.
- Runs
- The moment it happens
- Apps
- Zoom
- AI
- Not needed
- Access
- meeting:read, report:read (Pro+)
Send this to your assistant
Create a ClickRuntime automation: when my Zoom meeting ends, email me the attendance list with each person's join time and minutes attended.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A trainer runs a paid workshop on Zoom and the client asks for proof of who attended and for how long, because certificates depend on at least 80 percent attendance. Zoom reports exist, but they are buried in the web portal, and generating them takes several clicks. After a long day, the trainer skips it, and a week later the client's request turns into a scramble.
When the meeting ends, Zoom sends an event. After a short wait for the data to settle, the past meeting's participants are fetched and an email is sent with a table of each participant's name, join time, leave time and total minutes. The table is in your inbox before you close the laptop.
Valuable for trainers, teachers and anyone who needs a record of attendance.
What you get out of it
Proof of attendance on file
A table with join and leave times serves as evidence for certificates and client billing. It removes disagreement about who was in the room and for how long they stayed.
Billing matches reality
If you charge per attendee or per hour, the report shows exactly what to bill. Disputes about participant counts shrink, because both sides can look at the same table. The table settles the numbers.
Compliance checks are quick
Training required by policy or regulation needs a record of completion. The report is that record, produced the moment the meeting ends, not reconstructed from memory a week later. Nobody has to rebuild it later.
Follow-ups reach the right people
No-shows can be sent the recording and a reminder the same day. You do not need to compare a sign-up list with your memory of who appeared, and no one is chased unfairly.
No portal navigation
The report finds you instead of you finding it. Even on days when you are exhausted after a long session, the attendance record is captured and waiting in your inbox.
Evidence if a dispute arises
If a participant claims they attended the whole session, the minutes in the table settle it. A neutral record keeps conversations with clients and students friendly. Certificates and invoices can be checked against it.
How it works
What happens, step by step
When one of your Zoom meetings ends, Zoom tells ClickRuntime.
The automation waits a minute so Zoom can finish its participant report, then fetches it.
For each person it notes their name, when they joined and how many minutes they stayed.
You get an email with the attendance list, titled with the meeting topic and the number of attendees.
Before it runs live
- Connect Zoom
- Paste your automation's link into the other app's webhook settings
What you get
Build your own
Need it to work differently?
Your own rules
Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.
Any number of apps
One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.
AI where it helps
Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.
On a schedule or on each event
Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.
Changes you can ask for
- Act only on the items that match your own rules, and skip the rest
- Add an AI step, for example to summarize, sort or draft a reply
- Add another app, for example also send it to Slack
- Combine it with other Zoom steps into one automation
Under the hood
The code that runs this automation
import time
from urllib.parse import quote
from clickruntime import on_event, credentials, http, notify
@on_event
def handle(event):
if event.json.get("event") != "meeting.ended":
return {"skipped": True}
meeting = event.json["payload"]["object"]
time.sleep(60) # Zoom needs a moment to finalise the report
uuid = quote(quote(meeting["uuid"], safe=""), safe="")
resp = http.get(f"https://api.zoom.us/v2/report/meetings/{uuid}/participants",
params={"page_size": 300},
headers={"Authorization": f"Bearer {credentials.connection('zoom', 'work')}"})
resp.raise_for_status()
people = resp.json()["participants"]
lines = [f"{p['name']:<28} joined {p['join_time'][11:16]} {p['duration'] // 60} min" for p in people]
notify.email_me(f"Attendance: {meeting['topic']} ({len(people)})", "\n".join(lines))
return {"participants": len(people)}FAQ
Common questions
Why does it wait before fetching participants?
Does it show people who joined multiple times?
Does it work for webinars?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Hear in Slack when someone joins or waits
You're pinged when a participant joins your meeting or is sitting in the waiting room.
See how it worksTrack webinar sign-ups as they happen
Each new registrant reaches you with their details and the running total.
See how it worksPost Zoom's meeting summary to Slack
The summary Zoom AI Companion writes is shared in your channel when it's ready.
See how it worksKeep exploring
Set up “Get an attendance list when a meeting ends” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.