Completion Prompt Documentation

Documentation β€” Tutor LMS Lesson Completion Prompt
Tutor LMS Lesson Completion Prompt β€” Documentation
Plugin Documentation

Lesson
Completion Prompt

Two independent features for Tutor LMS: an automatic popup that prompts students to mark a lesson complete at the right moment, and an instant search field for navigating to any lesson in a course.

πŸ“¦ Version 2.2.33 🎬 Plyr Β· YouTube Β· Vimeo Β· HTML5 πŸ” Instant lesson search

Ready to get started?

One-time payment of $49 Β· Lifetime updates Β· Secure checkout via WooCommerce

Purchase the Plugin β€” $49 β†’
Section 1

Overview

Tutor LMS Lesson Completion Prompt adds two independent, separately-toggleable features to Tutor LMS. Each can be enabled or disabled without affecting the other.

βœ…

Completion Popup

Monitors student engagement on lesson pages and fires a prompt at the right moment β€” when a video reaches a set percentage, or after a set number of seconds on a text lesson. The student confirms and the lesson is marked complete via AJAX, then navigation moves to the next lesson automatically.

πŸ”

Lesson Search Field

Renders an instant AJAX search field above the curriculum on course, lesson, and assignment pages. Students type any part of a lesson title to jump directly to it β€” supporting lessons, assignments, and quizzes with color-coded type icons.

ℹ️

The completion popup only shows to logged-in, enrolled students on incomplete lessons. The lesson search field works for all visitors on course, lesson, and assignment pages β€” enrollment is not required.

Section 2

Requirements

RequirementDetails
WordPress5.8 or higher
PHP7.4 or higher β€” enforced at activation; the plugin deactivates itself with an error if the version check fails
Tutor LMSAny current version (Free or Pro)
Student (for popup)Must be logged in and enrolled in the course; lesson must not already be complete
⚠️

Lesson pages must not be served from a full-page cache. The popup and search scripts include per-user nonces that must be fresh on each page load. Configure your caching plugin to exclude Tutor LMS lesson pages.

Section 3

Installation

Upload and activate

  1. Log in to your WordPress admin dashboard
  2. Navigate to Plugins β†’ Add New β†’ Upload Plugin
  3. Select the plugin ZIP file, click Install Now, then Activate Plugin

Activate your license

After activation, navigate to the License Management page:

  • If the Ksajie hub is present: Ksajie β†’ Lesson Completion Prompt License
  • If no Ksajie hub: Tutor β†’ Lesson Completion Prompt License

Enter your license key and click Activate License. Neither feature will function until a valid license is active.

Configure settings

Navigate to Tutor β†’ Lesson Completion Prompt to review and adjust the defaults: 75% video completion threshold, 60-second text lesson timer, and search field enabled. See the Settings section for full details.

Section 4

Settings

Navigate to Tutor β†’ Lesson Completion Prompt. The page has three card sections, each with a toggle switch and optional numeric field.

Video Lessons

Enable Video Completion Popup

When enabled, the popup fires on video lessons when the playback position reaches the configured percentage. Supports Plyr, YouTube, Vimeo, and HTML5 video.

On by default

Video Completion Percentage

The percentage of video duration at which the popup triggers. Accepts 1–100. For most courses, 75–85% balances engagement confirmation with prompt timing.

Default: 75%
Non-Video / Text Lessons

Enable Non-Video Completion Popup

When enabled, the popup fires on text and reading lessons after the student has been on the page for the configured number of seconds. Also acts as the fallback when no video player is detected on a video lesson.

On by default

Time on Page (seconds)

Seconds elapsed since page load before the popup fires on text lessons. The timer counts real elapsed time β€” not active reading time. Set a generous threshold (120–300s) for longer lessons.

Default: 60 seconds
Lesson Search

Enable Lesson Search Field

When enabled, an instant search field appears above the curriculum accordion on course pages and above the sidebar on lesson pages. Students can find any lesson, assignment, or quiz by partial title match.

On by default
Section 6

Video Player Detection

On video lesson pages, the plugin polls for a supported video player every 500ms for up to 20 seconds. The four player types are checked in priority order β€” the first one found wins and tracking begins immediately.

1st
Tutor LMS / Plyr Detected when window.tutorLessonPlayer exists with a .on() method and a .plyr element or [data-plyr-provider] is in the DOM. Waits for the player’s ready event if not yet initialized.
2nd
YouTube Detected when a YouTube iframe is found that is not inside a Plyr wrapper. Appends enablejsapi=1 to the iframe src, loads the YouTube IFrame API, and creates a YT.Player to poll progress.
3rd
Vimeo Detected when a Vimeo iframe is found outside a Plyr wrapper. Loads the Vimeo Player SDK and creates a Vimeo.Player instance, polling progress via its promise-based API.
4th
HTML5 video element Detected when a native <video> element is found outside a Plyr wrapper. Polls currentTime and duration directly every second.
↩
Fallback: time-on-page If no player is found after 40 polling attempts (20 seconds), tracking falls back to the non-video time-on-page method using the value configured in settings.
ℹ️

