Skip to main content

PBJ License Manager Changelog (v1.2.0): How Selling Works, Explained on Every Tab

PBJ License Manager turns any WordPress site into a license server for plugins and themes you sell: issue keys, track per-key site activations, serve WordPress-native update manifests to valid keys, and sign download links so package URLs can’t be shared. A bad key or an unreachable server never breaks a customer’s plugin — it only means no update is offered. Here’s the release history.

Version 1.2.0 — how selling works, explained on every tab

  • Getting-started checklist on the Keys tab: products registered, current-release package uploaded, email delivery configured, first key issued — each row shows done/to-do with a link to the right tab — plus a numbered “How selling works” walkthrough of the whole pipeline.
  • Every tab explained. Keys, Products, Packages and Settings each gained a plain-English intro and numbered how-to steps for every form, field and button — including what Revoke really does (blocks updates, never breaks the customer’s site) and a proper warning on signing-secret regeneration.
  • No functional changes.

Version 1.1.3 — the license server licenses itself

License Manager is product #7 in our own storefront, so it now eats its own cooking: a License section in Settings where you enter your key to receive updates, using the same bundled client SDK every other PBJ plugin uses (replacing its old self-hosted updater). On the license server’s own site, no key is needed — it detects it’s home.

Version 1.1.2 — client SDK v1.1.0

The distributable client SDK — the small GPL class plugin authors bundle into the plugins they sell — grew up: a self-contained License settings section (status banner + key field + Save via a shared handler), on-own-server detection (no key needed when the plugin runs on the license server itself), an upgrade-path status for major-version upgrades, and a status() helper. Integrating licensing into a sold plugin is now a two-liner.

Version 1.1.1 — download protection self-heals

Security hardening: the packages folder’s deny-all protection (.htaccess + index.php) now self-heals on plugin activation and before every signed download is served. Previously it was only written when the Packages tab stored an upload — so package zips that arrived any other way (site sync, FTP, manual copy) were publicly downloadable at a guessable URL until an admin opened the Packages tab.

Version 1.1.0

  • Packages tab. Upload, store, and delete plugin zips per product in a deny-all protected uploads folder; “Make current” updates the manifest and latest version in one step.
  • Download links in key emails. A new {download_url} placeholder puts a signed link (72-hour default, configurable) to the current release of the purchased major version right in the key email. Feature updates still flow through WordPress updates only.
  • “Resend email” action on each key, regenerating a fresh download link.
  • New email-link-lifetime setting; schema v2 migration upgrades default email templates in place; opt-in uninstall data delete now also removes stored package files.

Version 1.0.0

  • Products registry — register each plugin or theme you sell, with a per-product site-activation limit and current major version.
  • Four ways to issue keys: manually from the admin, via a PHP hook, via an authenticated REST endpoint, or automatically from paid PBJ Form Builder submissions.
  • Key-aware update manifests — customers with a valid key get update packages; everyone else keeps a fully working plugin but receives no downloads.
  • Signed, expiring downloads — package URLs carry an HMAC token so they can’t be shared.
  • Key delivery emails, per-key site activations, CSV export, a built-in User Guide and Feedback tab, and a bundled GPL client SDK to drop into the plugins you sell.
July 4, 2026
PBJ License Manager 1.2 — Keys tab with getting-started checklist

PBJ License Manager turns any WordPress site into a license server for plugins and themes you sell: issue keys, track per-key site activations, serve WordPress-native update manifests to valid keys, and sign download links so package URLs can’t be shared. A bad key or an unreachable server never breaks a customer’s plugin — it only means no update is offered. Here’s the release history.

Version 1.2.0 — how selling works, explained on every tab

  • Getting-started checklist on the Keys tab: products registered, current-release package uploaded, email delivery configured, first key issued — each row shows done/to-do with a link to the right tab — plus a numbered “How selling works” walkthrough of the whole pipeline.
  • Every tab explained. Keys, Products, Packages and Settings each gained a plain-English intro and numbered how-to steps for every form, field and button — including what Revoke really does (blocks updates, never breaks the customer’s site) and a proper warning on signing-secret regeneration.
  • No functional changes.

Version 1.1.3 — the license server licenses itself

License Manager is product #7 in our own storefront, so it now eats its own cooking: a License section in Settings where you enter your key to receive updates, using the same bundled client SDK every other PBJ plugin uses (replacing its old self-hosted updater). On the license server’s own site, no key is needed — it detects it’s home.

Version 1.1.2 — client SDK v1.1.0

The distributable client SDK — the small GPL class plugin authors bundle into the plugins they sell — grew up: a self-contained License settings section (status banner + key field + Save via a shared handler), on-own-server detection (no key needed when the plugin runs on the license server itself), an upgrade-path status for major-version upgrades, and a status() helper. Integrating licensing into a sold plugin is now a two-liner.

Version 1.1.1 — download protection self-heals

Security hardening: the packages folder’s deny-all protection (.htaccess + index.php) now self-heals on plugin activation and before every signed download is served. Previously it was only written when the Packages tab stored an upload — so package zips that arrived any other way (site sync, FTP, manual copy) were publicly downloadable at a guessable URL until an admin opened the Packages tab.

Version 1.1.0

  • Packages tab. Upload, store, and delete plugin zips per product in a deny-all protected uploads folder; “Make current” updates the manifest and latest version in one step.
  • Download links in key emails. A new {download_url} placeholder puts a signed link (72-hour default, configurable) to the current release of the purchased major version right in the key email. Feature updates still flow through WordPress updates only.
  • “Resend email” action on each key, regenerating a fresh download link.
  • New email-link-lifetime setting; schema v2 migration upgrades default email templates in place; opt-in uninstall data delete now also removes stored package files.

Version 1.0.0

  • Products registry — register each plugin or theme you sell, with a per-product site-activation limit and current major version.
  • Four ways to issue keys: manually from the admin, via a PHP hook, via an authenticated REST endpoint, or automatically from paid PBJ Form Builder submissions.
  • Key-aware update manifests — customers with a valid key get update packages; everyone else keeps a fully working plugin but receives no downloads.
  • Signed, expiring downloads — package URLs carry an HMAC token so they can’t be shared.
  • Key delivery emails, per-key site activations, CSV export, a built-in User Guide and Feedback tab, and a bundled GPL client SDK to drop into the plugins you sell.

Latest Articles