WordPress plugins

License your WordPress plugins with domain-mode

Tie each license to the website it is installed on, so a single key cannot run on 100 sites. Works with any WordPress plugin.

Step-by-step integration guide
PHP
// In your plugin's main file, validate on admin_init
add_action('admin_init', function () {
    $response = wp_remote_post('https://api.licensr.app/v1/license/validate', [
        'headers' => [
            'Content-Type'  => 'application/json',
            'Authorization' => 'Bearer ' . YOUR_PLUGIN_API_KEY,
        ],
        'body' => wp_json_encode([
            'license_key' => get_option('my_plugin_license_key'),
            'plugin_slug' => 'my-plugin',
        ]),
    ]);

    // First run: call /v1/license/activate once with the site's domain (see the guide)
    $body = json_decode(wp_remote_retrieve_body($response), true);
    if (isset($body['valid']) && $body['valid'] === false) {
        // Disable premium features
    }
    // No answer (network error, 429, 5xx): keep the previous state
});

Anti-piracy for distributed plugins

Per-domain activations: Each activation is tied to the site’s domain and counts against the plan’s site limit.

HMAC-peppered storage: Keys are hashed before storage. A database breach does not expose working license keys.

Why domain-mode for WordPress

One license per site

Each activation binds to the domain it is installed on. A single-site key activated on shop.example.com cannot be activated on a second domain until the first is released.

Site limits that hold

Each activation is tied to the site’s domain and counts against the plan’s site limit. A shared key runs out of activations instead of spreading to every site.

Multi-site support

Sell plans with 1, 3, or unlimited domain activations. Customers sign in on a branded page and self-manage which domains are active from a portal carrying your logo and colours.

Subscription lifecycle included

Renewals, grace periods, and cancellation are handled automatically via Stripe. When a subscription lapses, the license transitions to expired and validate returns false.

Ready to license your WordPress plugin?

Free tier available. From signup to a working validate call in about 30 minutes.