Title: JB License Manager for WooCommerce
Author: junaidbhatti
Published: <strong>18 de marzo de  2026</strong>
Last modified: 16 de abril de  2026

---

Buscar plugins

![](https://ps.w.org/jb-license-manager/assets/banner-772x250.png?rev=3485783)

![](https://ps.w.org/jb-license-manager/assets/icon-256x256.png?rev=3485783)

# JB License Manager for WooCommerce

 Por [junaidbhatti](https://profiles.wordpress.org/junaidbhatti/)

[Descargar](https://downloads.wordpress.org/plugin/jb-license-manager.2.0.1.zip)

 * [Detalles](https://es-ar.wordpress.org/plugins/jb-license-manager/#description)
 * [Valoraciones](https://es-ar.wordpress.org/plugins/jb-license-manager/#reviews)
 *  [Instalación](https://es-ar.wordpress.org/plugins/jb-license-manager/#installation)
 * [Desarrollo](https://es-ar.wordpress.org/plugins/jb-license-manager/#developers)

 [Soporte](https://wordpress.org/support/plugin/jb-license-manager/)

## Descripción

**JB License Manager for WooCommerce** turns your WordPress + WooCommerce site into
a complete software licensing server. Sell plugins, themes, SaaS tools, or any digital
product and automatically deliver encrypted license keys, control which domains 
can use each license, and revoke access instantly — all from your own WordPress 
dashboard.

### 🔑 Core Licensing

 * **Automatic key generation** — cryptographically random keys with customizable
   prefix (e.g. `MYAPP-XXXXXX-XXXXXX-XXXXXX`)
 * **WooCommerce auto-delivery** — license key is emailed to the customer the moment
   an order is completed, processing, or payment confirmed
 * **Multi-domain activation** — each license can allow 1 to unlimited domains (
   configured per product)
 * **Domain allow / disallow** — admin or customer can block a specific domain without
   revoking the whole license
 * **Instant remote deactivation** — when a domain is disallowed, the client plugin
   detects it within 15 seconds via WordPress Heartbeat and immediately locks premium
   features — no click required on the client site
 * **Expiry by months or years** — set 1 Month, 3 Months, 6 Months, 1 Year, 2 Years,
   or any duration (1–120 months / 1–10 years)
 * **Status management** — Active, Inactive, Suspended, Expired, Revoked
 * **Automatic expiry** — daily cron marks licenses expired and sends reminder emails
 * **Domain-level encryption** — activated domain names are hashed and never stored
   in plain text

### 🛒 WooCommerce Integration

 * Dedicated **License** product tab — enable licensing per product with one click
 * Set **max domains**, **validity period**, and **key prefix** per product
 * Auto-fill license settings from product when creating a manual license
 * License key shown on the **order details page** inside WooCommerce
 * **My Account  Licenses** — full customer portal with all purchased licenses
 * Customer can **view**, **copy**, and **allow/disallow** their own domains without
   contacting support
 * Per-domain popup card showing activation date, last validated time, and IP address

### 🌐 REST API

Full public and admin REST API at `/wp-json/jblm/v1/`:

**Public endpoints (license key authentication):**

 * `POST /activate` — register a domain against a license key
 * `POST /validate` — verify a license key + domain (12-hour cached on client)
 * `POST /deactivate` — release a domain slot
 * `POST /status` — lightweight heartbeat check (does not update last_validated)

**Admin endpoints (API key or logged-in admin):**

 * `GET /licenses` — list all licenses with pagination, search, status filter
 * `POST /licenses` — create a license programmatically
 * `GET /licenses/{id}` — get single license with activations
 * `PUT /licenses/{id}` — update status, max_domains, expiry
 * `DELETE /licenses/{id}` — revoke a license
 * `GET /licenses/{id}/activations` — list all domain activations
 * `GET /stats` — dashboard stats (total, active, expired, expiring, revoked)

### 📊 Admin Dashboard

 * **Stats cards** — Total / Active / Expiring Soon / Expired / Revoked at a glance
 * **Filterable table** — search by email or key, filter by status
 * **Click-to-copy** license keys
 * **View Sites popup modal** — see all activated domains per license, allow/disallow
   with one click, quick status change
 * **Domain progress bar** — visual fill showing slots used vs. available
 * **Expiry countdown** — “14d left” shown in amber when expiring soon
 * **Activity Logs page** — last 500 events with time, license key, action, domain,
   IP, and result
 * **Settings page** — key prefix, expiry reminder days, email from name/address,
   email subject and template, REST API key

### ✉️ Email Notifications

 * **License delivery email** — sent automatically on WooCommerce order completion
 * **Expiry reminder email** — sent N days before expiry (configurable)
 * **Status change email** — sent when license is suspended or revoked
 * Fully customizable HTML template with placeholder tags: `{license_key}`, `{expires_at}`,`{
   max_domains}`, `{order_id}`, `{customer_email}`, `{site_name}`, `{site_url}`

### 📤 CSV Export / Import

 * Export all or filtered licenses to CSV with one click
 * CSV includes: ID, License Key, Customer Email, Status, Max Domains, Active Domains,
   Expiry, Order ID, Product ID, Created At, Active Domain URLs
 * Bulk import licenses from CSV — only `customer_email` required; other columns
   optional
 * Drag-and-drop upload zone in admin
 * Duplicate keys automatically skipped on import with per-row error reporting

### 🔒 Security

 * All domain names stored as **SHA-256 hashes** — even database access cannot reveal
   which domains are activated
 * Encryption secret key auto-generated on activation and stored securely in the
   database. Optionally define `JBLM_SECRET_KEY` in wp-config.php to use a custom
   value
 * All AJAX handlers protected with `wp_nonce` and `current_user_can()` checks
 * All API inputs sanitized with `sanitize_text_field()`, `sanitize_email()`, `intval()`
 * All outputs escaped with `esc_html()`, `esc_attr()`, `esc_url()`
 * All database queries use `$wpdb->prepare()` with parameterized placeholders

### 📦 Client SDK

Include the bundled `jblm-client.php` in your plugin or theme:

See Sample Plugin
 <?php /** * Plugin Name: Your Plugin Name * Version: 1.0.0 */

    ```
    // ============================================================
    // STEP 1 — Load the license client
    // Copy jblm-client.php into your plugin folder, then include it.
    // ============================================================
    require_once plugin_dir_path( __FILE__ ) . 'jblm-client.php';


    // ============================================================
    // STEP 2 — Set up your license
    // Replace the two values below:
    //   - 'https://yoursite.com'  → the site where you installed JB License Manager
    //   - 'your-plugin-slug'      → any unique name for your plugin (no spaces)
    // ============================================================
    $license = new JBLM_Client(
        'https://yoursite.com',   // ← CHANGE THIS
        'your-plugin-slug'        // ← CHANGE THIS  e.g. 'my-seo-plugin'
    );


    // ============================================================
    // STEP 3 — Register AJAX (required for Activate/Deactivate buttons)
    // Just copy this line as-is. Don't change anything.
    // ============================================================
    add_action( 'plugins_loaded', function() use ( $license ) {
        $license->register_ajax_hooks();
    });


    // ============================================================
    // STEP 4 — Block your premium features if license is not active
    // Put this check at the top of any function that has premium code.
    // If the license is invalid, the function will stop here.
    // ============================================================
    function my_premium_feature() {
        global $license;

        if ( ! $license->is_valid() ) {
            return; // ← stops here if no valid license
        }

        // Your premium code goes below this line ↓
        echo 'Premium feature is running!';
    }


    // ============================================================
    // STEP 5 — Show the License Key field on your settings page
    // Call this inside the function that renders your settings page.
    // It will show an input box + Activate / Deactivate buttons.
    // ============================================================
    function my_plugin_settings_page() {
        global $license;

        echo '<h1>My Plugin Settings</h1>';

        // This one line draws the full license box — input + buttons
        $license->render_settings_field();

        // ... rest of your settings fields
    }
    ```

The SDK handles:
 * License activation, validation (12 h cache), deactivation * 
WordPress Heartbeat integration for instant deactivation — no click needed * Built-
in settings page with Activate / Check Status / Deactivate buttons * Friendly Urdu/
English error messages for common failure cases

### ⚡ Performance

 * License validation results cached as WordPress transients (12 hours by default)
 * Heartbeat status check (`/status`) does not write to the database — read-only
 * Index on `license_key`, `domain_hash`, `user_id`, `status`, and `created_at` 
   columns
 * WooCommerce integration only loads when WooCommerce is active

### Privacy Policy

JB License Manager for WooCommerce stores the following data in your WordPress database:

 * **License keys** (hashed) and associated customer email addresses
 * **Domain names** (stored as SHA-256 hashes — not in plain text)
 * **IP addresses** of activation and validation requests
 * **Timestamps** of all license events

This data is stored solely on your own WordPress server. No data is transmitted 
to any third-party service by this plugin.

**External connections:** Client sites that use the bundled SDK connect to your 
WordPress store URL to activate, validate, and check license status. This is a direct
connection between two sites you control.

If you collect or process personal data (such as customer email addresses), ensure
your site has an appropriate privacy policy as required by GDPR, CCPA, or your local
regulations.

### Developer SDK

The client-side SDK (for your own plugins/themes to validate licenses against this
server) is available as a **separate download** from the plugin’s GitHub page. It
is NOT included in the WordPress.org version of this plugin.

The WordPress.org version of this plugin is the **license server** — it stores and
manages licenses. It does not lock any features behind a license check.

## Capturas

[⌊Dashboard — stats cards, filterable license table with domain progress bars.⌉⌊
Dashboard — stats cards, filterable license table with domain progress bars.⌉[

**Dashboard** — stats cards, filterable license table with domain progress bars.

[⌊Create License — product auto-fill, validity period picker, expiry preview chip.⌉⌊
Create License — product auto-fill, validity period picker, expiry preview chip.⌉[

**Create License** — product auto-fill, validity period picker, expiry preview chip.

[⌊Export / Import — drag-and-drop CSV upload, column schema reference.⌉⌊Export /
Import — drag-and-drop CSV upload, column schema reference.⌉[

**Export / Import** — drag-and-drop CSV upload, column schema reference.

[⌊Settings — general, email, and REST API configuration with encryption status banner.⌉⌊
Settings — general, email, and REST API configuration with encryption status banner
.⌉[

**Settings** — general, email, and REST API configuration with encryption status
banner.

[⌊Product configuration — Product configuration set vaildity Period and max domain.⌉⌊
Product configuration — Product configuration set vaildity Period and max domain
.⌉[

**Product configuration** — Product configuration set vaildity Period and max domain.

## Instalación

#### Automatic Installation

 1. Log in to your WordPress admin panel.
 2. Go to **Plugins  Add New**.
 3. Search for **JB License Manager for WooCommerce**.
 4. Click **Install Now** then **Activate**.

#### Manual Installation

 1. Download the plugin ZIP file.
 2. Go to **Plugins  Add New  Upload Plugin**.
 3. Choose the ZIP file and click **Install Now**.
 4. Click **Activate Plugin**.

#### After Activation

 1. Go to **License Manager  Settings** and configure your email sender, key prefix,
    and (optionally) generate a REST API key.
 2. Edit any WooCommerce product, open the **License** tab, enable licensing, and set
    max domains and validity.
 3. When a customer completes checkout, a license key is automatically generated and
    emailed.
 4. Include `jblm-client.php` in your plugin/theme and point it to your store URL.

## Preguntas frecuentes

### Do I need WooCommerce?

WooCommerce is required for automatic license delivery on purchase. You can still
create and manage licenses manually without WooCommerce, but automatic order integration
requires it.

### Can I use this without WooCommerce for SaaS?

Yes. Create licenses manually via **License Manager  Create License** or via the
REST API (`POST /wp-json/jblm/v1/licenses`). The REST API accepts Bearer token or
cookie authentication.

### How does instant deactivation work?

When an admin or customer disallows a domain, the database record is updated immediately.
The client plugin uses WordPress Heartbeat (every 15 seconds in admin) to ping your
server’s lightweight `/status` endpoint. When it receives `valid: false`, it clears
the local cache and reloads the page — premium features disappear within 15 seconds
without any manual action on the client site.

### Is customer data sent anywhere outside my site?

No. All license data is stored in your own WordPress database. The only external
connection is between client sites (running the SDK) and your own WordPress site(
the license server). No data is sent to third-party servers by this plugin.

### How are domain names stored?

Domain names are stored as SHA-256 hashes, not in plain text. Even if your database
is compromised, the activated domain names cannot be read directly.

### Can customers manage their own licenses?

Yes. The WooCommerce **My Account  Licenses** page allows customers to view all 
their licenses, see which domains are activated, and allow or disallow domains themselves—
no support tickets needed.

### What happens when a license expires?

A daily cron job checks for expiring licenses. When a license expires, its status
is set to `expired` and the customer receives an expiry reminder email N days before(
configurable). The `/validate` endpoint returns `license_expired` and the client
SDK disables premium features.

### Can I import existing licenses?

Yes. Go to **License Manager  Export / Import** and upload a CSV file. Only the `
customer_email` column is required. Existing license keys in the CSV are automatically
skipped to prevent duplicates.

### How do I secure the REST API?

Generate an API key in **License Manager  Settings  REST API**. Send it as the `
X-JBLM-API-Key` header with all admin endpoint requests. Public endpoints (activate,
validate, deactivate, status) are authenticated by the license key itself.

### Is the plugin translation-ready?

Yes. All user-facing strings use the `jblm` text domain. You can translate the plugin
using Loco Translate, WPML String Translation, or by submitting translations to 
translate.wordpress.org.

### What PHP version is required?

PHP 7.2 or higher. PHP 8.0, 8.1, 8.2, and 8.3 are all supported and tested.

## Reseñas

![](https://secure.gravatar.com/avatar/2527e334d1859974adeacb268ac0ec8abba5d475e9bc150cbb82579eb2532f43?
s=60&d=retro&r=g)

### 󠀁[Great plugin](https://wordpress.org/support/topic/great-plugin-41404/)󠁿

 [byron32](https://profiles.wordpress.org/byron32/) 2 de abril de 2026

Work fine everything free.Thank you Junaid your efforts.

 [ Leer la 1 reseña ](https://wordpress.org/support/plugin/jb-license-manager/reviews/)

## Colaboradores y desarrolladores

“JB License Manager for WooCommerce” es un software de código abierto. Las siguientes
personas han colaborado con este plugin.

Colaboradores

 *   [ junaidbhatti ](https://profiles.wordpress.org/junaidbhatti/)

[Traduce “JB License Manager for WooCommerce” a tu idioma.](https://translate.wordpress.org/projects/wp-plugins/jb-license-manager)

### ¿Interesado en el desarrollo?

[Revisa el código](https://plugins.trac.wordpress.org/browser/jb-license-manager/),
echa un vistazo al [repositorio SVN](https://plugins.svn.wordpress.org/jb-license-manager/),
o suscríbete al [log de desarrollo](https://plugins.trac.wordpress.org/log/jb-license-manager/)
por [RSS](https://plugins.trac.wordpress.org/log/jb-license-manager/?limit=100&mode=stop_on_copy&format=rss).

## Registro de cambios

#### 2.0.0

 * Initial release
 * WooCommerce auto-delivery on order complete/processing
 * Multi-domain activation with domain hashing
 * REST API (activate, validate, deactivate, admin CRUD)
 * Customer My Account portal
 * CSV export and import
 * Admin dashboard, create, settings, and logs pages
 * Auto-generate encryption secret key on activation (stored in database)
 * Daily cron for expiry reminders

## Meta

 *  Versión **2.0.1**
 *  Última actualización **hace 6 meses**
 *  Instalaciones activas **Menos de 10**
 *  Versión de WordPress ** 5.8 o superior **
 *  Testeado hasta **6.9.10**
 *  Versión de PHP ** 7.2 o superior **
 *  Idioma
 * [English (US)](https://wordpress.org/plugins/jb-license-manager/)
 * Etiquetas:
 * [license key](https://es-ar.wordpress.org/plugins/tags/license-key/)[license manager](https://es-ar.wordpress.org/plugins/tags/license-manager/)
   [software license](https://es-ar.wordpress.org/plugins/tags/software-license/)
   [woocommerce license](https://es-ar.wordpress.org/plugins/tags/woocommerce-license/)
 *  [Vista avanzada](https://es-ar.wordpress.org/plugins/jb-license-manager/advanced/)

## Valoraciones

 5 de 5 estrellas.

 *  [  1 valoración de 5 estrellas     ](https://wordpress.org/support/plugin/jb-license-manager/reviews/?filter=5)
 *  [  0 valoraciones de 4 estrellas     ](https://wordpress.org/support/plugin/jb-license-manager/reviews/?filter=4)
 *  [  0 valoraciones de 3 estrellas     ](https://wordpress.org/support/plugin/jb-license-manager/reviews/?filter=3)
 *  [  0 valoraciones de 2 estrellas     ](https://wordpress.org/support/plugin/jb-license-manager/reviews/?filter=2)
 *  [  0 valoraciones de 1 estrellas     ](https://wordpress.org/support/plugin/jb-license-manager/reviews/?filter=1)

[Your review](https://wordpress.org/support/plugin/jb-license-manager/reviews/#new-post)

[Ver todas las reseñas](https://wordpress.org/support/plugin/jb-license-manager/reviews/)

## Colaboradores

 *   [ junaidbhatti ](https://profiles.wordpress.org/junaidbhatti/)

## Soporte

¿Tenés algo que decir? ¿Necesitás ayuda?

 [Ver el foro de asistencia](https://wordpress.org/support/plugin/jb-license-manager/)