WPGator documentation
Certificate Compliance Manager for LearnDash
Add durable certificate IDs, frozen evidence, public verification, expiry management, lifecycle email and scoped reporting to native LearnDash Course, Quiz and Group certificates.
Overview
CCM extends the native LearnDash certificate workflow rather than replacing it with a separate certificate editor or hosted credential platform.
Durable issuance records
Every qualifying award can create a frozen record containing the learner, certificate, award context, completion date, expiry rule and enabled evidence as it existed at issuance.
Verification and lifecycle
Issue unique certificate IDs, secure public verification links and locally generated PNG QR codes. Track Valid, Expiring Soon, Expired and Revoked states, send optional expiry notices and provide a printable verification record.
Native certificate designs
Keep the LearnDash certificate editor and assignment flow. Add CCM data to existing certificate designs using issuance-aware shortcodes.
Compliance oversight
Search, filter and export issued credentials. Administrators can adjust expiry, revoke, reactivate and resend, while admitted compliance users receive only their configured scope.
Requirements
| WordPress | 7.0 or later; WordPress 7.0.2 tested |
|---|---|
| PHP | 8.1 or later with GD and mbstring; PHP 8.3 tested |
| LearnDash | 5.1.8 or later required; LearnDash 5.2 tested; 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 |
| Email and scheduled notices | A working WordPress email configuration is required. WordPress Cron must be operational for scheduled Expiring Soon notices. |
| Certificate PDF | Uses the native LearnDash PDF renderer; GD and mbstring must be available |
| WooCommerce | Not required for certificate issuance, verification or reporting |
| Free trial | 15 days of full CCM functionality |
| Licences | CCM Pro supports one production site; CCM Agency supports up to ten production sites |
Quick Start
- Install and activate CCM. Confirm that WordPress, PHP and LearnDash meet the requirements above.
- Configure the global settings. Open Certificate Compliance → Settings. Choose the certificate ID format, expiry policy, verification fields, email options, administrator-copy preference and, if required, the Expiring Soon notification.
- Prepare a native certificate. Create or edit a certificate under LearnDash LMS → Certificates. Add the CCM shortcodes you want to show, such as the certificate ID, verification URL and PNG QR code.
- Assign the certificate. Use the normal LearnDash Course, Quiz or Group certificate setting. CCM does not replace LearnDash assignment or completion rules.
- Run a test award. Complete the relevant award with a test learner and confirm the issuance record, email, native certificate, PDF where enabled, public verification page and verifier print output.
User Guide
The sections below cover the main configuration and operational workflows.
Certificate IDs and issuance records
CCM creates a durable record when LearnDash awards an eligible Course, Quiz or Group certificate. The record receives an atomic certificate ID and a random public token.
The learner identity, award, certificate, completion date and expiry are frozen at issuance. Later edits to the WordPress user, LearnDash content or certificate settings do not rewrite the historical record.
Configure the ID format globally under Certificate Compliance → Settings.
Literal segments such as COURSE, QUIZ and GROUP
identify the certificate type; they are not Course-title variables.
Expiry rules and credential status
Set a global expiry rule or override it on an individual native LearnDash certificate. Supported rules include a relative period, a fixed date and no expiry.
CCM resolves each record as Valid, Expiring Soon, Expired or Revoked. The Expiring Soon window is configured globally. Setting the window to zero disables that state and its notification.
Administrators can change a record’s expiry date, revoke it with an internal reason, or reactivate it. Revocation reasons remain private and are available in administrative and authorized compliance reporting, not on the public verification card.
Course progress and assessment evidence
Course certificates can optionally freeze Course-step progress, Quiz assessment results and first-pass or retake history. Configure the global behaviour in CCM Settings, then inherit or override it from the Course Page settings.
CCM enumerates the Course-specific LearnDash steps itself rather than relying on a generic progress label. Quiz evidence can use the best passing attempt or most recent passing attempt and can require a minimum number of eligible quizzes.
When a Course has no eligible assessment data, CCM displays Non-assessable rather than treating the Course as a zero-percent result.
Public verification, Credential Card icon and printing
CCM supports public lookup by certificate ID and direct verification through the opaque token contained in the verification URL and PNG QR code.
Choose the Credential Card or Formal Record layout and configure the public learner, award, completion, expiry, instructor, Group and evidence fields.
The Credential Card can display an optional image selected from the WordPress Media Library. The image is constrained to the card header and does not alter the Valid, Expiring Soon, Expired or Revoked status alignment. CCM does not automatically use the WordPress Site Logo or Site Icon. The Formal Record layout intentionally displays no icon.
After a credential is resolved, the verifier includes a print action below the record. Printing produces the verification record only: site navigation, footer content, search controls, action buttons and the learner’s protected native certificate are excluded. The printed record includes the date and time of verification in the site’s configured timezone.
Certificate email, administrator copies and Expiring Soon notices
Course, Quiz and Group award emails can be enabled independently. Configure a shared editable HTML template and optional type-specific subject lines. Initial award emails can include the learner’s native LearnDash certificate PDF.
Enable the administrator-copy option to BCC the current WordPress Administration Email Address on CCM email. CCM does not add a duplicate recipient when the learner’s address is the same as the administration address.
The optional Expiring Soon notification has its own editable subject and message and supports the same documented CCM email tokens as the award message. It does not attach the native certificate PDF.
WordPress Cron checks existing issuance records for credentials entering the configured Expiring Soon window. One notification is claimed for each exact recorded expiry date. If an administrator changes the expiry date, the credential can become eligible for one new notice when the revised date later enters the warning window.
Revoked, expired and non-expiring records are excluded. CCM attempts a failed notification no more than three times for the same expiry date and records the failure in the Issued Certificates administration view.
CCM uses wp_mail() and does not configure SMTP. Use a reliable SMTP or
transactional-mail service on production sites.
Issued Certificates administration
Open Certificate Compliance → Issued Certificates to search and filter issuance records by learner, email, certificate ID, type, status, Course, Quiz, Group and date.
Each record provides its verification count, last verification date, expiry editor, revoke or reactivate action, email resend and internal lifecycle information. Expiring Soon notification activity and terminal delivery failures are also recorded here.
CSV export uses the same active filters as the visible report.
Compliance Officers and front-end reporting
Create a page containing [lecv_certificate_report], then admit specific
users from the CCM report-access settings. A WordPress role alone does not grant report
access.
Scope admitted users to selected Courses, Quizzes, Groups, managed LearnDash Groups or all records. The responsive dashboard and its CSV export apply the same authorization boundary.
Site administrators receive access by default unless administrator report access is explicitly disabled. LearnDash Group Leaders can optionally receive records for their managed Groups.
Historical certificate registration
The historical registration workflow scans retained LearnDash completion activity and prepares eligible Course awards that have a current native certificate assignment.
Review the proposed learner, Course, certificate, original completion date and calculated expiry before importing. CCM does not require current Course enrollment when a valid historical completion survives.
Imported records preserve the original completion and calculated expiry rather than creating a new completion date. Orphaned or missing LearnDash history is not invented.
After import, CCM can send a dedicated certificate-update message only to valid, Expiring Soon or non-expiring records. Expired imports are not emailed.
Trial and licence lifecycle
New installations receive a 15-day full-feature trial. Certificates issued during the trial remain verifiable after the trial ends.
Trial or licence expiry pauses new CCM issuance, new IDs, award-triggered automatic email and historical import. Existing verification, reporting and lifecycle management remain available. Enabled Expiring Soon notices for existing credentials also continue to run.
CCM Pro activates one production site. CCM Agency activates up to ten production sites. Development and staging environments do not consume production activations where supported by the licensing service.
Data retention and uninstall
Deactivation retains settings and issuance records. Reactivating CCM restores the previous configuration.
Enable the clean-uninstall option only when you intend to remove CCM permanently. Deleting the plugin with that option enabled removes CCM tables, options, metadata, generated QR files and the Compliance Officer role. Public verification links can no longer resolve once the issuance records are deleted.
Certificate and reporting shortcodes
Add the certificate-field shortcodes to native LearnDash certificate content. They resolve only when CCM can match the protected learner, certificate and award context to an issuance.
| Shortcode | Output |
|---|---|
[lecv_certificate_id] | Frozen CCM certificate ID |
[lecv_verification_url] | Secure public verification URL |
[lecv_qr_code] | Locally generated PNG QR code linked to public verification |
[lecv_learner_name] | Frozen learner display name |
[lecv_award_name] | Frozen Course, Quiz or Group award name |
[lecv_completion_date] | Original completion date |
[lecv_expiry_date] | Recorded expiry date or the configured non-expiring label |
[lecv_instructor_name] | Frozen instructor name where available |
[lecv_group_name] | Frozen applicable LearnDash Group name or names |
[lecv_group_id] | Frozen applicable LearnDash Group ID or IDs |
[lecv_group_reference] | Combined Group name and ID reference |
[lecv_course_progress] | Frozen Course-step evidence where enabled |
[lecv_assessment_summary] | Frozen Quiz assessment evidence where enabled |
[lecv_attempt_history] | Frozen first-pass and retake evidence where enabled |
[lecv_certificate_verification] | Public certificate verification interface |
[lecv_certificate_report] | Authorized front-end compliance report |
Troubleshooting
Certificate fields are blank
Confirm that the learner reached a qualifying LearnDash award event while CCM issuance was enabled and that an issuance exists in Issued Certificates.
CCM shortcodes do not accept public user or Course overrides. They remain blank when the protected native certificate URL does not match a valid issuance context.
A certificate email was not received
Confirm that email is enabled for the relevant Course, Quiz or Group type and verify that the recipient address is correct. Check the site’s SMTP or transactional-mail logs and spam filtering.
If the administrator-copy option is enabled, CCM uses the current WordPress Administration Email Address as a BCC recipient. Confirm that this address is correct under Settings → General.
A successful wp_mail() response means WordPress accepted the message for
delivery; only the receiving mail system can confirm final receipt.
An Expiring Soon email was not sent
Confirm that the Expiring Soon email is enabled, the warning window is greater than zero, and the credential has a future expiry date inside that window.
Revoked, already expired and non-expiring credentials are not eligible. CCM sends only one notification for each exact recorded expiry date.
Scheduled notices depend on WordPress Cron. On low-traffic sites, configure a real server-side cron request to WordPress if scheduled tasks do not run reliably.
CCM stops retrying after three failed attempts for the same expiry date. Check the Issued Certificates record for the recorded failure and confirm the site’s email configuration before changing the expiry date or retrying operationally.
The Credential Card icon does not appear
Select an image explicitly from the WordPress Media Library in the verification-template settings and confirm that the Credential Card layout is active.
CCM does not automatically use the WordPress Site Logo or Site Icon. The Formal Record layout intentionally omits the custom icon.
The verifier prints the full website page
Use CCM’s Print verification record button below the resolved credential rather than the browser’s general print command from an unrelated page state.
The CCM print stylesheet isolates the verification record and adds the verification timestamp. If surrounding theme content still appears, clear page and CSS caches and check whether a theme or optimization plugin is overriding print media rules.
The verification page shows stale or incorrect results
Exclude the verification page from full-page or CDN caching if the caching layer does not vary correctly by query string. Clear any existing page cache after changing the verification template.
A historical award is not eligible for import
Confirm that the WordPress user still exists, the LearnDash completion activity survives, and the completed Course currently has a native LearnDash certificate assigned.
Current Course enrollment is not required. Missing or deleted LearnDash activity, including Group history removed by LearnDash, is outside the import boundary.
A Group Leader cannot see the report
Group membership alone does not grant access. Admit the user explicitly, enable managed LearnDash Group access if required, and confirm that the user is currently a Group Leader of the relevant Group.
A deleted learner’s PDF cannot be regenerated
Frozen CCM verification data remains available after permanent user deletion, but LearnDash cannot regenerate that learner’s protected native certificate or PDF without the original WordPress user.
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. Expiry-notification
claims, attempts and delivery state are associated with the frozen issuance and its
recorded expiry date.
Frozen evidence
Learner identity, award context, completion date, expiry, instructor, Group context and enabled Course evidence are copied into the issuance record. Later source-data changes do not rewrite historical records.
Native certificate rendering
CCM shortcodes resolve against the learner, certificate and award context in the protected LearnDash certificate URL. Fields remain blank when no matching issuance exists.
Public verification
Each issuance receives a random 256-bit public token. QR codes contain the opaque verification URL, not learner information. Manual ID lookup is rate-limited without retaining raw verifier IP addresses.
Verifier printing
Public printing uses a print-specific verifier view. It contains only the configured public record fields and a print-time verification timestamp using the WordPress site timezone; it does not expose the protected native certificate.
PDF and email
PDFs use the native LearnDash renderer. CCM sends HTML email through
wp_mail(). Administrator copies use BCC. Expiring Soon notices reuse the
documented email-token system but do not attach a certificate PDF.
Scheduled expiry notices
CCM schedules an initial expiry scan shortly after activation or update and subsequent hourly checks through WordPress Cron. Notification claiming is tied to the exact expiry date to prevent duplicate delivery by concurrent workers.
Reporting security
Front-end access is denied by default and resolved from explicit user admission plus Course, Quiz, Group, managed-Group or all-record scope. CSV applies the same authorization.
Licensing checks
Entitlement is cached and checked periodically rather than during learner completion. Revoked or Expired entitlement pauses new issuance while historical verification, reporting and existing-record lifecycle notices 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 not a stable public extension API in V1.
Changelog
v1.2.0 October 22, 2026
- Added an optional BCC copy of CCM email to the current WordPress Administration Email Address, with duplicate-recipient protection.
- Added an optional Expiring Soon email with editable subject and message, shared CCM email tokens and one-notice-per-expiry-date delivery.
- Added bounded retry handling and administrative failure information for scheduled expiry notifications.
- Added an optional Media Library icon for the Credential Card verifier layout, with constrained sizing and no automatic Site Logo or Site Icon substitution.
- Added an isolated printable verification record with a print-time verification date, time and site-timezone reference.
- Confirmed compatibility with LearnDash 5.2.
- Existing credential verification, reporting and enabled Expiring Soon notices remain operational after trial or licence expiry.
v1.1.0 August 27, 2026
- Added historical Course-certificate registration from retained LearnDash completion activity.
- Added preview and review stages before historical records are imported.
- Added dedicated certificate-update email for valid, Expiring Soon and non-expiring imported records.
- Preserved original completion and calculated expiry dates during historical import.
- Improved settings-save compatibility with hardened WordPress administration environments.
v1.0.0 August 2, 2026
- Durable certificate IDs for native LearnDash Course, Quiz and Group certificates.
- Secure public verification by certificate ID, opaque URL and local PNG QR code.
- Global and per-certificate expiry rules with full credential lifecycle controls.
- Issuance-aware certificate shortcodes and optional frozen Course evidence.
- Independent Course, Quiz and Group award emails with native PDF attachments.
- Searchable administration and scoped front-end compliance reporting with CSV export.
- Credential Card and Formal Record public-verification templates.
- Fifteen-day trial, CCM Pro and CCM Agency licensing.
Quick Reference
| WordPress | 7.0 or later; WordPress 7.0.2 tested |
|---|---|
| LearnDash | 5.1.8 or later required; LearnDash 5.2 tested; 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 |
| Certificate rendering | Native LearnDash editor and PDF renderer with CCM issuance-aware shortcodes |
| Verification | Certificate-ID lookup, opaque URL and locally generated PNG QR code |
| Verification layouts | Credential Card with optional Media Library icon, or Formal Record without an icon |
| Verifier printing | Isolated public verification record with a print-time date and timestamp |
| Expiring Soon email | Optional scheduled notice using the shared CCM email tokens; one notice for each exact recorded expiry date |
| Administrator email copy | Optional BCC to the current WordPress Administration Email Address |
| Issued records | Site-prefixed CCM issuance and atomic-sequence tables |
| Front-end report |
[lecv_certificate_report] with explicit admission, scoped access and CSV |
| Verification page |
[lecv_certificate_verification]; created automatically and repairable
from CCM Settings |
| Historical registration | Imports eligible Course awards from retained LearnDash completion activity |
| 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 |
| Purchase or renew | View Certificate Compliance Manager plans |
