Skip to content

Repository files navigation

WP Certificates

WP Certificates

A universal, white-label certificate engine for WordPress.

Version 1.0.0 License MIT Requires PHP 7.4+ WordPress 5.8+ PRs Welcome Made by Konko Maji

Design any certificate with a live visual builder, then issue verifiable PDF certificates manually, on Tutor LMS course completion, or after a WooCommerce purchase - free, open source, and brand-agnostic.

Live site  |  Documentation  |  Report a bug  |  Request a feature


The problem

Free LMS plugins (notably Tutor LMS) and most WooCommerce course and workshop setups have no built-in certificate engine, or they lock certificate design behind a paid tier. Site owners are forced to either pay for a pro LMS add-on, hand-make certificates in Canva and email them one by one, or hard-code a single baked template that only fits one brand.

There is no free, open-source, design-flexible, brand-agnostic certificate tool that works standalone AND with an LMS AND with WooCommerce.

WP Certificates fixes that. One free, open-source plugin that auto-detects your site identity, lets you design any certificate with a live visual builder (no baked template, no lock-in), and issues verifiable PDF certificates manually, on Tutor LMS course completion, or after a WooCommerce purchase.

Why WP Certificates

  • No baked template. A fully dynamic canvas you control - background, gradients, borders, logo, layered text, signatures, and a verification QR code.
  • Auto site identity. Brand name, logo, issuer, and certificate ID prefix are detected from your site and theme, and every value is overridable.
  • Truly standalone. Issue to anyone without an account. The Tutor LMS and WooCommerce triggers are optional add-ons, not requirements.
  • Verifiable by design. Every certificate carries a unique human-readable code and a QR that resolves to a public verification page.
  • White-label by default. No plugin branding on certificates or emails. The small "Powered by" credit is opt-in.
  • Zero external dependencies. PDF export is handled by a hand-written JPEG-to-PDF writer. No Composer, no third-party PDF library.
  • Developer-friendly. A documented set of hooks and filters for tokens, render data, email, codes, and QR generation.

Features

Builder

  • Live visual certificate builder - form controls with a real-time, server-rendered preview.
  • Fully dynamic canvas: solid color, gradient (vertical, horizontal, diagonal), or background image with adjustable opacity.
  • Double border with configurable color, width, inset, and inner line.
  • Alpha-aware logo placement.
  • Custom font upload (.ttf / .otf), including Unicode and RTL scripts.

Dynamic content

  • Layered text elements - Eyebrow, Title, Subtitle, Recipient name (with underline rule), Body, Date line, and Certificate ID line.
  • Each element has independent font, size, color, X/Y position (in percent), alignment, max-width wrap, line-height, letter-spacing, and an optional UPPERCASE transform.
  • Auto text-fit: long recipient names and titles shrink to fit their box; body text wraps to a max width.
  • Merge placeholders for recipient, course, date, IDs, issuer, brand, and grade.
  • Up to 3 signature blocks - each with an optional signature image, name, title, and X position.

Issuing and triggers

  • Manual issue for anyone - no WordPress account needed.
  • Issue for a WordPress user plus a course.
  • Auto-issue on Tutor LMS course completion.
  • Auto-issue on WooCommerce order completion - any product, or a specific product-ID allowlist.
  • Tutor LMS backfill tool for past students.
  • Sequential certificate number plus a unique human-readable code, for example PREFIX-0042-AB12.

Delivery

  • Print-ready PDF (A4 or US Letter, landscape or portrait) via a dependency-free JPEG-to-PDF writer.
  • PNG image export.
  • Auto-email with the certificate attached (PDF, PNG, or both), with a fully customizable subject, heading, body, and accent color.

Verification

  • Public verify page via the [wpcert_verify] search shortcode.
  • Instant ?wpcert_verify=CODE verification page.
  • Revoke and restore status - revoked certificates display as revoked on the verify page.
  • Result card shows Valid, Revoked, or Not found with recipient, course, ID, issue date, and issuer.

White-label

  • No plugin branding on certificates or emails by default.
  • Optional small "Powered by" credit is opt-in.
  • Internationalization ready (text domain wp-certificates), with a translation template in /languages.

Developer

  • Documented hooks and filters for tokens, render data, email, certificate codes, ID prefix, and QR generation.
  • Action hooks fired when a certificate is issued or its status changes.
  • Data-driven settings schema shared by the admin builder and the renderer.

