How to track Zoom attendance in LearnDash
If you teach live classes through LearnDash and host them on Zoom, you have probably found the gap: Zoom knows exactly who attended, LearnDash knows nothing about it, and nothing carries the information across.
This guide covers three ways to close that gap. Two of them are free.
Why the two systems do not talk
Zoom records attendance per meeting. After a session, the account owner can pull a participant report showing who joined, when, and for how long.
LearnDash tracks progress per user, per course, and marks lessons and topics complete based on rules you configure — but it has no concept of a live session. There is no built-in field for “attended”, and no integration point where a Zoom report becomes course progress.
So the attendance data exists. It just stops at Zoom.
Method 1 — Manual export
The baseline approach, and worth knowing even if you automate later.
- Sign in to the Zoom web portal as the account owner or an admin
- Go to Reports → Usage
- Find the meeting and click the participants count
- Export the participant list as CSV — it includes join time, leave time and duration for each attendee
- In LearnDash, open the course and mark the topic complete for each attendee who met your threshold
What it costs. Roughly 10 to 20 minutes per session for a class of 20, and it grows with the class. Two classes a week over a twelve-week term is around eight hours of work.
Where it goes wrong. Attendees are matched by the name they typed into Zoom, which may not match their LearnDash account. Students who join from a phone and then a laptop appear as two separate entries with partial durations each — so someone who attended the whole session can look like they attended half of it twice. And there is no audit trail beyond the spreadsheet.
Workable for a single small cohort. It stops being workable at about two classes a week.
Method 2 — Automation connectors
Tools like Zapier, Uncanny Automator and similar connectors can listen for a Zoom event and trigger an action in LearnDash.
The usual shape:
- Connect both Zoom and LearnDash to the tool
- Create a rule triggered by Zoom’s
meeting.endedwebhook - Match the participant to a WordPress user, usually by email
- Mark the LearnDash topic complete for matched users
What this gets you. It removes the manual step, and it is genuinely flexible — you can branch into sending emails, updating a CRM, or notifying a group leader.
What you have to build yourself:
- Partial attendance. Most connectors give you “attended” as a yes or no. Deciding that 48 minutes of 60 counts but 20 does not is logic you construct.
- Multi-device sessions. One person joining twice arrives as two records. You need to consolidate them by email before measuring duration, or your rules misfire.
- Repeat sessions. A weekly class is one Zoom meeting occurring many times. Keeping each occurrence tied to the right topic, and not re-completing topics students already finished, takes state that recipes handle awkwardly.
- Running cost. Most connectors price per task or per run, and every participant of every session is typically a task.
A good fit when you already run one of these tools and your attendance rule is simple.
Method 3 — A purpose-built integration
A dedicated integration treats attendance as a first-class concept rather than something assembled from generic triggers.
In practice that means:
- Zoom is connected once through an OAuth app, and meetings are created from inside the LearnDash topic
- Students join through a button in the course, so the join is already tied to a known user
- Zoom’s
meeting.endedwebhook delivers participant data automatically - Multiple joins by the same person are consolidated by email address and their durations combined
- Topic completion runs against a threshold you set — 80% of the session by default
- Attendance records stay in your own database for reporting and disputes
LiveClass Sync works this way. Setup takes about fifteen minutes, and after that sessions handle themselves.
Which method to choose
| Your situation | Use |
|---|---|
| One cohort, occasional sessions | Manual export |
| Already using an automation tool, simple rules | A connector |
| Weekly classes, partial attendance matters, records must be reliable | A purpose-built integration |
Four things to get right, whichever route you take
Use a paid Zoom plan
Participant reports are not available on Basic accounts. None of the methods above work without Zoom Pro or higher.
Match on email, not name
Display names are free text and students change them. Email is the only stable identifier, and it is also what makes multi-device consolidation possible.
Decide your threshold before term starts
“Attended” is a policy decision, not a technical one. Write it down and apply it consistently. Retroactive changes to completion rules are how disputes start.
Keep the raw records
Whatever marks topics complete, keep the underlying attendance data. When a student queries a result six weeks later, “the system said so” is not an answer.
Let attendance mark the topic complete
LiveClass Sync connects Zoom to LearnDash so students join inside the course, attendance is recorded automatically, and topics complete on rules you set.