Software License Manager


Software license management solution for your web applications (WordPress plugins, Themes, PHP based membership script etc.)

This plugin is very useful for creating a license server and doing the following via API:

  • Create license keys in your system (license server)
  • Check the status of a license key from from your application (remotely)
  • Activate a license key from your application (remotely)
  • Deactivate a license key (remotely)
  • Check a license key (remotely)
  • Track where the license key is being used.

You can also create license keys manually from the admin dashboard of this plugin.

Please note that this plugin is ONLY for developers

Check license manager documentation to learn more.

Integration with WP eStore plugin

Check WP eStore integration documentation

Github repository

If you need some extra action hooks or filters for this plugin then let us know.

Arbitrary section

See the following sample/example for multi-site environment/setup:


  1. Go to the Add New plugins screen in your WordPress admin area
  2. Click the upload tab
  3. Browse for the plugin file (
  4. Click Install Now and then activate the plugin




May 10, 2019
Great plugin that does what it promises. Thank you so much for having such a great product.
December 9, 2018
Don't let the negative reviews stop you from trying this plugin. Has features that you can tweak which other plugins charge you for. Light weight and built by trusted developer. Only thing missing is built-in integration with WooCommerce but looks like little extra work on dev side and will work. Thank you for sharing with the WP community.
September 16, 2018
Here is my take on the plugin, after giving the benefit of the doubt, reading the doc extensively and having asked questions to support: The code base is rather messy, not following WordPress standards and difficult to read. The logic in terms of security is flawed: why would anyone want to use a "Secret Key for License Verification Requests" when it is essentially public, distributed to the clients? The support failed to answer basic questions. The support prefers to address questions with "I am not a developer, RTFM" even when the documentation does NOT address the issue meaningfully. The UI is clunky, and the submission logic of license records makes wild assumptions (really? all licenses valid for 1 year by default?). When asked about it, the support dismisses the issue by saying "It's what our users want" without backing up the claim. The documentation gives dangerous advice, and the plugin uses unsafe logic. Licenses and keys are generated using the php function uniqid, which is essentially a timestamp, and therefore guessable. There would be little to no cost to use bin2hex( openssl_random_pseudo_bytes( [insert-number-here] ) ) instead. The documentation also advises the use of obfuscation tools as replacement for security. Since it is clearly stated this plugin is for developers, if you want to provide licenses, either roll with your own (there is a good tutorial on tutplus that can be adapted), or find another solution out there.
March 20, 2018
Great job guys! I love your plugin. Easy to use. The code is well written and well commented so customize it is a pleasure. 🙂 Thanks to share your code. Marco.
Read all 22 reviews

Contributors & Developers

“Software License Manager” is open source software. The following people have contributed to this plugin.


“Software License Manager” has been translated into 2 locales. Thank you to the translators for their contributions.

Translate “Software License Manager” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.



  • The product quantity of WP eStore product is taken into account when creating a new license key.
  • Added a new action hook in the listener API (can be used to override the API query).


  • Added a new optional column “subscr_id” to the license keys table. This can be used to store the subsriber ID value (if any) for recurring payment plans.
  • The “subscr_id” will also be present in the license query API output.


  • Added a new action hook for estore recurring payments.


  • Fixed a typo with the slm_api_response_args filter
  • The license key is also included in the license check API query’s JSON output.


  • The license status parameter can now be passed when executing the license create API query.


  • The manage licenses admin interface improvements for mobile devices.
  • The product reference (if any) is shown in the manage licenses interface also.


  • Added couple of filters to the API response args.


  • The check license query now outputs all the db column values.
  • It now captures the WP eStore product ID in the “Product Reference” column of the license manager (if the license is created by eStore).


  • Updated slm-api-utility.php to add Content-Type header to the API response.


  • The slm_create_new api call will no longer show an error code incorrectly.


  • Check for existence of company_name query value before using to fix undefined index error when it doesn’t exist.
  • Add ability to specify product_ref when creating license via API. Thanks to @maddisondesigns for the update.


  • Fixed undefined index warning “enable_auto_key_expiry”
  • The product_ref field is now available in the add/edit license menu. Also, this value is output with the “slm_check” API call. Thanks to Tobias Hildebrandt for implementing this.


  • Added a new error code for the following condition:
    If maximum activation has reached and the license key is used on the domain (where the request came from) then it will return a new error: LICENSE_IN_USE_ON_DOMAIN_AND_MAX_REACHED


  • The integration with WP eStore cart will create multiple licenses when a customer purchases more than 1 quantity of a product.


  • The API response will now include a numeric error code (in the event of an error). Thanks to Steve Gehrman.


  • The registered domains (if any) of a license key will get deleted when that key is deleted from the manage licenses menu.
  • Added wp_unslash() for firstname, lastname, registered domain and company name. Thanks to @sgehrman.
  • Added a new action hook (slm_license_key_expired) that gets triggered when a license key expires.


  • eStore integration update: changed expiry date field to accept number of days so the plugin can dynamically calculate the expiry date for the key.


  • Updated the eStore integration so a custom “Expiry Date” value can be set in the product configuration.


  • Updated the eStore plugin integration so a custom “Maximum Allowed Domains” value can be specified in the eStore product configuration.


  • Added new action and filter hooks in the add/edit interface so an addon can extend the functionality of that interface.
  • Added nonce check in the add/edit license interface.


  • Added a new feature to enable auto expiry of the license keys. You can enable this option from the settings.
  • If you don’t specify a expiry date, when adding a manual license key, it will use the current date plus 1 year as the expiry date.
  • Increased the width and height of the “Registered Domains” box in the edit license interface.
  • Added a new table column product_ref in the license keys table.
  • Added couple of new hooks in the plugin.


  • Added integration with the squeeze form submission of eStore plugin.


  • The license check query now outputs the date values also.
  • Improvement for the WP eStore integration.


  • Added a filter to remove any null values from the DB insert query parameter of the API Utility class.


  • Replaced “esc_url()” with “esc_url_raw()” in the sample plugin.
  • Updated some CSS in the admin interface for WordPress 4.4


  • Added new hooks before the API query is executed. This allows a developer to override the API query and do custom stuff.
  • Added a new API to check the details of an existing license key.


  • The license key is also included with the response sent to the new license creation request. Below is an example response:
    {“result”:”success”,”message”:”License successfully created”,”key”:”5580effe188d3″}

  • You can now pass a pre-generated license key to the license creation API using the “license_key” parameter in the request.


  • Updated the sample plugin code so the query works better.
  • Added the ability to reset the debug log file from the plugin settings interface.
  • The item_reference value will be stored in the database (if sent via the activation API query).


  • Added the option to search a license key from the manage licenses interface.


  • Updated the license key creation API check to use the value from “Secret Key for License Creation” field.


  • Added more sanitization.


  • Fixed a bug with the bulk delete license operation.


  • First commit to wordpress repository.