Documentation
Requirements & Installation
Before You Start
-
WordPress 6.0+
-
PHP 8.1+
-
LearnDash installed and active
-
A valid Zoom account with enough privileges (see below)
-
Your site’s domain (for license registration and OAuth redirect)
Install & Activate the Plugin
-
Go to Plugins → Add New → Upload Plugin
-
Upload the
.zipfile from purchase -
Click Install Now → then Activate
-
A new menu item LiveClass Sync appears
Activate Your License
-
Go to LiveClass Sync → License
-
Enter your license key
-
Click Activate License → wait for confirmation
-
License must be active before Zoom features work
Zoom Configuration
What Zoom Account You Need
-
You need a Zoom account under a paid plan (not just “Basic/Free”) if you want to host meetings longer than the free-plan limit or use features beyond the free tier.
-
Importantly: the Zoom user authorizing the app must have admin-level privileges (or the account owner) in order to install an account-level or server-to-server OAuth app with broad scopes.
-
For “Account-level” or “Server-to-Server OAuth” apps, only account admins (or users with marketplace/developer permissions) can authorize the app across the account.
Create Your Zoom OAuth / Server-to-Server App
-
Log in to Zoom Marketplace as account owner/admin
-
Go to Develop → Build App
-
Choose OAuth or Server-to-Server OAuth depending on your preference/Zoom permissions
-
Name the app and click Create
Configure URLs
-
Redirect URL (for OAuth): paste the URL from plugin settings
-
Webhook endpoint (for Event Subscriptions): paste the plugin’s webhook URL
-
Copy the Verification Token — needed in the plugin
Add OAuth Scopes / Permissions
Based on earlier discussions, these are the scopes we planned to use:
-
meeting:read:admin -
meeting:write:admin -
user:readoruser:read:admin -
account:read:admin
These match the requirements for meeting creation, reading user data, account-level management, and (optional) webinars.
If the scopes don’t appear, integration may not support automatic meeting creation or management.
Enable Event Subscriptions (for Webhooks)
-
Turn on Event Subscriptions
-
Add the webhook URL from plugin settings
-
Subscribe to at least:
meeting.started,meeting.ended(for attendance tracking)
Enter Zoom Credentials in WordPress
-
Go to LiveClass Sync → Settings
-
Paste Client ID, Client Secret, and Verification Token
-
Save
Connect Zoom Account
-
Click Connect Zoom
-
Approve permissions when prompted
-
Return to WordPress — you should see confirmation (unless scopes are missing)
Meeting SDK Setup — for Browser Join
-
Build a Meeting-SDK App in Zoom Marketplace
-
Use the same Redirect URL
-
Copy SDK Client ID & Secret → paste into plugin settings → Save
LearnDash Usage
Create Zoom Meeting
-
Edit or add a Topic → scroll to LiveClass Sync Meeting
-
Toggle “Enable Zoom Meeting” → fill in meeting name, date, time, duration, optional password → Save/Update
-
The plugin will automatically create the Zoom meeting and embed the join link
Update / Delete Meetings
-
Editing the Topic → Update → meeting changes updated on Zoom automatically
-
Deleting the Topic → meeting deleted on Zoom
View All Meetings
-
Go to LiveClass Sync in the admin menu → you will see lists of upcoming and past meetings with IDs, times, and durations
Management & Troubleshooting
Manage All Meetings
-
List view in the plugin shows meeting name, ID, date/time, status, etc.
Disconnect Zoom (if needed)
-
Go to LiveClass Sync → Settings → Disconnect Zoom Account — removes stored tokens
Troubleshooting Common Issues
-
License not activated → recheck key/domain
-
OAuth redirect URL mismatch or missing scopes → verify OAuth settings in Zoom
-
Missing “write/admin” scopes → may be due to Zoom plan/policy changes
-
Webhook not working — check webhook URL and verification token
-
SDK join issues — verify SDK credentials and redirect URL
Understanding Completion Percentage
- 80% (default): User must attend 80% of the meeting duration
- 100%: User must attend the entire meeting
- 50%: User must attend half the meeting
- 0%: Topic marked complete immediately when meeting ends (regardless of attendance)