Integrations

WP Certificates is fully standalone - none of the integrations below are required to use it.

Platform Use
WordPress Core platform. Requires 5.8+ and PHP 7.4+ with GD and FreeType.
Tutor LMS Optional auto-issue on course completion, plus a backfill tool for past students.
WooCommerce Optional auto-issue on order completion - any product or a specific product-ID allowlist.

Screenshots

The images below are illustrative.

Builder Certificate Verification
Certificate Builder Generated certificate Verification page

Installation

Requirements: WordPress 5.8 or newer, PHP 7.4 or newer, and the GD extension with FreeType support (used by the renderer).

  1. Download the latest release ZIP, or clone the repository:
    git clone https://github.com/konkomaji/wp-certificates.git
  2. In your WordPress admin, go to Plugins > Add New > Upload Plugin and select the ZIP (or copy the folder into wp-content/plugins/).
  3. Click Activate.

On activation the plugin creates its database table and sequence counter, and a protected uploads directory at wp-content/uploads/wp-certificates/.

Quick start

  1. Open Certificates > Certificate Builder.
  2. Design your certificate across the tabs - Identity, Canvas, Text, Signatures and QR, Issuing, Email, and Verification - watching the live preview update as you go.
  3. Set your issuing triggers (manual only, Tutor LMS, WooCommerce, or any combination).
  4. Create a page and add the [wpcert_verify] shortcode so recipients can verify certificates.
  5. Issue a test certificate from Issue and Tools.

Shortcodes

Shortcode Description
[wp_certificates] The logged-in user's certificate list with download buttons.
[wpcert_verify] Public certificate verification search box and result card. Alias: [wpcert_certificate_verify].

Placeholders

Use these merge codes in any text element. Add your own with the wpcert_tokens filter.

Placeholder Resolves to
{recipient_name} The recipient's full name.
{course} The course or product name.
{date} The issue date.
{certificate_id} The unique human-readable certificate code.
{sequential_id} The zero-padded sequential number.
{issuer} The issuing organization.
{brand} The brand or site name.
{grade} The grade, when provided.

Developer

Hooks and filters

Hook Type Purpose
wpcert_tokens filter Add or override merge placeholders used in text and email.
wpcert_render_data filter Adjust the resolved render data before the canvas is drawn.
wpcert_render_after action Run after the certificate image has been rendered.
wpcert_email_args filter Modify the outgoing email arguments (recipient, subject, headers, attachments).
wpcert_email_tokens filter Add or override placeholders available in the email template.
wpcert_cert_code filter Customize the generated unique certificate code.
wpcert_id_prefix filter Customize the auto-derived certificate ID prefix.
wpcert_qr_endpoint filter Change the remote QR image endpoint.
wpcert_qr_png_path filter Provide a local QR PNG path for offline or bundled generators.
wpcert_certificate_issued action Fires after a certificate record is created.
wpcert_status_changed action Fires when a certificate is revoked or restored.

Example: add a custom merge code

add_filter( 'wpcert_tokens', function ( $tokens, $certificate ) {
    // Adds a {company} placeholder usable in any text element.
    $tokens['{company}'] = get_bloginfo( 'name' ) . ' Academy';
    return $tokens;
}, 10, 2 );

See docs/TECHNICAL.md for the full rendering pipeline, database schema, and extensibility reference.

Roadmap

Planned for releases after 1.0.0:

  • Bulk CSV issuing with duplicate detection
  • Expiry dates with auto-expire and reminder emails
  • Social sharing and LinkedIn "Add to Profile"
  • REST API CRUD
  • Analytics dashboard (issued, verified, viewed)
  • True drag-and-drop JavaScript builder
  • LearnDash, LifterLMS, and Sensei adapters
  • Open Badges export
  • Webhooks and Zapier

Contributing

Contributions are welcome. Please read CONTRIBUTING.md to get started, and follow our Code of Conduct.

Security

Please report security issues privately. See SECURITY.md for how to disclose a vulnerability responsibly.

License

WP Certificates is released under the MIT license. See LICENSE for the full text.

Credits

Built by Konko Maji.

Bundled default serif family: TeX Gyre Pagella, under the GUST Font License.

About

A universal, white-label certificate engine for WordPress. Design certificates with a live visual builder and issue verifiable PDF certificates manually, on Tutor LMS course completion, or after a WooCommerce purchase. Open source, no lock-in.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages