Certificate and Compliance Manager for Learndash — Documentation
Issue, verify, manage and report on Learndash certfificates. Supports persistent issuance and evidential records.
Overview
Certificate Compliance Manager for LearnDash (CCM) adds durable certificate IDs, public verification, expiry management, email delivery and compliance reporting to LearnDash’s native certificate system.
CCM supports Course, Quiz and Group certificates. Each qualifying award creates a frozen issuance record containing the learner, certificate, award context, completion date and expiry rule at the time of issue. Optional Course evidence can also record LearnDash course-step completion, quiz assessment results and first-pass or retake history.
Learners continue to use LearnDash’s normal certificate flow. CCM adds unique certificate IDs, locally generated PNG QR codes, secure public verification links and additional shortcodes to your existing native certificate designs. It does not replace the LearnDash certificate editor or require a separate certificate template system.
Administrators can search and manage issued credentials, adjust expiry dates, revoke or reactivate records, resend certificate emails and provide scoped front-end reporting access to designated Compliance Officers.
Requirements
| WordPress | 7.0 or later; 7.0.2 tested for V1 |
| PHP | 8.1 or later with GD and mbstring; PHP 8.3 tested |
| LearnDash | 5.1.8 or later required; LearnDash 4 is not supported |
| Certificate scope | Native LearnDash Course, Quiz and Group certificates |
| Public verification | A publicly reachable site and working WordPress permalinks are required for verification links and QR codes. |
| Email delivery | A working WordPress email configuration is required. Certificate PDFs use LearnDash’s native PDF renderer. |
| WooCommerce | Not required for certificate issuance or verification |
| Free trial | 15 days of full CCM functionality |
| Licences | CCM Pro activates one production site; CCM Agency activates up to ten production sites |
Quick Start
- Install & activate — Requires WordPress 7.0+, LearnDash 5.1.8+ and PHP 8.1+ with GD and mbstring. WooCommerce is not required. New installations begin with a 15-day full-feature trial.
- Configure CCM — Open Certificate Compliance → Settings. Choose your certificate ID format, default expiry rule, public verification fields and email options.
- Prepare a native certificate — Create or edit a certificate under LearnDash LMS → Certificates. Add the CCM shortcodes you want to display, such as the certificate ID, verification URL and PNG QR code.
- Assign the certificate — Use LearnDash’s normal settings to assign it to a Course, Quiz or Group. CCM does not replace LearnDash’s certificate assignment or completion rules.
- Run a test award — Complete the relevant Course, Quiz or Group with a test learner. Confirm the issuance record, email and PDF where enabled, native certificate fields and public verification page before using CCM with live learners.
User Guide
Certificate IDs, expiry and issuance
Certificate ID formats
Choose the ID format before issuing live certificates. Existing IDs never change when the format, prefix or starting sequence is updated.
| PREFIX-YEAR-000001 | Includes your prefix, the learner’s completion year and a sequential number. |
| PREFIX-TYPE-000001 | TYPE becomes COURSE, QUIZ or GROUP. It does not insert the award title. |
| PREFIX-AB12-CD34 | Uses your prefix with randomly generated mixed segments. |
| 1234-5678-9012-3456 | Generates a numeric segmented identifier without a custom prefix. |
The custom prefix accepts 2–12 letters or numbers. The starting sequence is used only before the first sequential ID is issued; CCM does not reset or reuse sequence numbers.
Expiry rules
Set the default under Certificate Compliance → Settings. Each native LearnDash certificate can inherit the default or override it from the Certificate Verification Expiry panel.
| Use global default | Follows the current default duration when a new certificate is issued. |
| Never expires | Creates the issuance without an expiry date. |
| After completion | Calculates expiry in days, months or years from that learner’s completion date. |
| Fixed date | Applies the selected calendar date to new issuances using that certificate. |
The resolved expiry date is frozen into each issuance. Changing a certificate rule later does not rewrite historical records. Administrators can adjust an individual record’s expiry from Issued Certificates.
When CCM creates a record
CCM creates an issuance when LearnDash awards an assigned native Course, Quiz or Group certificate. A Quiz must meet LearnDash’s Certificate Awarded for threshold, which may be different from its ordinary passing score.
Installing CCM, editing a certificate or activating a licence does not silently create historical records. A later genuine retraining or qualifying award creates a new issuance while earlier credentials remain unchanged.
Native certificate shortcodes
Add CCM shortcodes to the normal LearnDash certificate editor. They resolve for the specific learner and award represented by the protected LearnDash certificate URL.
[lecv_certificate_id] | Unique ID of the current issuance. |
[lecv_certificate_verify_url] | Secure public verification URL. |
[lecv_qr_code size="180"] | Locally generated PNG QR code. Change the numeric size as required. |
[lecv_certificate_status] | Valid, Expiring Soon, Expired or Revoked. |
[lecv_certificate_expiry] | Frozen expiry date or “No expiry”. |
[lecv_learner_name] | Learner name frozen when the certificate was issued. |
[lecv_completion_date] | Completion date for the issued credential. |
[lecv_course_title] | Course title for a Course certificate or the parent course of a Quiz certificate. |
[lecv_quiz_title] | Quiz title for a Quiz certificate. |
[lecv_group_title] | Group title for a Group certificate. |
[lecv_instructor] | Frozen instructor or issuer value configured in CCM Settings. |
[lecv_membership_group_names] | Names of relevant LearnDash Groups frozen at issuance. |
[lecv_membership_group_ids] | IDs of relevant LearnDash Groups frozen at issuance. |
[lecv_membership_groups] | Combined Group names and IDs. |
Course completion and assessment evidence
Course evidence is optional and applies only to Course certificate records. The three evidence groups can be enabled independently under CCM Settings and overridden on an individual LearnDash Course.
| Course-step progress | Records completed and total published LearnDash lessons, topics and quizzes belonging to the course. |
| Quiz assessment | Records eligible, attempted, passed and required quizzes plus the average selected passing score. |
| Attempt history | Records total attempts, retakes and whether each Quiz first passed on its initial attempt or after a retake. |
Best passing attempt is the default assessment policy. Sites with stricter compliance rules can use the most recent passing attempt instead. Failed and incomplete quizzes remain visible in the counts but are not inserted into the average as zero scores.
Use the per-Course controls to inherit, show or hide each evidence group, set a required average and optionally require a minimum number of eligible quizzes. A Quiz can also be explicitly excluded from Course assessment summaries without removing it from LearnDash progression.
If no eligible assessment quizzes exist, CCM records the assessment as Non-assessable. The assessment result is evidence only: LearnDash remains responsible for deciding whether the Course is complete and whether its certificate is awarded.
[lecv_course_steps_summary] | Complete Course-step summary. |
[lecv_assessment_summary] | Quiz counts, average passing score and criteria result. |
[lecv_attempt_history_summary] | First-pass and retake summary. |
More granular shortcodes are also available for individual step totals, Quiz counts, averages, required scores and attempt-history values.
Verification and certificate email
Public verification
CCM creates a verification page containing [lecv_certificate_verification]. Visitors can search by certificate ID or open an issuance through its secure QR or verification URL without signing in.
Choose the Credential Card or Formal Record template, inherit the active theme accent where available or select a custom accent, and control the card width, border radius and site logo.
Learner name, completion date, expiry and instructor visibility can be configured. LearnDash Group names and IDs are hidden by default because they may identify an employer, client or department.
| Valid | The credential is active and outside the configured warning window. |
| Expiring Soon | The credential is valid but inside the configured expiry-warning period. |
| Expired | The frozen or administratively updated expiry date has passed. |
| Revoked | An administrator has explicitly revoked the issuance. |
Certificate email
Course, Quiz and Group emails can be enabled independently. CCM sends the learner an HTML message with a verification button and a LearnDash-generated certificate PDF attachment. If PDF generation fails, the verification link can still be delivered.
The shared template provides Visual and Text editing modes. Available tokens include:
{learner_name}, {award}, {certificate_id}, {verification_url}, {completion_date}, {expiry_date}, {context_type}, {course_steps_summary}, {assessment_summary}, {attempt_history_summary}, {membership_group_names}, {membership_group_ids} and {membership_groups}.
Administrators can resend an eligible historical certificate email from the Issued Certificates report.
Reports and scoped access
Administrator report
Certificate Compliance → Issued Certificates lists every issuance. Search or filter by certificate ID, learner, email, award type, status, issue date or expiry date.
Administrators can view a verification record, update its expiry, revoke or reactivate it, review an internal revocation reason and resend its email. Revocation reasons are not shown on the public verification page.
Front-end Certificate Report
Add [lecv_certificate_report] to a normal WordPress page to provide authorized users with a searchable, responsive report and scoped CSV export.
Use Certificate Compliance → Report Access to admit each user explicitly and assign only the required scopes:
| Course scope | Records issued for selected Courses. |
| Quiz scope | Records issued for selected Quizzes. |
| Group scope | Records associated with selected LearnDash Groups. |
| Managed Groups | Optional dynamic scope for explicitly admitted LearnDash Group Leaders. |
| All records | Full report access for trusted compliance administrators. |
Site administrators receive all-record access by default, following LearnDash conventions. Group Leader inheritance is disabled by default and does not admit every Group Leader automatically. The optional Compliance Officer role can be added without replacing a user’s other WordPress roles.
Trial, licensing and data management
CCM begins with a 15-day full-feature trial. Activate a Pro or Agency key under Certificate Compliance → CCM License.
| CCM Pro | Full functionality on one production site. |
| CCM Agency | Full functionality on up to ten production sites. |
| Trial or licence active | New Course, Quiz and Group issuance, email, verification and reporting are available. |
| Trial expired or licence revoked | New CCM records, IDs and automatic CCM emails pause. LearnDash completion and native certificate behavior continue. |
| Historical credentials | Existing records, verification links, reports and administrative lifecycle controls remain available. |
| After reactivation | Future qualifying awards issue normally. CCM does not backfill completions missed while issuance was paused. |
Deactivate or uninstall
Ordinary plugin deactivation retains records, settings and the server licence allocation. Use Deactivate this site on the CCM License screen when you intentionally want to release that site activation.
The clean-uninstall option permanently removes CCM tables, settings, expiry metadata, report-access assignments, generated QR files and the untouched plugin-created verification page. Take a full backup before enabling it.
Troubleshooting
No issuance record is created
Confirm a native LearnDash certificate is assigned to the relevant Course, Quiz or Group. For Quiz certificates, confirm the attempt met the separate Certificate Awarded threshold. Then check that the CCM trial or licence permits new issuance.
CCM fields are blank on a certificate
Blank fields mean no matching CCM issuance exists for that exact learner and award. CCM deliberately avoids reusing an older ID or QR code for a newer completion that did not create a record. Check Issued Certificates before changing the certificate template.
Verification page shows Not Found
Check that the correct verification page is selected and published. Use Repair or recreate page in CCM Settings if it was deleted, trashed or altered, then save WordPress permalinks if necessary.
QR code does not open on another device
Confirm the certificate was issued on a publicly reachable site. Local development URLs cannot normally be resolved by external phones or verification users.
Site logo appears missing
CCM uses the active theme or block-theme Site Logo and falls back to the WordPress Site Icon. A white transparent logo may be present but invisible on the white verification card.
Certificate email is not received
Confirm the relevant Course, Quiz or Group email is enabled, no competing certificate-email module is active, and WordPress email delivery is working. Review the issuance report for send status and test with a real receiving address.
Report access is denied or empty
Confirm the user was explicitly admitted under Report Access and has at least one Course, Quiz, Group, managed-Group or all-records scope. A WordPress role or LearnDash Group Leader assignment alone does not grant access.
Developer Notes
LearnDash integration: CCM listens to native LearnDash 5 Course, Quiz and Group award events. LearnDash remains responsible for enrollment, completion rules, Quiz certificate thresholds, Group completion and access to native certificate URLs.
Issuance storage: Durable records and atomic ID sequences are stored in the site-prefixed lecv_issuances and lecv_sequences tables. CCM also stores its own options and narrowly scoped certificate, Course and Quiz metadata; it does not replace LearnDash completion data.
Frozen evidence: Learner identity, award context, completion date, expiry, instructor, Group context and enabled Course evidence are copied into the issuance record. Later changes to the WordPress user, Course structure, Quiz attempts or certificate settings do not rewrite historical records.
Native certificate rendering: CCM shortcodes resolve against the learner, certificate and award context in the protected LearnDash certificate URL. They do not accept public user or Course overrides. Fields remain blank when no matching issuance exists, preventing stale credential IDs from being reused.
Public verification: Each issuance receives a random 256-bit public token. QR codes are generated locally as PNG files and contain the opaque verification URL, not learner information. Manual certificate-ID lookup is rate-limited without storing raw verifier IP addresses.
PDF and email: Certificate PDFs use LearnDash’s native renderer. CCM sends HTML email through wp_mail() and does not configure SMTP or replace the site’s mail-delivery service. If the original WordPress user is permanently deleted, frozen verification data remains available but LearnDash cannot regenerate that learner’s native PDF.
Reporting security: Front-end report access is denied by default and resolved from explicit per-user admission plus Course, Quiz, Group, managed-Group or all-record scopes. CSV exports apply the same authorization boundary as the visible report.
Licensing checks: Entitlement is cached and checked periodically rather than during learner completion. An explicit Revoked or Expired response pauses only new CCM issuance; historical verification and reporting remain available.
Extension boundary: Documented certificate and reporting shortcodes are supported interfaces. Internal PHP classes, database structure, option names, metadata keys and licensing filters are implementation details and are not a stable public extension API in V1.
Changelog
+ Durable certificate IDs and frozen issuance records for native LearnDash Course, Quiz and Group certificates.
+ Secure public verification by certificate ID, opaque verification URL and locally generated PNG QR code.
+ Configurable global and per-certificate expiry rules, including relative, fixed-date and non-expiring credentials.
+ Valid, Expiring Soon, Expired and Revoked certificate states with administrative expiry, revoke and reactivate controls.
+ Issuance-aware shortcodes for learner, award, completion, expiry, certificate ID, verification URL, QR, instructor and LearnDash Group context.
+ Optional frozen Course-step progress, Quiz assessment and first-pass / retake evidence for Course certificates.
+ Independent Course, Quiz and Group certificate emails with editable HTML template, subject overrides and native LearnDash PDF attachments.
+ Searchable Issued Certificates administration report with filters, verification counts, lifecycle controls and email resend.
+ Scoped front-end Certificate Report with CSV export, Compliance Officer role and optional managed-Group access for admitted LearnDash Group Leaders.
+ Responsive Credential Card and Formal Record verification templates with privacy, logo, accent and public-field controls.
+ Fifteen-day full-feature trial with CCM Pro single-site and CCM Agency ten-site licensing.
~ Trial or licence expiry pauses only new CCM issuance; historical credentials, verification links and reports remain available.
~ Data-retaining deactivation and optional comprehensive clean uninstall.
! Explicit revoked or expired licence states cannot be overridden by a remaining trial period.
! Native certificate fields safely recover a newer licensed issuance after retraining without reusing an older credential for a non-issued completion.
Quick Reference
| WordPress | 7.0 or later; 7.0.2 tested for V1 |
| LearnDash | 5.1.8 or later required; LearnDash 4 is not supported |
| PHP | 8.1 or later with GD and mbstring; PHP 8.3 tested |
| Certificate scope | Native LearnDash Course, Quiz and Group certificates |
| WooCommerce | Not required for certificate issuance, verification or reporting |
| Certificate rendering | LearnDash native certificate editor and PDF renderer with CCM issuance-aware shortcodes |
| Verification | Public certificate-ID lookup, secure verification URL and locally generated PNG QR code |
| Issued records | Two site-prefixed CCM tables for durable issuance records and atomic ID sequences |
| Front-end report | [lecv_certificate_report] with explicit user admission, scoped access and CSV export |
| Verification page | [lecv_certificate_verification]; created automatically and selectable or repairable from CCM Settings |
| Free trial | 15 days of full functionality |
| Licences | CCM Pro — one production site; CCM Agency — up to ten production sites |
| Licence management | Certificate Compliance → CCM License — activate, check or deactivate a site |
| Purchase / renew | View Certificate Compliance Manager plans |