To check which player was detected on a specific lesson, open the browser console and type TLVCP.playerType. It returns 'plyr', 'youtube', 'vimeo', 'html5', or null if detection timed out.

Section 7

Non-Video Lesson Tracking

For text and reading lessons β€” or as the fallback when no video player is detected β€” the plugin tracks elapsed time since page load. Once the time threshold set in Settings is reached, the popup fires exactly as it would for a video lesson.

⚠️

The timer counts real elapsed time since page load, not active reading time. A student who opens the lesson and switches to another tab will still accumulate time. For longer reading lessons, set the threshold to 120–300 seconds so students have a reasonable minimum engagement window before being prompted.

Section 9

Frequently Asked Questions

Open the browser console on any lesson page and type TLVCP.playerType. It returns 'plyr', 'youtube', 'vimeo', 'html5', or null. A null value after 20 seconds means detection timed out and the plugin fell back to time-on-page tracking.
The Time on Page setting is set too low. Go to Tutor β†’ Lesson Completion Prompt and increase the non-video time threshold. Remember the timer counts real elapsed time since page load β€” not active reading time β€” so set a generously high value for long lessons (120–300 seconds is a good starting point).
There is no per-lesson toggle in the current version. The only built-in per-lesson exclusion is the _is_offline_lesson post meta flag β€” lessons with this flag set are automatically skipped by the plugin. As a workaround, offline lesson status can be applied to any lesson you want excluded from the popup.
The search field is repositioned by JavaScript to appear after .tutor-course-content-title on course pages, or after .tutor-course-single-sidebar-title on lesson pages. If your theme or another plugin renames or removes these elements, the repositioning will not find its target and the field may appear in an unexpected location. Check the browser console for any JavaScript errors related to the search field.
Check these in order: (1) Confirm the lesson is assigned to a topic within the course β€” unattached lessons are not returned by the search. (2) Confirm the search term is at least 2 characters. (3) The search uses partial matching, so any part of the title should find it. (4) Check the browser console for errors on the tls_search_lessons AJAX request.
Yes. Tutor LMS Pro’s native-hosted videos use the Plyr player (window.tutorLessonPlayer), which is the first detection priority. YouTube and Vimeo lessons embedded through Tutor LMS Pro are also supported via the dedicated YouTube and Vimeo detection paths.
Section 10

Troubleshooting

! Popup not appearing on a lesson
  • Confirm the license shows Valid on the License Management page
  • Confirm the student is logged in and enrolled in the course
  • Confirm the lesson is not already marked complete for that student
  • Confirm the lesson does not have the offline lesson flag set (_is_offline_lesson = 1)
  • Confirm the relevant enable toggle (video or non-video) is on in settings
  • If using a caching plugin, confirm lesson pages are excluded from full-page caching β€” stale cached pages will have invalid nonces
  • Open the browser console and check that tlvcpData is present in the page source
! Popup fires but Complete & Continue does nothing
  • Open the browser Network tab and look for the tlvcp_complete_lesson AJAX request β€” check its response for an error
  • Confirm the student is still enrolled β€” enrollment is re-checked server-side at the moment of completion
  • Confirm the tlvcp_nonce nonce is present in the page source (search for tlvcpData)
! Video popup not triggering at the configured percentage

Check which player was detected by opening the browser console and typing TLVCP.playerType. If it returns null, detection timed out and the plugin is using time-on-page tracking instead. Common causes:

  • The video player loads later than the 20-second detection window β€” check for slow-loading third-party embeds
  • A theme or plugin conflict prevents window.tutorLessonPlayer from being set before the detection window closes
  • YouTube or Vimeo iframes with modified URLs that don’t match the expected patterns β€” the plugin checks for youtube.com, youtu.be, and vimeo.com in the iframe src
! Lesson search field not appearing or not working
  • Confirm the Enable Lesson Search Field toggle is on in Tutor β†’ Lesson Completion Prompt
  • Check the browser console for JavaScript errors and confirm tlsData is present in the page source
  • If the field appears but search does nothing, confirm the page is not cached without the script localization data
  • If the field appears in the wrong position, check that .tutor-course-content-title (course pages) or .tutor-course-single-sidebar-title (lesson pages) exists in the DOM β€” the plugin uses these elements for repositioning
Section 11

Support

πŸ’¬

Need help? Visit the support portal

If you’re experiencing an issue not covered in this documentation or the troubleshooting section, submit a support request through the portal. Please include the details below to help resolve your issue as quickly as possible.

Open Support Portal β†’
Your WordPress version and PHP version
Your Tutor LMS version (Free or Pro)
Which feature is affected (popup or search field)
The video player type from TLVCP.playerType in the browser console (for popup issues)
Any JavaScript console errors and the full text of any relevant network request responses
Steps to reproduce the issue