=== Sigilet - Open Badges Issuer & Digital Certificates ===
Contributors: sigilet
Tags: openbadges, badges, certificates, verification, lms
Requires at least: 6.4
Tested up to: 7.1
Requires PHP: 8.0
Stable tag: 1.7.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Mint and issue Open Badges 2.0 from your own WordPress site: hosted verification, salted-hash recipient privacy, and baked PNG downloads.

== Description ==

Issue digital badges from the WordPress site you already run. Your recipients get a credential they can add to LinkedIn, download, and show an employer, and anyone can check it on your domain.

Sigilet suits training providers, membership associations, universities and employers who award certificates or recognition and need those awards to be verifiable. No badge platform sits in the middle, there is no fee per badge, and your recipients never create an account.

Badges follow Open Badges 2.0 (OB 2.0), so any conformant wallet or verifier can read them. Sigilet Pro integrates with both LifterLMS and Tutor LMS.

= How it works =

1. Create a badge type: a title, what it is awarded for, and an image.
2. Award it to an email address. Issue it now, email the recipient, or hold it as a draft until launch day.
3. The recipient gets a public verification page on your domain, a LinkedIn share button, and a download.

= What you get =

Badge types and a three-mode award workflow, twelve ready-made badge emblems to pick from, hosted verification on your own domain, one-click revoke and un-revoke, optional expiry dates, Badge Issuer and Badge Viewer roles so you can let someone award badges without handing over the rest of WordPress, an "Award a badge" link beside each person on your Users screen, a [sigilet_badges] shortcode so recipients can show their own badges, and a private sharing panel for each recipient. Downloaded badges carry their own proof inside the image file, so they work in any OB 2.0 wallet rather than being just a picture.

Sigilet never stores a recipient's email address. Each award keeps a one-way hash instead, so two badges held by the same person cannot be linked from the public record.

= Works with your LMS (Sigilet Pro) =

Sigilet Pro awards a badge automatically when a student completes a course in **LifterLMS** or **Tutor LMS**. Map a course to a badge once on the badge screen, and every completion after that issues a verifiable Open Badge rather than a PDF certificate. Re-completing a course does not issue a second badge, and un-completing one does not revoke a badge already earned.

This plugin ships no part of that code. Installing it will not add anything to your LMS.

Screenshots are below. The [Sigilet for WordPress page](https://sigilet.com/wordpress-plugin/) carries the technical detail: the OB 2.0 JSON Sigilet publishes, how badge baking works, how the privacy hashing works, and the server requirements.

= Pro =

Two features are part of a separate Sigilet Pro package and are not part of this download:

* **CSV bulk award**, which imports a spreadsheet of recipients and sends the awards through a paced background email queue.
* **Automatic awards on LMS course completion**, for LifterLMS and Tutor LMS.

== External services ==

The WordPress.org build sends no licensing, analytics or update request to anyone. It takes updates only from WordPress.org.

Sigilet Pro connects to the Sigilet licensing service at licence.sigilet.com to activate a licence, to check once a day that the licence is still current, and to fetch Pro updates. It sends the licence key, a one-way SHA-256 hash of this site's address, the site URL when a licence is activated, and the plugin version when WordPress checks for updates. It sends no site diagnostics, no administrator details, no list of installed themes or plugins and no badge recipient data, at any time. The licence key and a signed entitlement token are stored in this site's options table, and the token is checked on this site, so Pro keeps working through a service outage.

Pro checkout runs on Polar, the merchant of record, reached from Sigilet's pricing page. The plugin does not embed Polar, receive payment details or call Polar's API. Polar handles the customer account, payment, tax, invoice, refund and subscription data.

No badge recipient data reaches the licensing service, Polar or any other outside service. See [Sigilet's Privacy Policy](https://sigilet.com/privacy/) and [Polar's Privacy Policy](https://polar.sh/legal/privacy).

== Installation ==

1. Upload the plugin to `wp-content/plugins/`, or install it from the Plugins screen, and activate **Sigilet**.
2. Go to *Sigilet → Settings* and fill in your organization name, URL, and contact email.
3. If verification URLs return 404, visit *Settings → Permalinks* and click **Save Changes** once to flush rewrite rules.

== Frequently Asked Questions ==

= Where are recipient email addresses stored? =

They are not. Sigilet stores only a per-assertion salted SHA-256 hash of the recipient's email, per the Open Badges hashed `IdentityObject`. The plaintext address is used only to send the optional award notification and is then discarded.

= Do I need a third-party badge platform? =

No. Badges are issued and verified entirely on your own WordPress domain. The Pro build contacts Sigilet's licensing service only to check the license and fetch Pro updates; purchases occur through Polar outside WordPress. Neither service hosts badges or receives recipient data.

= Is Sigilet free? =

Yes. Everything in this download is free and never expires: issuance, ready-made emblems, hosted verification, baking, roles, revocation, expiry, awarding from the Users screen, the recipient badge shortcode, and recipient sharing. Nothing is time-limited, quota-limited, or locked behind an upgrade. Two features are not included in this plugin at all and are a separate Pro package: CSV bulk award, and automatic awards when an LMS course is completed.

= Can Sigilet award a badge when someone finishes a course? =

Yes, with Sigilet Pro, for LifterLMS and Tutor LMS. You map a course to a badge on the badge edit screen and every later completion issues that badge automatically. It is a separate Pro package rather than part of this free download, and this plugin contains none of it. Awarding by hand, one recipient at a time, is free and unlimited.

= What image formats can be baked? =

The Open Badges spec defines baking for PNG. PNG uploads are baked directly. GIF/WebP/AVIF uploads are converted to PNG first when the server's GD extension supports the source format; otherwise the original image is served unbaked.

== Screenshots ==

1. Award History with revoke controls.
2. The Award a Badge workflow.
3. A hosted verification page.
4. The recipient sharing hub (LinkedIn, download, copy link/embed).
5. Issuer settings.

== Changelog ==

= 1.7.0 =
* Pro only: badges are now awarded automatically when a student completes a course in LifterLMS or Tutor LMS. Map one or more courses to a badge on the badge edit screen, and every completion after that issues that badge to the student's account email. Re-completing a course does not issue a second badge; un-completing one does not revoke a badge already earned, because revoking a credential is a statement that it was wrongly issued and stays a deliberate action. Courses finished before the mapping was switched on are not awarded automatically - a separate counted action backfills them, and shows the number of people it will award before it does anything.
* The course-completion awarding above is Pro only: the WordPress.org build carries no part of it, no metabox, no course mapping and no disabled control. The three items below it are in the free build.
* Twelve ready-made badge emblems you can pick in the badge builder, instead of uploading your own artwork. Free.
* A new [sigilet_badges] shortcode that shows a logged-in recipient every badge they hold on your site, with a link to each verification page. Free.
* An "Award a badge" link beside each person on the Users screen, so you no longer retype the address of someone who already has an account. Free.

= 1.6.7 =
* Renamed so people looking for an Open Badges issuer can find it. The plugin is now listed as "Sigilet - Open Badges Issuer & Digital Certificates" instead of just "Sigilet". No functional change: same code, same settings, same badges, and the same plugin folder, so nothing needs reconfiguring.

Earlier releases are listed in `changelog.txt`, bundled with the plugin.

== Upgrade Notice ==

= 1.6.2 =
Pro licensing moves to Sigilet's own service. Pro installations need a Sigilet license key, entered on the License screen, after updating. The WordPress.org build is unaffected.
