WP Manifestindependent plugin directory
manifest / developer / syntekpro-license-server

Syntekpro License Server

Professional WordPress license management system for plugins and themes

★ 0stars
v1.0.0latest · 9mo ago

Install

Download source zip No release zip yet

This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/syntekpro/syntekpro-license-server/archive/refs/heads/main.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

A comprehensive WordPress plugin for managing licenses for your premium WordPress plugins and themes.

📋 Description

Syntekpro License Server provides a complete solution for selling and managing licenses for your WordPress products. It includes:

  • REST API for license validation, activation, and deactivation
  • Admin Interface for creating and managing licenses
  • Domain Tracking to control where licenses can be activated
  • Expiration Management with customizable license durations
  • Status Control to activate, suspend, or revoke licenses

🚀 Features

  • ✅ Generate unique license keys with custom prefix (SP-XXXX-XXXX-XXXX-XXXX)
  • ✅ Control activation limits (single-site or multi-site licenses)
  • ✅ Set custom expiration periods
  • ✅ Track which domains are using each license
  • ✅ REST API endpoints for remote validation
  • ✅ Beautiful admin interface with one-click copy functionality
  • ✅ License status management (active, inactive, suspended, expired)
  • ✅ Secure nonce verification and sanitization
  • ✅ Easy integration with your plugins
  • ✅ Full settings page for API security, rate limits, and admin defaults

📦 Installation

Method 1: Manual Installation

  1. Download the plugin files
  2. Upload the syntekpro-license-server folder to /wp-content/plugins/
  3. Activate the plugin through the 'Plugins' menu in WordPress
  4. Navigate to 'Syntekpro Licenses' in the admin menu

Method 2: Development Installation

  1. Clone or copy the plugin to your plugins directory:
    cd wp-content/plugins/
    cp -r /path/to/Syntekpro-license-server ./syntekpro-license-server
  2. Activate the plugin in WordPress admin

🔧 Usage

Creating a License

  1. Go to Syntekpro Licenses → Add New
  2. Fill in the form:
    • Customer Email: The license owner's email
    • Product ID: Unique identifier for your plugin (e.g., my-plugin-pro)
    • Activation Limit: Number of sites allowed (default: 1)
    • Expires In: Number of days until expiration (default: 365)
  3. Click Create License
  4. Copy the generated license key and send it to your customer

Managing Licenses

  • View All Licenses: Go to Syntekpro Licenses
  • Change Status: Use the dropdown to change license status
  • Delete License: Click the delete button (with confirmation)
  • Copy License Keys: Click the copy button next to any license key

Plugin Settings

Go to Syntekpro Licenses → Settings to configure:

  • API Security: Require HMAC signatures and manage your HMAC secret
  • Rate Limits: Window size and per-endpoint limits (validate/activate/deactivate)
  • Admin Defaults: Licenses per page, default activation limit, default expiration days
  • Advanced Action: One-click HMAC secret regeneration (remember to update clients)
  • Connection Check: One-click API self-test against /syntekpro/v1/validate

API Endpoints

The plugin provides three REST API endpoints:

1. Validate License

POST /wp-json/syntekpro/v1/validate

Parameters:

  • license_key - The license key to validate
  • product_id - Your product identifier
  • X-Syntekpro-Timestamp (header, optional*) - Unix timestamp
  • X-Syntekpro-Signature (header, optional*) - HMAC SHA256 signature

Response:

{
  "valid": true,
  "message": "License is valid",
  "expires_at": "2026-01-21 12:00:00",
  "activations": "1/3"
}

2. Activate License

POST /wp-json/syntekpro/v1/activate

Parameters:

  • license_key - The license key
  • product_id - Your product identifier
  • domain - The domain to activate on
  • X-Syntekpro-Timestamp (header, optional*) - Unix timestamp
  • X-Syntekpro-Signature (header, optional*) - HMAC SHA256 signature

Response:

{
  "activated": true,
  "message": "License activated successfully",
  "activations": "1/3"
}

