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.
// 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.

