Using Moodle Activity Completion to Automate Learner Progress Tracking
Learn how Moodle’s activity completion feature replaces manual checks with automatic criteria‑based tracking, and see a concrete setup for a weekly reading‑quiz workflow.
24 Aug 2025, 06:06 UTC

The problem: guessing who’s done what
In many courses instructors need to know whether students have finished a required reading, submitted a quiz, or participated in a forum before moving on to the next topic. Without automation, the only option is to open each activity, check grades or view logs, and manually mark progress—a process that becomes tedious in larger classes and delays timely interventions.
Thesis: activity completion turns guesswork into reliable data
Moodle’s activity completion feature lets educators define clear, criteria‑based rules (view, grade, or manual) for each resource or activity. When those rules are satisfied, Moodle automatically records completion in the mdl_completions table, and the data feeds into reports such as the Course completion block and the Activity completion report.
How activity completion works under the hood
When a user accesses an activity, Moodle’s completion evaluation engine checks the activity’s completion settings against the user’s state. This evaluation is not performed on every page load by default; instead, a scheduled cron job runs the evaluation process, updates the mdl_completions table, and makes the results visible in reports. The key tables involved are:
mdl_completions– stores one row per user‑activity pair with a timestamp and completion state.mdl_course_modules– links activities to their completion settings.
If cron is not running frequently enough, completion updates can be delayed, leading to stale progress information.
Configuring completion for common activity types
File resource (view‑based)
- Turn on completion tracking site‑wide: Site administration ► Advanced features ► Enable completion tracking.
- Edit the File resource, open the Activity completion section.
- Select Show activity as complete when conditions are met.
- Check Require view.
- Optionally set an Expected completed on date to give learners a target.
- Save and return to the course.
Quiz (grade‑based)
- Edit the Quiz, go to Activity completion.
- Choose Show activity as complete when conditions are met.
- Check Require grade and set the minimum grade (e.g., 80%).
- Save.
Forum (manual or discussion‑based)
- Edit the Forum, open Activity completion.
- Select Show activity as complete when conditions are met.
- Check Require discussions and/or Require replies as needed, or choose Require manual completion if you want the instructor to tick it off.
- Save.
Worked example: weekly reading‑quiz workflow
Suppose each week you want students to:
- View a PDF reading (File resource).
- Score at least 80% on a related Quiz.
You configure the File with Require view and the Quiz with Require grade >= 80%. When a student opens the PDF, Moodle marks the File as complete after the next cron run. After they submit the quiz and achieve the required grade, the Quiz becomes complete. The Course completion block can be set to require both items, so the overall weekly progress only appears when both are ticked.
To verify:
# As admin, run cron manually to force evaluation
php admin/cli/cron.php
Then check the mdl_completions table:
SELECT userid, cmid, completionstate, timecompleted
FROM mdl_completions
WHERE userid = (SELECT id FROM mdl_user WHERE username = 'student1')
AND cmid IN (SELECT id FROM mdl_course_modules WHERE instance IN (SELECT id FROM mdl_resource WHERE name LIKE 'Week%PDF'));
You should see completionstate = 1 and a timestamp after the file was viewed. The Activity completion report (accessible via the course > Reports > Activity completion) will show a checked box for both the File and the Quiz.
Trade‑off and limitation
Activity completion adds a small but non‑zero load to the cron process because each run evaluates every tracked activity for every user. On very large sites (tens of thousands of users) this can noticeably increase cron runtime; monitoring cron logs and adjusting the frequency (e.g., every 5 minutes) helps balance timeliness with resource use.
A more important limitation is that changing completion criteria after students have already attempted an activity does not retroactively update existing records. A student who viewed a file before you added a Require view condition will still show as incomplete until they view it again (or you manually reset their completion via the Activity completion report or a plugin).
Actionable closing
- Enable completion tracking site‑wide and train course creators with a quick‑start checklist: set view‑based criteria for resources, grade‑based for quizzes, and manual or discussion‑based for forums.
- Ensure the Moodle cron runs at least every five minutes (check Site administration ► Server ► Cron for the last run time).
- Monitor the Completion progress report regularly to spot learners who are falling behind and intervene early.
- If you need to change criteria for past attempts, plan a manual reset or use a community plugin that reprocesses completions.
By leveraging activity completion, you replace guesswork with reliable, automatically updated progress data—freeing instructors to focus on teaching rather than tracking.
0 replies
A thoughtful contribution can make all the difference. Be the first to share one.