Learnomy

Issuing and Verifying Certificates

Free & Pro

Learnomy issues certificates automatically when a student completes a course. Every certificate carries a UUID, an Ed25519 cryptographic signature, and a public verification URL that anyone can open to confirm it is genuine.

Overview

You do not manually issue certificates. The system issues them at the moment a student's course completion is recorded. The admin Certificates list at Learnomy > Certificates shows every issued certificate, with filters to search, narrow by status, and take bulk actions. Certificates that are no longer valid can be revoked individually or in bulk.

How automatic issuance works

When a student satisfies the completion requirement set on a course (all lessons completed, lessons plus final quiz, a percentage threshold, or manual completion), the following happens automatically:

  1. Learnomy records the completion and fires the learnomy_course_completed action.
  2. Certificate_Service checks whether the course has Award a certificate on completion enabled and a template assigned.
  3. If both conditions are met, the service calls Certificate::issue(), which writes a new row to lrn_certificates with a UUID v4 identifier, a status of active, and a timestamp.
  4. The certificate is signed using Ed25519. The private key is stored in WordPress options (encrypted with AUTH_KEY). The public key is embedded in the signed payload.
  5. The student receives a certificate email notification (if enabled) and the certificate appears immediately on their My Certificates page at /account/certificates/.

If a student retakes a course and Reset progress on retake is on, a new certificate is issued upon the next completion.

The admin Certificates list

Go to Learnomy > Certificates to see all issued certificates.

Certificates list overview

The table columns are:

Column Contents
Student Avatar, display name
Course Course title
Certificate ID First eight characters of the UUID (hover or copy for the full ID)
Issued Issue date in your WordPress date format
Expires Expiry date, or "Never" if the certificate has no expiry
Status Active or Revoked
Actions View (opens the public verification page) and Revoke

Certificates table

Filtering and searching

The filter bar at the top of the list lets you narrow results by:

  • Status: All statuses, Active, Revoked, or Expired.
  • Course: A dropdown of courses that have at least one certificate issued.
  • Student or certificate ID: Free-text search. Learnomy resolves names and email addresses to user IDs, then searches. You can also paste a full or partial UUID.

Pagination keeps the active filters as you move through pages.

Revoking a certificate

Revoking marks a certificate as no longer valid. The public verification page immediately shows "Certificate Revoked" to anyone who visits the URL.

Revoke a single certificate

  1. Find the certificate in the list.
  2. Click the Revoke action in the row. Revoke is only shown for active certificates.

Bulk revoke

  1. Check the checkboxes on the rows you want to revoke.
  2. Choose Revoke from the Bulk Actions dropdown.
  3. Click Apply.

A revoked certificate cannot be reactivated from the admin UI. To reissue, the student needs to complete the course again (or the admin can issue one via the REST API).

The public verification page

Every certificate has a unique public URL:

/verify/<uuid>

No login is required to visit it. When a valid certificate UUID is in the URL, the page shows:

Valid certificate verification result

The result block shows the recipient name, course title, issue date, credential ID, and a "Valid" status badge.

Verification result detail

The page also shows:

  • A rendered preview of the certificate design (scaled to fit the browser viewport).
  • A Download button for the PDF (if the certificate template renders a PDF).
  • A Print button that opens a print-ready HTML version.
  • A Share section with a LinkedIn "Add to Profile" link and a copy-link button.
  • A QR code (if the template includes a QR Code element) linking back to this same URL.

What happens for invalid IDs

Scenario What the visitor sees
UUID matches an active certificate "Certificate Verified" result block
UUID matches a revoked certificate "Certificate Revoked" message
UUID does not match any certificate "Certificate Not Found" message
No UUID in the URL A form to enter a credential ID manually

Verification count

Each time the verification page is loaded for a valid UUID, Learnomy increments the verification_count and updates last_verified_at on the certificate row. You can see these values via the REST API or WP-CLI. They are useful for spotting unusual spikes that could indicate credential sharing.

Student experience

Students access their certificates at /account/certificates/. Each certificate shows as a card with the course name, issue date, short credential ID, and action buttons.

Student certificates page

Each card has:

  • Verify - opens the public verification URL.
  • Add to LinkedIn - pre-fills the LinkedIn "Add Certification" form with the course name, organization, issue year/month, and credential ID.
  • Share - copies the verification URL to the clipboard.
  • Download - downloads the PDF.

Certificate card actions

If a certificate's course has been deleted, the card still shows and remains verifiable. The title reads "Course archived (certificate still verifiable)" so the student understands the context.

Tips

  • Certificates are attached to the course, not to a lesson or quiz. A student must complete the entire course to trigger issuance.
  • Expiry is optional. If you set an expires_at on a certificate (via the REST API or Pro features), Learnomy's daily cron job flips the status to expired automatically once the date passes.
  • The verification URL is stable for the lifetime of the certificate. Share it on resumes, LinkedIn, or anywhere that needs a clickable credential link.
  • Revoking is permanent in the admin UI. Use it only when a certificate was issued in error or a student's completion was fraudulent.

Related