Title: Unified Private Class LMS
Author: WPteacher
Published: <strong>August 3, 2026</strong>
Last modified: August 3, 2026

---

Search plugins

![](https://s.w.org/plugins/geopattern-icon/unified-private-class-lms.svg)

# Unified Private Class LMS

 By [WPteacher](https://profiles.wordpress.org/janinduhansaka/)

[Download](https://downloads.wordpress.org/plugin/unified-private-class-lms.1.5.0.zip)

 * [Details](https://wordpress.org/plugins/unified-private-class-lms/#description)
 * [Reviews](https://wordpress.org/plugins/unified-private-class-lms/#reviews)
 *  [Installation](https://wordpress.org/plugins/unified-private-class-lms/#installation)
 * [Development](https://wordpress.org/plugins/unified-private-class-lms/#developers)

 [Support](https://wordpress.org/support/plugin/unified-private-class-lms/)

## Description

Unified Private Class LMS is a lightweight learning-management and class-administration
plugin built for private tutors, small academies, and one-to-one teaching businesses.
It gives you a dedicated **teacher dashboard** and **student dashboard** on the 
front end of your site, so neither group ever needs to touch wp-admin.

Teachers create classes, enrol students, schedule recurring weekly sessions, share
materials, and track payments. Students sign in to a branded dashboard to see their
upcoming classes, join links, schedule calendar, course materials, and billing history.

Two integrations are **optional** and only activate when you add credentials in 
the settings screen:

 * **Zoom** — when configured, creating a class automatically provisions a recurring
   weekly Zoom meeting, and the join link appears on the student dashboard shortly
   before each session.
 * **Stripe** — when configured, a class can carry a weekly subscription. Students
   pay through Stripe’s hosted Checkout, and a webhook keeps their access in sync
   with their payment status.

If you do not configure Zoom or Stripe, the plugin works as a standalone scheduling
and class-management tool.

#### Key features

 * Front-end **Teacher Dashboard** — overview, students, classes, payments, meetings,
   and a full schedule calendar.
 * Front-end **Student Dashboard** — my classes, schedule calendar, payment history,
   course materials, and account settings.
 * Two custom roles (Teacher and Student) with no public self-registration — teachers
   create student accounts.
 * Recurring **weekly session generation** with automatic status updates and session
   reminders via WP-Cron.
 * Optional **Zoom** recurring meetings (Server-to-Server OAuth).
 * Optional **Stripe** weekly subscriptions with hosted Checkout, a customer billing
   portal, and webhook-driven access control.
 * HTML email notifications (welcome, class confirmation, payment receipt/failure,
   reminders) with editable templates.
 * A branded, self-contained sign-in screen that keeps students and teachers out
   of wp-admin.

#### Privacy & third-party services

This plugin does **not** phone home, and it does not collect, share, or transmit
any data on its own. Data is only ever sent to a third-party service when **you**
enable and configure that integration, and only the data required to perform the
action you requested.

**Zoom (optional, only when Zoom credentials are entered)**
 When enabled, the plugin
communicates with the Zoom API to create and manage the meetings tied to your classes.
Data sent includes the class title/agenda, schedule (day, time, duration, timezone)
and recurrence. This happens server-to-server using the Server-to-Server OAuth credentials
you provide.

 * Zoom API endpoints: https://zoom.us/oauth/token and https://api.zoom.us/v2
 * Zoom Terms of Service: https://www.zoom.com/en/trust/terms/
 * Zoom Privacy Statement: https://www.zoom.com/en/trust/privacy/

**Stripe (optional, only when Stripe credentials are entered)**
 When enabled, the
plugin communicates with the Stripe API to create customers, prices, subscriptions,
and Checkout/Billing-Portal sessions, and it receives Stripe webhooks. Data sent
includes the student’s name and email and the class price/currency. When a student
pays, their browser is redirected to Stripe’s hosted Checkout page. The plugin bundles
the official, unmodified Stripe PHP SDK (MIT licensed).

 * Stripe API endpoint: https://api.stripe.com (via the Stripe PHP SDK), plus the
   hosted https://checkout.stripe.com Checkout page
 * Stripe Services Agreement: https://stripe.com/legal/ssa
 * Stripe Privacy Policy: https://stripe.com/privacy

All front-end assets (the FullCalendar library and the Plus Jakarta Sans web font)
are bundled with the plugin and served from your own site — nothing is loaded from
an external CDN.

_Zoom and Stripe are trademarks of their respective owners. This plugin is an independent
integration and is not endorsed by, certified by, or affiliated with Zoom Video 
Communications, Inc. or Stripe, Inc._

## Installation

 1. Upload the `unified-private-class-lms` folder to `/wp-content/plugins/`, or install
    the ZIP from **Plugins  Add New  Upload Plugin**.
 2. Activate the plugin through the **Plugins** screen. Activation creates the custom
    roles, database tables, scheduled events, and the two dashboard pages automatically.
 3. Go to **Unified Private Class LMS  Settings** and configure:
 4.  * **General:** default timezone and currency, the optional contact/sign-up URL,
       and the email templates.
     * **Zoom (optional):** Account ID, Client ID, and Client Secret from a Server-
       to-Server OAuth app.
     * **Stripe (optional):** Secret Key, Publishable Key, and Webhook Signing Secret.
     * **Pages:** confirm the student and teacher dashboard pages.
 5. If you use Stripe, add a webhook endpoint in your Stripe dashboard pointing to `
    https://your-site.com/wp-json/classflow/v1/stripe-webhook`, subscribe it to the
    checkout/invoice/subscription events, and paste its signing secret into **Settings
    Stripe**.

The teacher and student dashboards are rendered by the `[classflow_teacher_dashboard]`
and `[classflow_student_dashboard]` shortcodes, which are placed on the auto-created
pages.

## FAQ

### Do I have to use Zoom and Stripe?

No. Both are optional. With no credentials entered, Unified Private Class LMS works
as a standalone class scheduling and management tool. Add Zoom credentials to auto-
create meetings, and/or Stripe credentials to bill weekly subscriptions.

### Can students or teachers access wp-admin?

No. Users with the Student or Teacher role are redirected to their front-end dashboard
and the admin bar is hidden for them. Administrators are unaffected.

### Can students register themselves?

No. There is no public self-registration. Teachers create student accounts, which
keeps your roster private.

### Does the plugin send my data anywhere?

Only to the integrations you explicitly configure (Zoom and/or Stripe), and only
the data needed for the action you requested. The plugin does not track users or
call home. See the Privacy & third-party services section above.

### What happens to my data when I uninstall?

Roles, options, and the cached Zoom token are removed on uninstall. Your class, 
session, and billing tables are preserved by default to avoid accidental loss of
financial records. Define the constant `CLASSFLOW_LMS_DROP_TABLES` as `true` before
uninstalling if you want the tables dropped too.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Unified Private Class LMS” is open source software. The following people have contributed
to this plugin.

Contributors

 *   [ WPteacher ](https://profiles.wordpress.org/janinduhansaka/)

[Translate “Unified Private Class LMS” into your language.](https://translate.wordpress.org/projects/wp-plugins/unified-private-class-lms)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/unified-private-class-lms/),
check out the [SVN repository](https://plugins.svn.wordpress.org/unified-private-class-lms/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/unified-private-class-lms/)
by [RSS](https://plugins.trac.wordpress.org/log/unified-private-class-lms/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.5.0

 * Bundled the FullCalendar library and the Plus Jakarta Sans web font locally (
   no external CDN requests).
 * Added a configurable Contact / Sign-up URL setting for the sign-in screen.
 * Documented Zoom and Stripe data flows for transparency.
 * Housekeeping: more complete uninstall cleanup.

## Meta

 *  Version **1.5.0**
 *  Last updated **3 weeks ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.0 or higher **
 *  Tested up to **7.0.4**
 *  PHP version ** 8.0 or higher **
 * Tags
 * [lms](https://wordpress.org/plugins/tags/lms/)[scheduling](https://wordpress.org/plugins/tags/scheduling/)
   [stripe](https://wordpress.org/plugins/tags/stripe/)[zoom](https://wordpress.org/plugins/tags/zoom/)
 *  [Advanced View](https://wordpress.org/plugins/unified-private-class-lms/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/unified-private-class-lms/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/unified-private-class-lms/reviews/)

## Contributors

 *   [ WPteacher ](https://profiles.wordpress.org/janinduhansaka/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/unified-private-class-lms/)