Simple Course Timer


Please note that time is only tracked from the point at which this module is activated, and only for as long as it stays active. Historical records are not available; time tracking is only possible when this module is turned on.

The Simple Course Timer module is part of the Pro Suite of modules for the Uncanny LearnDash Toolkit. Turning it on tracks all time learners spend inside a LearnDash course, including on course, lesson, topic and quiz pages. With tracking enabled, both total time in course and completion time can be exported in LearnDash reports or displayed onscreen.

Time starts being tracked as soon as the module is enabled. The time columns are also added to the LearnDash course report automatically.

Time is tracked across all devices and courses, but time cannot be tracked when a user is directed away from the WordPress site on iOS and Android, such as when opening a PDF file or link in a new window. Our plugin can only track time when users are inside WordPress and that window is active in the browser, so if users are directed away from WordPress (this includes for full screen video), time tracking will stop while WordPress is in a background tab. If accurate time tracking is required for external resources on mobile devices, consider embedding then on your site instead. There’s nothing we can do to change this behaviour; mobile operating systems disable javascript when a window isn’t in focus to preserve battery live.

Note: Some caching plugins can cause the timer to loop and generate high load on the site. If you experience high resource usage, test with caching disabled.

Live Demo

See this module in action on our LearnDash demo site!

Idle Timeout

Once time tracking is enabled, you may want to make sure you’re tracking a learner’s actual time spent learning, not just leaving his or her browser open on a course page. That’s why the plugin can stop time from being tracked if a user spends too long on a page. When that happens, a pop-up message is displayed asking the user if they’re still on the page. Confirming activity resumes the timer, while navigating elsewhere or showing the message stops the timer.

Simple Course Timer settings modal

To change idle timeout behaviours, go into the Settings window for the module. From this page (pictured above), you can change the default idle time (this can be overridden at the lesson, topic and quiz level), the timeout message (what the user will see when the maximum idle time has been reached), the button label to confirm activity, the button label to exit the course, and where to redirect the user to if the latter button is clicked.

If no time is set in either the module settings or individual LearnDash pages, the default value of 900 seconds (15 minutes) will apply.

Minimum Course Time Before Quiz

If the Enable Quizzes after X time option is checked in the Simple Course Timer settings, a field is added to quiz pages that, when populated, will block users from attempting a quiz if they have not yet logged enough time in the course:



If a user attempts to access the quiz before spending the specified number of minutes in the course, they will see a message:

You must spend 60 minutes in the course before you can attempt the quiz. You have currently spent 18 minutes. Please go back and review course material before attempting the quiz.


The following shortcodes/blocks are available when the Simple Course Timer module is created:

[uo_time course-id=""]

Block Name: Course Cumulative Time

Displays total time spent inside a LearnDash course, including time spent after completing the course. If used without a course-id attribute, this shortcode/block must be used inside a LearnDash course. (We recommend using it on a course page or LearnDash sidebar.)

[uo_time_course_completed course-id=""]

Block Name: Course Time at Completion

Shows the time it took the learner to complete the LearnDash course.  If used without the course-id attribute, this shortcode/block must be used inside a LearnDash course.  There is no value for this shortcode/block until the user completes the course, and after completion, this value does not increase.

[uo_time_lesson lesson-id=""]

Shows the time spent in the associated lesson and any topics or quizzes associated with that lesson.

[uo_time_topic topic-id=""]

Shows the time spent in the associated topic as well as a quiz associated with that topic.

[uo_time_quiz quiz-id=""]

Shows the time spent in a quiz.

[uo_time_total user-id=""]

Shows the total time the user has spent across all courses on the site. This value represents the total time the user has spent on LearnDash post types from the time the Simple Course Timer module was activated.


When placed inside a LearnDash course, this shows the user’s active time in the course on load and then counts up in seconds in real time.


When the Simple Course Timer module is on, the LearnDash Course Report in Tin Canny includes additional columns for total time and completion time. Once again, the completion time value is only populated when the user completes the course.

The Simple Course Timer also adds additional columns to the reports in Tin Canny LearnDash Reporting.

14 replies
  1. Anna Puman
    Anna Puman says:

    I am looking for a way to set a minimum time for the course completion before the student has the possibility to download the certificate.
    At the moment, students only need to mark lessons as completed to pass the course and we have noticed that some do not take suffficient time to complete the course.
    Would the course timer plug-ing allow me to do so ?

    • Ryan
      Ryan says:

      Hi Anna, we don’t have a minimum time before completing a course, but if you add a quiz as the last step before course completion, the timer does offer the option of requiring users have a minimum amount of time in the course before they can access the quiz. That’s unfortunately the only solution here we can offer; right now we don’t plan to add a timer that restricts when the user can complete the course.

    • Ryan
      Ryan says:

      Can you confirm that you have Toolkit Pro installed and active, and the Simple Course Timer module is active? If that is the case, please do log a support ticket and let us know what you’re seeing onscreen.

    • Ryan
      Ryan says:

      The LearnDash course CSV report includes data for last login, I’m afraid that’s your best option here. Our plugins do not store or output last connection date/time. Sorry about that.

    • Ryan
      Ryan says:

      Hi Paulo,

      Total time outputs any time the user has spent in the course, before and after completion. “Completion time” takes a snapshot of the time captured when the user completes the course so you know exactly how long it took a user to complete it. This value will be empty if the user hasn’t yet completed the course, and after completion, the value won’t change if they spend more time in the course. (Total time will still collect time data after completion.)

  2. Geoffrey Smith
    Geoffrey Smith says:

    Can the minimum amount of completion time before a quiz can be taken be set to a specific quiz and not sitewide?

    • Ryan
      Ryan says:

      The minimum time for a quiz currently considers time for the course rather than total time sitewide. The value is set on the quiz edit page for the course. If you’re seeing any issues or have questions about the behaviour, we can provide more guidance if you open a ticket.

  3. Louise
    Louise says:


    If a user activates/ starts the course and has to step away so they log out of the system and back in say a few hours later is the time paused and then restarted once they launch the course again?

    • Ryan
      Ryan says:

      If the user is logged out, no time would be tracked. If the user is signed in but becomes inactive, time tracking would stop when the Idle Timeout feature described above kicks in. When the “Are you still there?” modal is shown, no time is tracked.

  4. Pierre Guilhem
    Pierre Guilhem says:

    Your video was published 7 years ago and you explain in it that you track time on finer granularities than the course: at lesson, topic and quiz level.
    I’ll need access to this data. What solution do you propose today?

    • Ryan Moore
      Ryan Moore says:

      Hi Pierre, that’s where the newer shortcodes like [uo_time_lesson] come in; we also have versions for quizzes and topics. You can use those output time on a more granular level.



Please note that this is not a support forum. If you are experiencing issues on your site, please open a support ticket instead. Site-specific support questions submitted as comments will be unanswered.

Leave a Reply

Your email address will not be published. Required fields are marked *