Joomla 6 ready — all extensions now run natively on Joomla 5 and Joomla 6.

EasyLearn Documentation

Certificates

Issue certificates automatically, configure expiry reminders via cron, and manage certificate renewal.

Overview

EasyLearn can automatically issue certificates when a student completes a course or passes a final exam. Certificates are printable, have a unique ID, and can optionally expire after a set number of days.

The certificate system includes:

  • Automatic issuance — Certificates are generated the moment the requirement is met.
  • Expiry dates — Optional validity period with automatic status tracking.
  • Email notifications — Alerts when certificates are issued, about to expire, or expired.
  • Renewal — Students can renew expired certificates by re-completing relevant content.
  • Logo inheritance — Certificate logos follow the global → category → course hierarchy.

Enabling certificates for a course

Certificates are disabled by default. To enable them for a specific course:

  1. Open the course editor

    Edit the course in the backend or frontend admin.

  2. Go to the Certificate tab

    Switch to the Certificate tab (or Certificate Settings in the frontend admin).

  3. Enable and configure

    Set Enable Certificate to Yes and configure the settings below.

Certificate settings per course

SettingOptionsDescription
Certificate requirement Completion / Exam passed Completion: Certificate issued when all lessons are completed. Exam passed: Certificate issued when the student passes the final exam.
Validity period 0–3,650 days How many days the certificate is valid after issuance. Set to 0 for no expiry. Inherits from category or global if left at 0.
Certificate logo Image upload Logo displayed on the certificate. Inherits from category or global if not set.

How automatic issuance works

Certificates are issued automatically — no manual action is needed:

  • Completion-based: When a student completes the last lesson in a course, the system checks if all lessons are done and issues the certificate.
  • Exam-based: When a student passes the final exam, the certificate is issued immediately with the exam score recorded.

Each certificate gets a unique number in the format: [PREFIX]-[YEAR]-[RANDOM] (e.g. EL-2026-A8SKK6). The prefix is configurable at global, category or course level.

Certificate issued email

When a certificate is issued, the student receives an email notification (if configured). The email template can be customised at global, category or course level. See Component Settings for available placeholders.

The certificate page

Each certificate has a dedicated printable page at /courses/certificate/[id]. The page shows:

  • Certificate logo (inherited from course, category or global)
  • Student name
  • Course title
  • Issue date and (if applicable) expiry date
  • Exam score (if exam-based)
  • Instructor name
  • Unique certificate ID
  • A Print button (hidden when printing)

Expired certificates display a red "EXPIRED" banner across the corner.

7 1 certiicate page

Certificate expiry

When a validity period is set, the certificate has an expiry date calculated as: issue date + validity days.

Expiry is checked in real time based on the expires_at date — not on a stored status field. This means certificates show the correct status even without the cron job running, but the cron job is needed for sending email reminders.

Certificate statuses

StatusMeaning
Active The certificate is valid and has not expired.
Expired The expiry date has passed.
Superseded The certificate has been replaced by a new one (after renewal).

Email notifications

EasyLearn can send email notifications at various points in the certificate lifecycle. Notifications are configured per course on the Certificate Notifications tab.

Notification recipients

RecipientDescription
Student The student who owns the certificate. Enabled by default.
Instructor The course instructor. Enabled by default.
Extra recipients Additional email addresses (e.g. HR, compliance). Enter one email per line. Disabled by default.

Notification timing

For each recipient group, you can enable notifications at these timing points:

TimingWhen it fires
30 days before 30 days before the certificate expires
7 days before 7 days before expiry
1 day before 1 day before expiry
On expiry The day the certificate expires
1 day after 1 day after expiry
7 days after 7 days after expiry

Each notification is sent only once (tracked in the database to prevent duplicates). Email templates can be customised at global, category or course level.

Setting up the cron job

Certificate expiry reminders are sent by a CLI command that must be run on a schedule. Without this cron job, certificates will still expire correctly, but no reminder emails will be sent.

The command

CLI php cli/joomla.php easylearn:send-certificate-reminders

Options

OptionDescription
--dry-run Preview which emails would be sent without actually sending them. Use this to test your configuration.
--course-id=X or -c X Only process certificates for a specific course (by course ID).

Setting up the cron job

The command should run once daily. Add this to your server's crontab:

Crontab 0 6 * * * cd /path/to/your/joomla && php cli/joomla.php easylearn:send-certificate-reminders

Replace /path/to/your/joomla with the actual path to your Joomla installation.

Testing first

Before setting up the cron job, run the command manually with --dry-run to verify it finds the right certificates and would send the right emails:

CLI cd /path/to/your/joomla php cli/joomla.php easylearn:send-certificate-reminders --dry-run

What the command does

  1. Marks expired certificates — Updates any active certificates that have passed their expiry date.
  2. Finds certificates matching notification criteria — Checks each timing point (30 days, 7 days, etc.) against all certificates with expiry dates.
  3. Sends emails — Uses course-specific email templates (falling back to category, then global templates). Supports all placeholders.
  4. Logs notifications — Records each sent notification to prevent duplicates on subsequent runs.

Logging

The command writes to a log file at /administrator/logs/easylearn_reminders.log and outputs progress to the console. Check this file if notifications are not being sent as expected.

Shared hosting

If you are on shared hosting that does not support cron jobs, check if your hosting provider offers a "scheduled tasks" or "cron jobs" feature in the control panel (cPanel, Plesk, etc.). Most hosting providers offer at least basic cron support.

Certificate renewal

When a certificate expires and the course has a validity period, students can renew their certificate by re-completing relevant content.

How renewal works

  1. Student sees the expired certificate

    On the course page, the student sees that their certificate has expired, along with what they need to do to renew it.

  2. Student clicks "Renew Certificate"

    A confirmation dialog explains what will be reset. The student confirms to proceed.

  3. Progress is reset

    Based on the renewal settings, the student's progress is reset for the relevant lessons and/or quizzes.

  4. Student re-completes the content

    The student works through the required content again.

  5. New certificate is issued

    When the requirement is met again, a new certificate is issued automatically. The old certificate is marked as superseded.

Renewal reset options

Reset typeWhat gets reset
Entire course All lesson progress and quiz attempts in the course are deleted. The student starts completely fresh.
Specific items Only selected lessons and/or quizzes are reset. Choose which items from a list when configuring. Useful when only part of the course needs to be re-done.

The renewal type is configured per course on the Certificate Renewal tab. It is only available when certificates are enabled and a validity period is set.

Certificate logo inheritance

The logo shown on the certificate follows the standard inheritance chain:

Course logo (if set)   → Category logo (if set)     → Global logo (from component settings)       → No logo (if nothing is configured)

This allows you to set a company logo globally, department logos at the category level, and course-specific logos where needed.

Managing certificates

Administrators can view all issued certificates from the Certificates view (accessible from both the Joomla backend and the frontend admin menu).

The certificate list shows:

  • Student name
  • Course title
  • Certificate number
  • Issue date and expiry date
  • Status (active, expired, superseded)

Four summary cards at the top show total, active, expiring soon and expired certificates.

Filters are available for course and status.

7 2 certificate list view

logo hvid

Sanderumvej 82, 5250 Odense SV, Denmark
VAT: DK33799888

Cron Job Starts