3. Deactivate License

POST /wp-json/syntekpro/v1/deactivate

Parameters:

  • license_key - The license key
  • product_id - Your product identifier
  • domain - The domain to deactivate from
  • X-Syntekpro-Timestamp (header, optional*) - Unix timestamp
  • X-Syntekpro-Signature (header, optional*) - HMAC SHA256 signature

Response:

{
  "deactivated": true,
  "message": "License deactivated successfully"
}

* Signature headers become required when Require HMAC Signatures is enabled in plugin settings.

Error Codes

Failed responses now include a machine-readable error_code field, for example:

{
  "activated": false,
  "message": "Activation limit reached (1 sites maximum)",
  "error_code": "activation_limit_reached"
}

Common codes: missing_required_parameters, invalid_license_key, license_product_mismatch, license_not_active, license_expired, activation_limit_reached, rate_limit_exceeded, missing_signature, invalid_signature, invalid_signature_timestamp, expired_signature_timestamp.

🔌 Integrating with Your Plugin

To add licensing to your WordPress plugin, use the client code:

require_once plugin_dir_path(__FILE__) . 'includes/class-license-client-helper.php';

// Initialize the license client helper
$license = new Syntekpro_License_Client_Helper(
  'my-plugin-pro',                 // Product ID (must match server)
  'https://license-server.com',    // License server base URL
  defined('MY_PLUGIN_LICENSE_HMAC_SECRET') ? MY_PLUGIN_LICENSE_HMAC_SECRET : '' // Optional HMAC secret
);

// Example: validate a key
$result = $license->validate_license('SP-XXXX-XXXX-XXXX-XXXX');

if (!empty($result['data']['valid'])) {
  // License valid
}

// Check if license is valid
if (!$license->is_license_valid('SP-XXXX-XXXX-XXXX-XXXX')) {
    wp_die('Please activate your license!');
}

// Your premium features here...

Client Helper Notes

  • Use includes/class-license-client-helper.php as a drop-in class in your premium plugin.
  • When the server has an HMAC secret configured, pass the same secret to the helper so it sends signed headers.
  • Available helper methods: validate_license($license_key), activate_license($license_key, $domain = ''), deactivate_license($license_key, $domain = ''), is_license_valid($license_key).

See the client implementation guide for complete integration instructions.

🗄️ Database Schema

The plugin creates a table wp_syntekpro_licenses with the following structure:

Column Type Description
id mediumint(9) Primary key
license_key varchar(255) Unique license key
email varchar(100) Customer email
product_id varchar(100) Product identifier
status varchar(20) License status
activations_limit int(11) Max activations allowed
activations_count int(11) Current activations
activated_domains text JSON array of domains
created_at datetime Creation timestamp
expires_at datetime Expiration timestamp

🔒 Security

  • All API requests are sanitized and validated
  • Optional HMAC request signing support for API clients
  • Built-in per-endpoint rate limiting for API abuse protection
  • WordPress nonce verification for admin actions
  • Capability checks for admin pages (manage_options)
  • Prepared SQL statements to prevent injection
  • Status validation for license updates

📝 License Statuses

  • active: License is valid and can be used
  • inactive: License exists but is not active
  • suspended: License has been temporarily disabled
  • expired: License expiration date has passed

🛠️ Requirements

  • WordPress 5.0 or higher
  • PHP 7.4 or higher
  • MySQL 5.6 or higher

📞 Support

For support, feature requests, or bug reports:

👨‍💻 Author

Syntek Pro

📄 License

This plugin is licensed under the GPL v2 or later.

🙏 Credits

Built with ❤️ for the WordPress community by Syntek Pro.


Version: 1.0.1
Last Updated: January 2026
Repository: https://github.com/syntekpro/syntekpro-license-server

Releases

1 release.

Tag
Published
v1.0.0 latest
Jan 21, 2026 9mo ago

These releases are tags only. The author does not attach a packaged zip, so there are no download counts to report.