{"id":31915,"date":"2014-10-09T04:22:53","date_gmt":"2014-10-09T04:22:53","guid":{"rendered":"https:\/\/wordpress.org\/plugins-wp\/software-license-manager\/"},"modified":"2026-03-27T09:40:00","modified_gmt":"2026-03-27T09:40:00","slug":"software-license-manager","status":"publish","type":"plugin","link":"https:\/\/el.wordpress.org\/plugins\/software-license-manager\/","author":1257425,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"4.5.8","stable_tag":"4.5.8","tested":"7.0","requires":"5.0","requires_php":"7.4.0","requires_plugins":null,"header_name":"Software License Manager","header_author":"Tips and Tricks HQ","header_description":"","assets_banners_color":"b1ecfe","last_updated":"2026-03-27 09:40:00","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/www.tipsandtricks-hq.com\/software-license-manager-plugin-for-wordpress","header_plugin_uri":"https:\/\/www.tipsandtricks-hq.com\/software-license-manager-plugin-for-wordpress","header_author_uri":"https:\/\/www.tipsandtricks-hq.com\/","rating":4.6,"author_block_rating":0,"active_installs":900,"downloads":60480,"num_ratings":35,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.6":{"tag":"1.6","author":"mra13","date":"2015-06-17 04:15:38"},"1.7":{"tag":"1.7","author":"mra13","date":"2015-08-07 07:16:16"},"1.8":{"tag":"1.8","author":"mra13","date":"2015-12-12 01:59:03"},"2.2":{"tag":"2.2","author":"mra13","date":"2016-07-01 16:27:44"},"2.5":{"tag":"2.5","author":"mra13","date":"2016-12-22 11:31:34"},"2.7":{"tag":"2.7","author":"mra13","date":"2017-02-07 06:57:17"},"3.1":{"tag":"3.1","author":"mra13","date":"2017-10-03 12:18:06"},"3.4":{"tag":"3.4","author":"mra13","date":"2018-01-08 00:20:25"},"4.1":{"tag":"4.1","author":"mra13","date":"2018-11-13 05:26:43"},"4.3":{"tag":"4.3","author":"mra13","date":"2020-01-17 04:50:17"},"4.4.1":{"tag":"4.4.1","author":"mra13","date":"2020-06-09 04:12:56"},"4.4.4":{"tag":"4.4.4","author":"mra13","date":"2020-09-07 09:21:03"},"4.4.6":{"tag":"4.4.6","author":"mra13","date":"2021-07-19 02:30:48"},"4.5.0":{"tag":"4.5.0","author":"mra13","date":"2021-09-10 02:07:26"},"4.5.5":{"tag":"4.5.5","author":"mra13","date":"2024-04-12 03:16:40"},"4.5.6":{"tag":"4.5.6","author":"mra13","date":"2024-09-19 06:37:51"},"4.5.7":{"tag":"4.5.7","author":"mra13","date":"2024-09-19 06:39:01"},"4.5.8":{"tag":"4.5.8","author":"mra13","date":"2026-03-27 09:40:00"}},"upgrade_notice":{"":"<p>None<\/p>"},"ratings":{"1":3,"2":0,"3":0,"4":2,"5":30},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":1135848,"resolution":"128x128","location":"assets","locale":""}},"assets_banners":{"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":1135848,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.6","1.7","1.8","2.2","2.5","2.7","3.1","3.4","4.1","4.3","4.4.1","4.4.4","4.4.6","4.5.0","4.5.5","4.5.6","4.5.7","4.5.8"],"block_files":[],"assets_screenshots":[],"screenshots":[],"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[15415,58361,652,36151,58362],"plugin_category":[45],"plugin_contributors":[77713,77710],"plugin_business_model":[],"class_list":["post-31915","plugin","type-plugin","status-publish","hentry","plugin_tags-license","plugin_tags-license-key","plugin_tags-manager","plugin_tags-serial","plugin_tags-serial-key","plugin_category-ecommerce","plugin_contributors-ruhul-amin","plugin_contributors-tips-and-tricks-hq","plugin_committers-mra13","plugin_support_reps-mbrsolution"],"banners":{"banner":"https:\/\/ps.w.org\/software-license-manager\/assets\/banner-772x250.jpg?rev=1135848","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/software-license-manager\/assets\/icon-128x128.png?rev=1135848","icon_2x":false,"generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Software license management solution for your web applications (WordPress plugins, Themes, PHP based membership script etc.)<\/p>\n\n<p>This plugin is very useful for creating a license server and doing the following via API:<\/p>\n\n<ul>\n<li>Create license keys in your system (license server)<\/li>\n<li>Check the status of a license key from from your application (remotely)<\/li>\n<li>Activate a license key from your application (remotely)<\/li>\n<li>Deactivate a license key (remotely)<\/li>\n<li>Check a license key (remotely)<\/li>\n<li>Track where the license key is being used.<\/li>\n<\/ul>\n\n<p>You can also create license keys manually from the admin dashboard of this plugin.<\/p>\n\n<h4>Please note that this plugin is ONLY for developers<\/h4>\n\n<p>Check <a href=\"https:\/\/www.tipsandtricks-hq.com\/software-license-manager-plugin-for-wordpress\">license manager documentation<\/a> to learn more.<\/p>\n\n<h4>Integration with WP Express Checkout Plugin<\/h4>\n\n<p>Check <a href=\"https:\/\/wp-express-checkout.com\/integrate-software-license-manager-plugin-with-wp-express-checkout\/\">WP Express Checkout integration documentation<\/a><\/p>\n\n<h4>Integration with WP eStore plugin<\/h4>\n\n<p>Check <a href=\"https:\/\/www.tipsandtricks-hq.com\/ecommerce\/integrate-wp-estore-with-software-license-manager-plugin-3731\">WP eStore integration documentation<\/a><\/p>\n\n<h4>Github repository<\/h4>\n\n<p>https:\/\/github.com\/Arsenal21\/software-license-manager<\/p>\n\n<p>If you need some extra action hooks or filters for this plugin then let us know.<\/p>\n\n<h3>Arbitrary section<\/h3>\n\n<p>See the following sample\/example for multi-site environment\/setup:\nhttps:\/\/github.com\/paratheme\/Software-License-Manager-Multisite-licensed<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Go to the Add New plugins screen in your WordPress admin area<\/li>\n<li>Click the upload tab<\/li>\n<li>Browse for the plugin file (software-license-manager.zip)<\/li>\n<li>Click Install Now and then activate the plugin<\/li>\n<\/ol>\n\n<!--section=faq-->\n<p>None<\/p>\n\n<!--section=changelog-->\n<h4>4.5.8<\/h4>\n\n<ul>\n<li>Added minimum PHP version requirement (PHP 7.4.0).<\/li>\n<li>Added a condition to suppress the debug warning when the 'item_reference' parameter is not included in the API call.<\/li>\n<\/ul>\n\n<h4>4.5.7<\/h4>\n\n<ul>\n<li>PHP 8.3 compatibility related updates.<\/li>\n<li>Using Use COUNT(DISTINCT) to ensure that it is counting the number of distinct license keys.<\/li>\n<\/ul>\n\n<h4>4.5.6<\/h4>\n\n<ul>\n<li>PHP 8.2 compatibility related update.<\/li>\n<\/ul>\n\n<h4>4.5.5<\/h4>\n\n<ul>\n<li>Added the current date to the slm_check API response.<\/li>\n<\/ul>\n\n<h4>4.5.4<\/h4>\n\n<ul>\n<li>Added a new action hook for when it receives an activation request for an expired license key (slm_api_listener_slm_activate_key_expired).<\/li>\n<li>Added new hook in the add license interface.<\/li>\n<li>Added hooks to the delete license domain interface.<\/li>\n<li>WP eStore Integration: it will use the default 1 year expiry date if a product specific expiry configuration is not set.<\/li>\n<\/ul>\n\n<h4>4.5.3<\/h4>\n\n<ul>\n<li>Added a new database column named \"user_ref\" for allowing a user reference to be saved in the database with a license key (if applicable).<\/li>\n<\/ul>\n\n<h4>4.5.2<\/h4>\n\n<ul>\n<li>PHP 7.2.x compatibility.<\/li>\n<\/ul>\n\n<h4>4.5.1<\/h4>\n\n<ul>\n<li>Added nonce check to the 'slm_delete_domain' action. Thanks to Jetpack Scan team at Automattic.<\/li>\n<\/ul>\n\n<h4>4.5.0<\/h4>\n\n<ul>\n<li>More variable escaping and sanitization.<\/li>\n<li>Replaced CURL with wp_remote_get() function.<\/li>\n<li>Removed example\/sample plugin code file from the plugin.<\/li>\n<li>Added the sample plugin download option on our website.<\/li>\n<li>Removed the unused list table class.<\/li>\n<\/ul>\n\n<h4>4.4.9<\/h4>\n\n<ul>\n<li>Added nonce check for debug log reset<\/li>\n<li>Log file name is automatically generated. <\/li>\n<li>Added confirmation for log file reset operation.<\/li>\n<li>Added more sanitization to various request parameters.<\/li>\n<\/ul>\n\n<h4>4.4.8<\/h4>\n\n<ul>\n<li>Sanitize the \"edit_record\" parameter in the \"Edit License\" menu. Thanks to WPScan team for pointing it out.<\/li>\n<li>Sanitize the prefix parameter in the settings menu. Thanks to WPScan team for pointing it out.<\/li>\n<li>Integration with the WP Express Checkout plugin.<\/li>\n<\/ul>\n\n<h4>4.4.7<\/h4>\n\n<ul>\n<li>It is recommended that you backup your license database before upgrading this version (just to be sure).<\/li>\n<li>Improved the database query of the manage license page to be more efficient so it loads faster.<\/li>\n<li>Improved the database query of the manage license page's search function to make it more efficient.<\/li>\n<li>Added nonce check to the bulk delete action.<\/li>\n<\/ul>\n\n<h4>4.4.6<\/h4>\n\n<ul>\n<li>Added sanitization and nonce check for the settings interface to prevent any potential CSRF attack issue. Thanks to Koken for pointing it out.<\/li>\n<\/ul>\n\n<h4>4.4.5<\/h4>\n\n<ul>\n<li>The IP address is logged in the debug log file for an API request (if debug option is enabled in settings).<\/li>\n<\/ul>\n\n<h4>4.4.4<\/h4>\n\n<ul>\n<li>Added \"Add New License\" button in the Manage licenses menu.<\/li>\n<li>PHP Notice in the manage licenses menu fixed.<\/li>\n<\/ul>\n\n<h4>4.4.3<\/h4>\n\n<ul>\n<li>Fixed an issue with the sorting option in the Manage Licenses interface.<\/li>\n<\/ul>\n\n<h4>4.4.2<\/h4>\n\n<ul>\n<li>Added a new filter for the Management Permission constant (so it can be customized by an addon).<\/li>\n<li>Fixed a wpdb::prepare query with the search feature. Thanks to @Nauriskolats for pointing it out.<\/li>\n<\/ul>\n\n<h4>4.4.1<\/h4>\n\n<ul>\n<li>Fixed a product editing glitch with the WP eStore plugin integration.<\/li>\n<\/ul>\n\n<h4>4.4<\/h4>\n\n<ul>\n<li>The following UI improvements were submitted by Brian DiChiara. A big Thank You to @solepixel<\/li>\n<li>Adds domain to license search.<\/li>\n<li>Retain search term value in search field.<\/li>\n<li>Better UI for deleting domains:\nWider domain table.\nAllow for more domains visible in table.\nEasier to click \"delete\" button.\nPrompt before deleting asking \"Are you sure you want to remove this domain?\".\nIntuitive post-delete to remove section if no more domains are active.<\/li>\n<li>Displays total activated domains in Manage Licenses table.<\/li>\n<\/ul>\n\n<h4>4.3<\/h4>\n\n<ul>\n<li>The product quantity of WP eStore product is taken into account when creating a new license key.<\/li>\n<li>Added a new action hook in the listener API (can be used to override the API query).<\/li>\n<\/ul>\n\n<h4>4.2<\/h4>\n\n<ul>\n<li>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.<\/li>\n<li>The \"subscr_id\" will also be present in the license query API output.<\/li>\n<\/ul>\n\n<h4>4.1<\/h4>\n\n<ul>\n<li>Added a new action hook for estore recurring payments.<\/li>\n<\/ul>\n\n<h4>4.0<\/h4>\n\n<ul>\n<li>Fixed a typo with the slm_api_response_args filter<\/li>\n<li>The license key is also included in the license check API query's JSON output.<\/li>\n<\/ul>\n\n<h4>3.9<\/h4>\n\n<ul>\n<li>The license status parameter can now be passed when executing the license create API query.<\/li>\n<\/ul>\n\n<h4>3.8<\/h4>\n\n<ul>\n<li>The manage licenses admin interface improvements for mobile devices.<\/li>\n<li>The product reference (if any) is shown in the manage licenses interface also.<\/li>\n<\/ul>\n\n<h4>3.7<\/h4>\n\n<ul>\n<li>Added couple of filters to the API response args.<\/li>\n<\/ul>\n\n<h4>3.6<\/h4>\n\n<ul>\n<li>The check license query now outputs all the db column values.<\/li>\n<li>It now captures the WP eStore product ID in the \"Product Reference\" column of the license manager (if the license is created by eStore).<\/li>\n<\/ul>\n\n<h4>3.5<\/h4>\n\n<ul>\n<li>Updated slm-api-utility.php to add Content-Type header to the API response.<\/li>\n<\/ul>\n\n<h4>3.4<\/h4>\n\n<ul>\n<li>The slm_create_new api call will no longer show an error code incorrectly.<\/li>\n<\/ul>\n\n<h4>3.3<\/h4>\n\n<ul>\n<li>Check for existence of company_name query value before using to fix undefined index error when it doesn't exist.<\/li>\n<li>Add ability to specify product_ref when creating license via API. Thanks to @maddisondesigns for the update.<\/li>\n<\/ul>\n\n<h4>3.2<\/h4>\n\n<ul>\n<li>Fixed undefined index warning \"enable_auto_key_expiry\"<\/li>\n<li>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.<\/li>\n<\/ul>\n\n<h4>3.1<\/h4>\n\n<ul>\n<li>Added a new error code for the following condition:\nIf 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<\/li>\n<\/ul>\n\n<h4>3.0<\/h4>\n\n<ul>\n<li>The integration with WP eStore cart will create multiple licenses when a customer purchases more than 1 quantity of a product.<\/li>\n<\/ul>\n\n<h4>2.9<\/h4>\n\n<ul>\n<li>The API response will now include a numeric error code (in the event of an error). Thanks to Steve Gehrman.<\/li>\n<\/ul>\n\n<h4>2.8<\/h4>\n\n<ul>\n<li>The registered domains (if any) of a license key will get deleted when that key is deleted from the manage licenses menu.<\/li>\n<li>Added wp_unslash() for firstname, lastname, registered domain and company name. Thanks to @sgehrman.<\/li>\n<li>Added a new action hook (slm_license_key_expired) that gets triggered when a license key expires.<\/li>\n<\/ul>\n\n<h4>2.7<\/h4>\n\n<ul>\n<li>eStore integration update: changed expiry date field to accept number of days so the plugin can dynamically calculate the expiry date for the key.<\/li>\n<\/ul>\n\n<h4>2.6<\/h4>\n\n<ul>\n<li>Updated the eStore integration so a custom \"Expiry Date\" value can be set in the product configuration.<\/li>\n<\/ul>\n\n<h4>2.5<\/h4>\n\n<ul>\n<li>Updated the eStore plugin integration so a custom \"Maximum Allowed Domains\" value can be specified in the eStore product configuration.<\/li>\n<\/ul>\n\n<h4>2.4<\/h4>\n\n<ul>\n<li>Added new action and filter hooks in the add\/edit interface so an addon can extend the functionality of that interface.<\/li>\n<li>Added nonce check in the add\/edit license interface.<\/li>\n<\/ul>\n\n<h4>2.3<\/h4>\n\n<ul>\n<li>Added a new feature to enable auto expiry of the license keys. You can enable this option from the settings.<\/li>\n<li>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.<\/li>\n<li>Increased the width and height of the \"Registered Domains\" box in the edit license interface.<\/li>\n<li>Added a new table column product_ref in the license keys table.<\/li>\n<li>Added couple of new hooks in the plugin.<\/li>\n<\/ul>\n\n<h4>2.2<\/h4>\n\n<ul>\n<li>Added integration with the squeeze form submission of eStore plugin.<\/li>\n<\/ul>\n\n<h4>2.1<\/h4>\n\n<ul>\n<li>The license check query now outputs the date values also.<\/li>\n<li>Improvement for the WP eStore integration.<\/li>\n<\/ul>\n\n<h4>2.0<\/h4>\n\n<ul>\n<li>Added a filter to remove any null values from the DB insert query parameter of the API Utility class.<\/li>\n<\/ul>\n\n<h4>1.9<\/h4>\n\n<ul>\n<li>Replaced \"esc_url()\" with \"esc_url_raw()\" in the sample plugin. <\/li>\n<li>Updated some CSS in the admin interface for WordPress 4.4<\/li>\n<\/ul>\n\n<h4>1.8<\/h4>\n\n<ul>\n<li>Added new hooks before the API query is executed. This allows a developer to override the API query and do custom stuff.<\/li>\n<li>Added a new API to check the details of an existing license key.<\/li>\n<\/ul>\n\n<h4>1.7<\/h4>\n\n<ul>\n<li><p>The license key is also included with the response sent to the new license creation request. Below is an example response:\n{\"result\":\"success\",\"message\":\"License successfully created\",\"key\":\"5580effe188d3\"}<\/p><\/li>\n<li><p>You can now pass a pre-generated license key to the license creation API using the \"license_key\" parameter in the request.<\/p><\/li>\n<\/ul>\n\n<h4>1.6<\/h4>\n\n<ul>\n<li>Updated the sample plugin code so the query works better.<\/li>\n<li>Added the ability to reset the debug log file from the plugin settings interface.<\/li>\n<li>The item_reference value will be stored in the database (if sent via the activation API query).<\/li>\n<\/ul>\n\n<h4>1.5<\/h4>\n\n<ul>\n<li>Added the option to search a license key from the manage licenses interface.<\/li>\n<\/ul>\n\n<h4>1.4<\/h4>\n\n<ul>\n<li>Updated the license key creation API check to use the value from \"Secret Key for License Creation\" field.<\/li>\n<\/ul>\n\n<h4>1.3<\/h4>\n\n<ul>\n<li>Added more sanitization.<\/li>\n<\/ul>\n\n<h4>1.2<\/h4>\n\n<ul>\n<li>Fixed a bug with the bulk delete license operation.<\/li>\n<\/ul>\n\n<h4>1.1<\/h4>\n\n<ul>\n<li>First commit to wordpress repository.<\/li>\n<\/ul>","raw_excerpt":"Create and manage license keys for your software applications easily","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/el.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/31915","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/el.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/el.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/el.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=31915"}],"author":[{"embeddable":true,"href":"https:\/\/el.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/mra13"}],"wp:attachment":[{"href":"https:\/\/el.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=31915"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/el.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=31915"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/el.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=31915"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/el.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=31915"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/el.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=31915"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/el.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=31915"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}