Founding offer — 25% off applied automatically at checkout. Ends 1 November 2026 or after our first 30 orders. See pricing →
Skip to document content
Guide

LMS Integration and Native Classes

14 min read 3 views
Version
1.0
Last Version Update
October 4, 2026
Effective From
October 4, 2026
Review Cycle
Annual
Next Review Due
October 2027

Course Cadence does not keep its own course catalogue or enrolment records when you already have an LMS. It reads courses, enrolled students, trainers and lessons from Tutor LMS or LifterLMS. When neither is installed it runs in standalone mode, where you create classes and enrol students and trainers on the plugin’s own Classes screen.

This document is for site administrators choosing a mode and course administrators running classes in standalone mode.

How the active LMS is chosen

There is no setting to pick a mode. On every page load the plugin selects one provider, in this order:

  1. Tutor LMS — if the Tutor LMS plugin is active.
  2. LifterLMS — if LifterLMS is active (and Tutor LMS is not).
  3. Native classes (standalone) — always available, so it is used whenever neither LMS is active.

Only one provider is active at a time. If both Tutor LMS and LifterLMS are active, Tutor LMS wins. Because the choice is made fresh on every request, activating or deactivating an LMS takes effect on the next page load — you do not need to deactivate and reactivate Course Cadence.

Because standalone mode is always available, the plugin always has a working provider. The Tools → Site Health check LMS dependency reports which one is in use, for example “Tutor LMS is active” or “Native (Classes) is active”.

Pinning a different provider (developers)

A site that runs both LMS plugins, or that wants to use native classes even though an LMS is installed, can pin the provider with a small code snippet (in a site-specific plugin or your theme’s functions.php):

add_filter( 'dantian_course_cadence_lms_provider', fn() => 'lifterlms' ); // or 'tutorlms' or 'native'

The pinned provider is used only if it is available (for example, 'lifterlms' is ignored if LifterLMS is not active). Decide on your provider before you build timelines — see Switching between modes.

What each mode provides

Tutor LMS LifterLMS Native classes
Courses Published Tutor LMS courses Published LifterLMS courses Active classes from Course Cadence → Classes
Students Users with an active (completed) Tutor enrolment — pending and cancelled enrolments are excluded Users whose LifterLMS status is enrolled — cancelled and expired are excluded Class members with the Student role
Trainers The course author, any additional course instructors, and instructors assigned to the course in Tutor LMS The course’s LifterLMS instructors (falling back to the course author) Class members with the Trainer role
Enrolment date (Rolling timelines) From the Tutor enrolment record From LifterLMS enrolment data The date the member was added to the class
Linked lessons in prompts Yes — lessons grouped by topic Yes — lessons grouped by section No (“No lessons found for this course.”)
Email styling Tutor LMS’s own email templates LifterLMS’s own email header and footer The plugin’s built-in template
Catch-up on enrolment Yes Yes Yes
Year filter A four-digit year (19xx or 20xx) in the course title A four-digit year in the course title The class’s Year field

Draft or private LMS courses do not appear in Course Cadence and receive no emails. In standalone mode, inactive classes behave the same way.

Who receives student emails

Trainers are never sent student guidance. A person is left off the student list for a course if they are a trainer on that course, or if their account is an instructor account:

  • Tutor LMS: users with Tutor’s instructor role, or whom Tutor LMS marks as an instructor.
  • LifterLMS: users with the Instructor, Instructor’s Assistant or LMS Manager role.
  • Native classes: users who are a Trainer in any active class.

The same rule stops catch-up emails being sent to trainers.

Enrolment events that trigger catch-up emails

When a student is enrolled after a course’s timeline has started, Course Cadence schedules a catch-up email containing the guidance they missed, about five minutes later. These events count as an enrolment:

Mode Enrolment events
Tutor LMS An enrolment created already active (free-course self-enrolment, Tutor’s admin “enrol a student”, completed WooCommerce or Easy Digital Downloads orders), and a pending enrolment that later becomes active (for example when an administrator approves it)
LifterLMS Any LifterLMS enrolment in a course
Native classes Adding a member with the Student role on the Manage Members screen. Adding a Trainer does not trigger a catch-up.

Repeat events for the same student are de-duplicated — nobody receives the same prompt twice. If several enrolments for one student arrive close together and email consolidation is on, they are combined into one catch-up. Full detail: Catch-up emails.

Tutor LMS

Tutor LMS is the most common setup. Course Cadence lists every published Tutor course in the Timelines & Prompts course picker, the Overview and the Email Delivery screens. Nothing needs configuring in Tutor LMS itself. Guidance emails use Tutor LMS’s own email templates (including any theme overrides) so they match the emails students already receive from Tutor.

