Annual Compliance Programs with WordPress

It seems like a simple scenario: Staff need to complete the same courses every year and those completions need to be tracked. Yet, if you deliver your elearning programs with WordPress, you probably know how difficult this is to achieve. Here’s where things with a WordPress-based LMS start to break down:

  1. WordPress LMS plugins don’t track historical completions. Once a learner completes the course once, that’s it. They can’t trigger a second completion.
  2. If you reset course progress, it resets everything. That’s probably why plugins make it difficult or impossible to reset progress.

With the help of some addon plugins, however, it is absolutely possible to use WordPress as a platform to deliver annual compliance training. This article outlines how you can do it with the popular LearnDash LMS plugin for WordPress.

Create a Permanent Record of Course Completions

This is really the most important step. If you can’t track historical completions, you can’t offer annual compliance programs. Fortunately, one of our commercial LearnDash plugins makes this easy.

The Uncanny Continuing Education Credits plugin automatically creates a permanent record of completions as users finish courses. Don’t let the name fool you; the plugin does far more than award credits for completing courses. And, for our scenario here, we don’t even need to consider the credit or certificate features included with the plugin. We just need to use it for the permanent record, so ignore the CEU and Total columns.

Historical Course Completions

The records in the table above are not pulling data from LearnDash, but rather the permanent course archive that the plugin captures automatically. As soon as the plugin is installed it records all new completions to the permanent record, so you never need to worry about progress resets or LearnDash changes affecting historical records.

Reset Course Progress

Now that you’re storing a permanent record of course completions, you need a way to reset user progress in courses so that they can retake them. After all, you don’t want to have to clone out a course each year and re-enroll students in the new one just so they can complete it again.

One very simple option here is to use the Uncanny LearnDash Toolkit Pro plugin, with its Reset Button module, to allow users to reset their own progress and take the course again. Once it’s turned on, just drop the [uo_reset_course_progress] shortcode onto any course page where users need to reset progress. The button that it adds will allow users to retake the course and wipe out their previous progress (which is why it’s so important to have the historical record in place).

Another option here is our Uncanny Automator plugin. With it, you can create “triggers” that reset progress for a course. An easy Automator recipe here would be to set up a recipe that resets a user progress in a course as soon as they complete it. This is what the recipe might look like:

Reset Course Progress on Completion

If you’re a developer, you can even build your own workflows for resetting progress that better match your context. The Reset Button module mentioned above as part of Pro includes some tools that make it possible to incorporate our reset functions into your own code. More information is available in the Knowledge Base article.

Other Options for Compliance Tracking

The solutions above require the use of 2 to 3 paid plugins, but there are possible workarounds that can be used with a bit more work. If you use a CRM and a tool like WP Fusion, you could potentially use Tags to track completion records instead of our Continuing Education Unit plugin. On an annual basis, what you could do is change completion tags in your courses so that it identified the course and year. In other words, maybe on completion of a course called “Physics” you set a tag of “Completed Physics – 2019”. You could then filter on the CRM side to show only users with that tag to see who was assigned that tag. You will still of course need some way to reset course progress, and for that options are more limited.

By adding plugins to your LearnDash site like the ones mentioned above, it is very possible to offer annual compliance programs on your site that keep historical records and do allow users to retake the courses every year.

If you have your own solution for offering annual compliance training that’s different than what’s outlined above, let us know your solution in the comments!

author avatar
Ryan Moore Director
Ryan Moore (MA, PMP, BCom) is the Cofounder and Director of Uncanny Owl, creators of Uncanny Automator and a suite of popular add-ons for LearnDash. Since 2013, Ryan has helped thousands of companies add elearning and automation capabilities to their WordPress websites.
7 replies
  1. Peter Carqueville
    Peter Carqueville says:

    Its a good plugin, sure. Sadly, this blog post does not cover even basic requirements for annual training or re-certification programm say for example for data protection standards.

    It is missing the part where the training is required annually. How would the user know it its time again for him? How would the admin track progress for every available user regarding individual progress? Sure, he could export the progess report provided by this plugin, but he would still have to match this to his employment records.
    Now, this part could be solved by firstly using fixed dates for annual retraining, regardless of employment date. But wait, there is more:

    It is missing automatic E-Mail-Reminders when the new training year for each user has started (not a fixed date but rather a number of days after first enrollment). It lacks any kind of automatic escalation for when the user misses his yearly training program or at least when he is nearing the end of his course availability.

    Now maybe all this could be achieved with certain configurations of learndash and various extra plugins. But testing this would be a nightmare, and as of yet there remains no clear cut way to offer automated training programms via learndash LMS.

    • Ryan
      Ryan says:

      Hi Peter,

      Thanks for the feedback!

      This blog post was intended to show how some of the main technical challenges with offering annual training might be addressed, but as you say, there’s a lot more that must go into it. You also mention that “it’s a good plugin”, but the approaches above include 4 plugins, so I’m not sure which one you mean. Certainly a viable solution to annual training is going to need multiple plugins. There are solutions available though, and maybe I can explain how we might approach what you highlighted in your comment.

      For annual notifications based on start date, we would lean on a CRM there. Let’s say there is a CRM in place and you have tags that are a combination of course and year, as well as a tag based on role (so we know what courses the user needs to complete). On the CRM side you can create an automation that looks like this: After the user is registered in the system (start date), wait 335 days, then check if tag course-year exists. If it doesn’t, send a reminder that the course must be completed within 30 days. Wait 30 more days, then send an email that next year’s course is now available. The notifications can be handled in a pretty straightforward way using a CRM and the tag checks. Group Leader review is more complex, but let’s say you use WP Fusion and have tag-based group enrollment, where groups have the courses added that are associated with that role. On the reporting side, by using groups this way then the Group Leader can run completion reports by group to see who has completed courses for the year and who hasn’t.

      On the user side, you keep things organized by only showing enrolled courses. When a user completes a course, you use Automator to reset progress and remove the user from the course on completion (with the CEU plugin keeping the permanent record). Of course you have to get the user back into the course the following year, so for that you can use an enrollment tag in another automation (when user is assigned the course tag initially based on role, wait 365 days and apply a new course-year-enrolled tag, repeat; and annually this tag is used to set autoenrollment in courses). I know, it’s all a bit complicated but there’s still no development needed.

      You’re right, reconciliation with another system could be quite difficult, but perhaps with Automator and Zapier you could build something that would work. I agree that it’s not straightforward, and it does include dependencies on a CRM and other plugins, but it does at least open up automated recurring training possibilities.

  2. Peter Carqueville
    Peter Carqueville says:

    Thank you for your reply. You gave some very good suggestions on how to handle annual compliance programms with a CRM – I saw this outlined somewhere elso and I think you are right, this might be the way to go, even if its not yet completely automated.

    Btw, I meant the continuing credits plugin.

    • Ryan
      Ryan says:

      Everything is erased. Our Continuing Education Credit plugin can keep a permanent record of course completion, but LearnDash doesn’t offer a way to store historical data for course progress. A third party solution that replicates everything would be difficult to build.



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 *