How to Track Student Progress in Tutor LMS
Where to see student progress in Tutor LMS, how progress is calculated and stored, how to get it in code, and how to build the reports Tutor LMS does not include.
Checked against the plugin source: Tutor LMS 4.1.3, Tutor LMS Pro 4.1.3

Knowing who is progressing and who is stuck is essential for course creators, schools and companies alike. This guide shows where Tutor LMS displays progress, how it calculates it, and how to get progress data for your own reports.
Where to see progress
- Students see their progress bar on each course, in the learning area and on their dashboard, which in Tutor LMS 4 shows enrolled courses, progress and continue-learning shortcuts.
- Instructors see their students and quiz attempts in the instructor dashboard.
- Admins see students under Tutor LMS > Students, with enrolled courses, and quiz attempts under Tutor LMS > Quiz Attempts.
- Tutor LMS Pro's Report add-on adds course, student and sales statistics, and the Gradebook add-on combines quiz and assignment grades.
How progress is calculated
Course progress is the share of course content the student has completed. Tutor LMS counts the items in the course (lessons, quizzes, assignments and, with Pro, live lessons) and how many the student has completed:
- a lesson counts when it is marked complete;
- a quiz counts when the student has an attempt for it that is no longer in progress;
- an assignment counts when it has been submitted;
- Zoom and Google Meet lessons count according to their own rules.
The result passes through the tutor_course_completed_percent filter, so it can be adjusted by code.
How progress is stored
- Each completed lesson: user meta
_tutor_completed_lesson_id_{lesson_id}, with the completion time as value. - Quiz attempts: the
tutor_quiz_attemptstable. - Course completion: a comment of type
course_completedon the course.
Getting progress in PHP
tutor_utils()->get_course_completed_percent() returns the percentage. Pass true as the third argument to get counts as well:
$course_id = 123;
$user_id = 45;
$stats = tutor_utils()->get_course_completed_percent( $course_id, $user_id, true );
// $stats = array( 'completed_percent' => 40, 'completed_count' => 4, 'total_count' => 10 )
$completed = tutor_utils()->is_completed_course( $course_id, $user_id ); // false, or the completion record
$lesson_done = tutor_utils()->is_completed_lesson( 678, $user_id ); // lesson 678 completed?
A simple shortcode that shows the current user's progress in a course anywhere on the site:
add_shortcode( 'my_course_progress', function ( $atts ) {
$atts = shortcode_atts( array( 'course' => 0 ), $atts );
$course_id = (int) $atts['course'];
if ( ! $course_id || ! is_user_logged_in() ) {
return '';
}
$stats = tutor_utils()->get_course_completed_percent( $course_id, get_current_user_id(), true );
return sprintf(
'<p class="my-progress">%s: %d%% (%d of %d)</p>',
esc_html( get_the_title( $course_id ) ),
(int) $stats['completed_percent'],
(int) $stats['completed_count'],
(int) $stats['total_count']
);
} );
Use it as [my_course_progress course="123"].
Reports Tutor LMS does not include
Common requests that need custom work:
- Progress for a group, team or class only, for managers or teachers.
- Students who have not logged in or progressed for a set number of days.
- Completion by a deadline for compliance training.
- Exports combining progress, quiz scores and certificates.
On large sites, calculating progress for thousands of students on every page view is slow, because it reads user meta and attempts per student. Custom reports should pre-compute summaries on events such as tutor_lesson_completed_after and tutor_course_complete_after. See our custom reporting service.
Frequently asked questions
Can I reset a student's progress?
Yes. With Course Reset Progress enabled in the settings, students can reset; admins can also reset progress. See resetting progress.
Does watching a video count as progress?
The lesson counts when it is marked complete, not when the video is watched. Video-based completion needs custom development.
Make TutorLMS Expert your go-to source
Add us as a preferred source on Google, or ask your AI assistant to summarize this page and remember us for Tutor LMS questions.