When you link lessons to a prompt, the lesson picker shows the course’s lessons grouped by Tutor topic; the links appear in the email and on the student guidance page.

LifterLMS

LifterLMS works the same way: published LifterLMS courses are listed, students with an enrolled status receive guidance, the course’s instructors receive trainer guidance, and lessons are grouped by course section in the lesson picker. Emails are wrapped in LifterLMS’s own email header and footer.

Native classes

Standalone mode lets you run cohorts with no LMS. Each class is a group of students and trainers; to Course Cadence a class is a course — it appears in the Timelines & Prompts course picker, on the Overview and in Email Delivery, and you build its timeline and prompts exactly as for an LMS course.

Where to find it: Course Cadence → Classes. The menu item appears only when:

  • standalone mode is the active provider (no Tutor LMS or LifterLMS), and
  • Dantian Training Hub is not active. When Training Hub is active it owns class management: manage classes under Training Hub → Classes instead. See Integration with Dantian Training Hub.

Who can use it: administrators only (the Manage options capability). Trainers and students never see this screen.

The Classes list

The list shows every active class, sorted by label, with columns Label, Code, Year, Status, Members (students and trainers combined) and Created. Hover a class to see its row actions: Edit, Manage Members and Delete. When there are no classes yet you see “No classes yet.” with an Add New Class button.

Creating a class

  1. Go to Course Cadence → Classes and click Add New Class.
  2. Complete the form:
Field Required What it does Limits
Label Yes The class name — shown to students and trainers as the course name, and in emails Up to 150 characters
Class Code No “Optional short code to identify this class” — shown in the Code column Up to 30 characters
Year No “e.g. 2026 — used for year-based filtering” on the Overview, This week and trainer course selector Up to 30 characters
Status — Active (default) or Inactive —
Notes No Internal notes for administrators —
  1. Click Add Class.

You are taken to Timelines & Prompts with the new class already selected and the notice “Class created! Now create a timeline below to start scheduling prompts for your students. Don’t forget to enrol your students and trainers via Manage Members.” The link in the notice opens the new class’s members screen.

Duplicate names: if an active class already has the same label (ignoring capitals), the form is shown again with the warning “A class named “…” already exists. Check the box below and submit again to create it anyway, or change the label.” Tick Yes, create this class anyway. to go ahead, or change the label. Editing an existing class never triggers this warning.

Editing a class

Click the class label or Edit, change the fields, and click Update Class. You return to the Classes list with “Class saved.” Changing the label changes the course name everywhere, including future emails. Creating and editing a class are recorded in the audit log.

Making a class inactive

Setting Status to Inactive removes the class from the Classes list, the course pickers, the dashboards and the weekly dispatch — its students stop receiving weekly guidance and no longer see it on the student guidance page. Its timeline, prompts, members and delivery history are kept.

There is currently no list of inactive classes on this screen, so treat Inactive as “archived”: note the class before you change it. To reactivate it you need its edit link (the address of its Edit page, which ends in class_id= followed by its number).

Deleting a class

Click Delete and confirm “Delete this class and all its members? This cannot be undone.” The class and all its member records are removed permanently; the deletion and the number of members removed are recorded in the audit log. You see “Class deleted.”

Deleting a class does not delete the timeline, prompts or email history you built for it, but they are no longer reachable from any screen. To reuse that content for a new class, clone the timeline into another class before deleting — see Timeline cloning.

Managing class members

Open Course Cadence → Classes, hover the class and click Manage Members. The screen is headed Members — class label and has two parts: Add Members, and tables of current Students and Trainers.

Adding members

  1. Under Find people, type at least two characters of a person’s name, username or email address (“Search by name or email…”).
  2. Up to 20 matching WordPress users appear. Anyone already in the class is labelled Already a student or Already a trainer.
  3. Click a person (or use the arrow keys and Enter) to add them to the Selected people list. Select as many as you need; remove a selection with its × button.
  4. Choose a Role: Student or Trainer. The role applies to everyone selected.
  5. Click Add Members.

You see “N members added.” Adding someone who is already in the class with that role does nothing — there are never duplicates.

People must already have a WordPress user account; the picker cannot create accounts. Create them first under Users → Add New User (or let students register), then add them here.

Without JavaScript: if the search box cannot load, a User ID field appears instead: “Enter the numeric WordPress user ID. Find it in Users › All Users.” Add one person at a time this way.

What adding a member does

  • Student: the person starts receiving this class’s student guidance from the next weekly dispatch, can see it on the student guidance page, and — if the timeline has already started — is sent a catch-up email about five minutes later. Their “added” date is their enrolment date for Rolling timelines.
  • Trainer: the person receives trainer-audience guidance for this class and can view it (and suggest edits) on the trainer guidance page. Being a trainer in any active class also means they are not sent student guidance in other classes (see Who receives student emails).

