preloader

LearnDash Course Progress Not Updating? Here Is the Fix

LearnDash tracks student progress through courses, showing a completion percentage that updates as students complete lessons, topics, and quizzes. This progress indicator is essential for students to know how far they have come and for instructors to monitor class performance. However, sometimes the course progress stops updating, showing a lower percentage than the student has actually achieved, or it may not update at all, leaving students confused about what they still need to complete.

This problem can be particularly frustrating for students who have completed all course requirements but cannot see their progress reflected. They may repeatedly contact support asking why their certificate has not been issued or why the course is still marked as incomplete. The issue may affect all courses or only specific ones, and it may appear suddenly after updating LearnDash or installing a caching plugin.

The most common cause of this problem is that a caching plugin is serving stale course progress data. Another cause is that JavaScript conflicts prevent the progress tracking script from executing correctly. Server timezone issues can also cause date-based progress tracking to fail, especially for courses that use drip-feed content scheduling.

Why LearnDash course progress fails to update

LearnDash tracks student progress using a combination of user meta data and post meta data. When a student completes a lesson, quiz, or topic, LearnDash updates these meta values and recalculates the overall course progress percentage. If the page is cached, the cached version may show the old progress percentage even though the underlying data has been updated. This is especially common on course overview pages that list multiple courses with progress bars.

Another common cause is that JavaScript conflicts are preventing the “Mark Complete” button from working correctly. When a student clicks the “Mark Complete” button, LearnDash sends an AJAX request to the server to record the completion. If another plugin’s JavaScript causes an error, this AJAX request may never be sent, and the progress will not be updated. The student may see a loading spinner that never finishes, or the button may appear to work but no progress is recorded [citation:2].

Server timezone issues can also affect course progress tracking, especially for courses that use drip-feed scheduling. If the server timezone is different from the WordPress timezone, the calculations for when lessons become available may be off, causing students to be unable to mark lessons as complete even after completing all requirements.

How to check if course progress is being recorded correctly

As a test student, complete a lesson and then check the user meta table (using a plugin like User Meta Editor) to see if the completion has been recorded. Look for meta keys like course_[course_id]_completed or lesson_completed_[lesson_id]. If these meta keys exist and have the correct values, the progress is being recorded correctly, and the issue is with displaying it. If the meta keys are missing, the progress is not being recorded at all.

Step by step guide to fixing LearnDash progress problems

Follow these steps in order to restore proper course progress tracking in LearnDash. Start with the simplest solutions before moving to more advanced troubleshooting steps.

  • Clear all caches including plugin cache, CDN cache, and browser cache completely
  • Exclude LearnDash course pages from caching plugins (add /courses/, /lessons/, /quiz/ to exclusion lists)
  • Disable JavaScript defer or delay features for LearnDash scripts in caching plugins
  • Check the browser console for JavaScript errors when clicking the Mark Complete button
  • Temporarily deactivate all other plugins to test for JavaScript conflicts
  • Switch to a default WordPress theme to test if the theme interferes with progress tracking
  • Verify that the WordPress timezone setting matches the server timezone
  • Repair the database using the WordPress database repair tool
  • Update LearnDash to the latest version available from the official website
  • Manually update progress for affected students using the LearnDash reporting add-on

How to exclude LearnDash pages from caching in popular plugins

In WP Rocket, navigate to Settings → WP Rocket → Advanced → Never Cache URLs and add the following patterns: /courses/, /lessons/, /quiz/, /my-courses/, /my-account/. In LiteSpeed Cache, go to Cache → Excludes → Do Not Cache URIs and add the same patterns. In W3 Total Cache, go to Performance → Page Cache → Advanced → Never cache the following pages and add the URL patterns. After adding these exclusions, clear all caches and test course progress tracking again.

LearnDash progress troubleshooting reference table

Here is a reference table for diagnosing course progress problems in LearnDash based on specific symptoms you might encounter.

Symptom Most likely cause Recommended solution
Progress not updating on course overview page Caching plugin serving stale progress data Exclude course pages from caching and clear all caches
Mark Complete button does nothing JavaScript conflict or AJAX request blocked Check browser console and whitelist AJAX in security plugins
Progress updates but shows wrong percentage Calculation issue or incomplete lesson/quiz data Check lesson and quiz completion requirements
Progress works on desktop but not on mobile Mobile-specific JavaScript issue or touch event conflict Test on real mobile devices and check console for errors

For more information about LearnDash course settings, visit the LearnDash page on wpwizzy.com.

Preventing LearnDash progress problems in the future

Exclude all LearnDash course pages from caching plugins as soon as the site is launched, as cached progress data is one of the most common sources of user confusion. Configure caching plugins to serve separate cached versions for logged-in users (who have dynamic progress data) and logged-out users (who see static content). Clear all caches immediately after making changes to course settings or after updating LearnDash.

Test course progress tracking regularly with a test student account, especially after plugin or theme updates. Use a staging website to test major changes before applying them to the live production site, and keep LearnDash and all other plugins updated to their latest versions on a regular schedule. Document any custom exclusions added to caching plugins for LearnDash pages for future reference, and regularly check the browser console for JavaScript errors that might affect progress tracking.

Keep Reading

Previous Post LifterLMS Quiz Answers Not Saving? Here Is the Fix Next Post Tutor LMS Translation Not Working with WPML? Here Is the Fix

Need Help With Your WordPress Site?

If you need help with WordPress fixes, plugin issues, theme customization, or development work, feel free to get in touch.

Get a Free Estimate