Install LOOP
Requirements
- Moodle 4.5.4 or later. LOOP is tested on 4.5, 5.0, 5.1 and 5.2, on both MySQL/MariaDB and PostgreSQL. The installer refuses anything below 4.5.4.
- PHP 8.1 or later.
- Moodle cron running regularly.
- Nothing else: no other plugin, no Composer step, no Node build. The zip works as installed.
Why the floor is 4.5.4 and not 4.5.0
On Moodle 4.5.0 to 4.5.3, deleting a course fails on servers with a current PCRE2 library, because of a defect in Moodle itself (MDL-84907) that has nothing to do with this plugin. It is fixed from 4.5.4.
Steps
- Copy the
loopfolder intolocal/in your Moodle installation, so that it sits atlocal/loop. On Moodle 5.1 and later, that ispublic/local/loop. - Visit Site administration → Notifications and let Moodle run the database upgrade.
- Configure the plugin at Site administration → Plugins → Local plugins → LOOP → Settings. Every setting has a working default; see Site settings.
- Activate your licence — see Activate the licence.
- Grant the capabilities to whoever needs them. All three are given to managers only when the plugin is installed — see Capabilities.
- If the site already has course completions that predate LOOP, run Recalculate before anybody looks at the dashboards.
Configure before you enrol anybody
Order matters, and waiting does not fix it
LOOP starts tracking a person when Moodle records an enrolment on a course that already belongs to a certification. Enrol somebody first and attach the course afterwards, and nothing happens for them: no status row, no Pending, no enrolment notice. No scheduled task revisits past enrolments.
On a new site, work in this order:
- Create the certification — its validity period, completion timeframe and warning window. See Your first certification.
- Attach its courses as editions, by hand or by linking them automatically. Until a course is an edition of a certification, enrolling somebody on it means nothing to LOOP.
- Set the notices you want sent on enrolment or completion. A notice switched on later cannot send for an event that has already happened.
- Then enrol people, or open the course to enrolment.
If people are already enrolled by the time you read this, Recalculate reads Moodle's existing enrolments and completions and writes the state that follows from them. You can run it as often as you like.
Check that cron is running
LOOP moves statuses to Expiring and Overdue, closes the cycle of lapsed certificates, picks up new courses as editions and sends queued email from scheduled tasks. Without cron the figures stop moving — no error, just numbers that stay where they were, with the date they were worked out shown on every page.
Check Site administration → Server → Scheduled tasks and look for the nine LOOP entries listed in Scheduled tasks.

Uninstall
Uninstalling from Site administration → Plugins → Plugins overview removes LOOP's tables, including the certification history.
Export first
Take a CSV export of your certifications and editions, and run any Report Builder report you rely on, before uninstalling. Both work without a licence, so there is no reason to skip this.
If you reinstall without an export, a recalculation rebuilds the certificates and the statuses from the course completions still in Moodle. What it cannot rebuild is what was never derived from completions: the certifications and editions themselves, the wording of your notices and the message delivery logs.
Uninstalling also releases this site's slot on the licensing server, so the key can be used elsewhere.