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.

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',
        ]),
    ]);

    $body = json_decode(wp_remote_retrieve_body($response), true);
    if (empty($body['valid'])) {
        // Disable premium features
    }
});

Anti-piracy for distributed plugins

Origin header check: API validates that the request comes from an allowed domain, not just that the key is valid.

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 key activated on shop.example.com cannot validate from pirate.test.

Domain-origin guard

Even if someone extracts your API key and license key from the plugin source, they cannot replay it from an unauthorized domain. The server cross-checks the Origin header.

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 15 minutes.