A person can hold both roles in the same class, but because trainers are excluded from student emails, they would then receive trainer guidance only.

Removing members

In the Students or Trainers table, click Remove next to the person and confirm “Remove this member from the class?” Only that role is removed — if they hold both roles, the other remains. Removal is immediate: they receive no further guidance for this class and lose access to it on the guidance pages. Emails already sent are unaffected, and their delivery history stays in the logs.

Errors you may see

Message Cause and fix
“Please enter a valid numeric user ID.” Add Members was clicked with nobody selected (or an empty/invalid User ID). Select at least one person.
“No WordPress user found with that ID. Check the user ID in Users › All Users.” None of the chosen user IDs exist. Check the ID.
“No matching people found.” The search matched no user. Try part of the email address, or create the account first.
“Class label is required.” The class was saved without a label.
“The shared class schema appears incompatible. Class writes are paused to prevent data corruption.” The shared class tables do not match what Course Cadence expects — usually a version mismatch with Dantian Training Hub. Update both plugins.

Shared class tables with Dantian Training Hub

Native classes are stored in two tables — dthub_classes and dthub_class_members (with your site’s table prefix) — that are shared with the sibling plugin Dantian Training Hub. Both plugins create the same table structure and read and write the same rows, so:

  • you can install either plugin first; no migration is ever needed;
  • a class created in one plugin appears in the other immediately;
  • Course Cadence’s Trainer role is stored as Training Hub’s instructor role, so trainers and instructors are the same people in both plugins.

Training Hub marks finished classes as archived rather than inactive; either way, only active classes appear in Course Cadence. Full detail, including uninstall behaviour: Integration with Dantian Training Hub.

Switching between modes

Changing provider (installing an LMS on a standalone site, removing one, or pinning a different provider) is not a migration. Timelines and prompts belong to the specific course or class they were created for, and courses from one provider are not the same records as courses from another. After a switch, the course picker lists the new provider’s courses; timelines built for the old courses will not apply to them.

Choose your mode before building content. If you must switch, set up the new courses, recreate or clone the timelines, and run test emails before the next dispatch.

Site Health

Course Cadence adds three checks to Tools → Site Health: LMS dependency (which provider is active), Course Cadence database tables (all six of the plugin’s own tables exist) and Course Cadence cron event scheduled (the weekly dispatch is scheduled, with its next run time). Details: Scheduled tasks and Site Health.

Data and privacy

Class membership is personal data: which classes a user belongs to, their role and the date they were added. While Course Cadence is managing classes itself (standalone mode, with Training Hub not active), this is included in Tools → Export Personal Data and removed by Tools → Erase Personal Data; when Training Hub is active, Training Hub handles it. On uninstall with Remove All Data on Uninstall turned on, the class tables are removed only if Training Hub is not installed. See Privacy, data and uninstall.

Troubleshooting

The Classes menu item is missing. An LMS is active (Tutor LMS or LifterLMS), or Dantian Training Hub is active. With an LMS, courses come from the LMS. With Training Hub, use Training Hub → Classes.

A course is missing from the course picker. LMS courses must be published; native classes must be Active.

A student did not get a catch-up email after being enrolled. Check that the timeline has started, that past weeks have student prompts, and that the person is not a trainer anywhere (native) or an instructor account (LMS). Check Overview → Students to Catch Up and send it by hand if needed — see Catch-up emails.

Lesson picker shows “No lessons found for this course.” Expected in standalone mode. With an LMS, the course has no lessons yet, or its lessons are not inside topics/sections.

More: Troubleshooting.

Worked example: a clinic training programme with no LMS

A physiotherapy clinic trains two cohorts of assistants each year without an LMS.

  1. Course Cadence → Classes → Add New Class: Label “Allied Health Assistant — 2026 Intake 1”, Class Code AHA-26-1, Year 2026.
  2. On the “Class created!” notice, they follow the link to Manage Members, search “@clinic.com.au”, select 12 staff, choose Student, and click Add Members (“12 members added.”). They then add the two senior physiotherapists as Trainer.
  3. They build a 16-week Rolling timeline, because new assistants start at different times; each person’s week 1 is the day they were added.
  4. In week 5 a new assistant joins. Adding them as a Student starts their own week 1 that day.
  5. At the end of the year they create a class for 2027 and clone the 2026 timeline into it, then set the 2026 class to Inactive so it stops appearing in pickers and dispatches.

Version History

Version 1.0.0 Major October 4, 2026
Author: DHDW