How to Sell WordPress Plugins with License Keys

How to Sell WordPress Plugins with License Keys (Free Guide 2026)

If you have built a WordPress plugin and want to monetize it, you need a reliable way to sell WordPress plugins with license keys. License keys let you control who can use your plugin, manage updates, limit activations, and build a sustainable software business — all from your own WordPress site.

The good news: you do not need expensive SaaS platforms or paid licensing add-ons. In this guide, we walk through the entire process of setting up a plugin sales system with license key management using completely free tools. By the end, you will have a working store that generates license keys automatically, validates them via REST API, and even supports subscription billing for recurring revenue.

This tutorial is written for WordPress developers who want practical, step-by-step instructions — not marketing fluff. Every detail below is based on verified product data, and every tool mentioned is genuinely free to use.

Why License Keys Matter for Plugin Developers

Before diving into the setup, it is worth understanding why license keys are essential for selling WordPress plugins professionally. A wordpress plugin license key system gives you four critical capabilities:

1. Protect Your Revenue

Without license keys, anyone who obtains a copy of your plugin can use it indefinitely. License keys tie each purchase to a specific buyer, so you know exactly who is authorized to use your software. When a license expires or is revoked, the customer loses access to updates and support — which is a strong incentive to renew.

2. Prevent Unauthorized Distribution

Plugin piracy is a real problem in the WordPress ecosystem. While license keys cannot prevent someone from sharing your plugin files, they can prevent unauthorized copies from receiving updates, accessing premium features, or connecting to your support system. This makes pirated copies increasingly outdated and less attractive over time.

3. Enable Automatic Updates

One of the most valuable features you can offer plugin customers is automatic updates delivered through the WordPress dashboard — just like plugins from WordPress.org. License validation ensures only paying customers receive these updates. When a customer’s license expires, updates stop, which is the single best incentive for renewal.

4. Manage Support Efficiently

License keys let you verify that a support request comes from a paying customer before investing your time. You can also tier your support based on license type — for example, priority support for customers with higher-tier licenses, or basic support for single-site licenses.

5. Track Activations and Usage

With activation limits, you can sell different license tiers — a single-site license, a 5-site license, or an unlimited license — all from the same plugin file. The license key system tracks how many sites each customer has activated, enforcing the limits automatically.

What You Need

Here is the complete list of tools you need to sell plugins online free of charge. There are no hidden costs or premium tiers required:

ToolPurposeCost
WordPress 6.0+Your website and store platformFree
WooCommerce 7.0+eCommerce functionality (cart, checkout, payments)Free
DMSI DDLSLicense key generation, validation, downloads, subscriptionsFree

That is it. Three free tools. You also need PHP 8.0 or higher on your server, which most modern WordPress hosts already provide. DMSI DDLS requires WooCommerce 7.0 or higher and WordPress 6.0 or higher.

If you already have a WordPress site with WooCommerce installed, you are one plugin install away from a full license key management wordpress system. If you are starting from scratch, install WordPress first, then WooCommerce, then DMSI DDLS.

Step 1: Install and Configure DMSI DDLS

DMSI DDLS (Digital Downloads & Licensing System) is a free WooCommerce extension that adds software licensing, secure file delivery, version control, and subscription management to your store. There are no paid tiers — every feature is included in the free plugin.

Installation

  1. Log in to your WordPress admin dashboard
  2. Navigate to Plugins > Add New
  3. In the search box, type DMSI DDLS
  4. Find the plugin in the results and click Install Now
  5. After installation completes, click Activate

Alternatively, you can download DMSI DDLS from WordPress.org and upload it manually via Plugins > Add New > Upload Plugin.

Initial Configuration

After activation, you will see a new DDLS menu item in your WordPress admin sidebar. Navigate to DDLS > Settings to configure the basics:

  1. Company Name — Enter your company or brand name. This appears in license-related emails and the customer portal.
  2. Support Email — Enter the email address where customers should reach you for licensing questions.
  3. Default Activation Limit — Set the default number of sites a single license key can be activated on. You can override this per product. Common choices are 1 (single-site), 5 (developer), or 10 (agency). You can also choose unlimited.

Save your settings. The plugin automatically creates 13 custom database tables to manage licenses, activations, downloads, subscriptions, and more. It also registers 8 automated background jobs that handle tasks like license expiration checks, subscription billing retries, and download link cleanup.

For more detailed configuration options, see the quick start guide.

Step 2: Create a Licensed Product in WooCommerce

Now that DMSI DDLS is installed, you can create your first licensed product. This is where your plugin becomes a purchasable item with automatic license key generation.

Create the Product

  1. Go to Products > Add New in your WordPress admin
  2. Enter your plugin name as the product title (for example, “My Awesome Plugin — Pro License”)
  3. Write a product description explaining what the plugin does and what the customer gets
  4. Set your price in the General tab
  5. Check the Virtual checkbox — this removes shipping fields since software has no physical delivery
  6. Check the Downloadable checkbox — this enables file attachment for your plugin ZIP

Enable Licensing

  1. Look for the “Licensed” checkbox that DMSI DDLS added to the product editor
  2. Check it to enable license key generation for this product
  3. Configure the license settings that appear:
    • Activation Limit — How many sites can this license be activated on? Choose from 1, 5, 10, or unlimited. This overrides the global default you set in DDLS Settings.
    • License Duration — How long the license remains active after purchase. Set to 1 year for annual licenses, or leave empty for lifetime licenses.

Upload Your Plugin File

  1. In the Downloadable Files section, click Add File
  2. Upload your plugin ZIP file
  3. DMSI DDLS automatically generates a SHA256 file hash for integrity verification — customers can verify the download has not been tampered with

DMSI DDLS supports both simple and variable WooCommerce products. If you want to sell multiple license tiers (such as a single-site license and a developer license at different prices), create a variable product with variations for each tier, and set different activation limits on each variation.

Platform-Specific Files

If your plugin or software has different versions for different platforms, DMSI DDLS supports platform-specific files. You can upload separate files for Windows, Mac, Linux, or All Platforms. Customers will see the appropriate download for their system in the customer portal.

Step 3: Configure License Key Settings

DMSI DDLS gives you control over how license keys are generated and managed. Navigate to DDLS > Settings and look for the licensing configuration options.

Key Format

License keys are auto-generated in a secure format when an order is completed. Each key is unique and tied to the specific order, customer, and product. You can configure the key format to match your branding preferences.

Expiration and Grace Periods

Configure what happens when a license reaches its expiration date:

  • Expiration — The license transitions from “active” to “expired” status automatically. DMSI DDLS tracks five license statuses: active, expired, suspended, cancelled, and revoked.
  • Grace Period — Optionally give customers a grace period after expiration before cutting off updates and API access. This encourages renewal without immediately disrupting their workflow.

Auto-Generation on Order

By default, DMSI DDLS generates license keys automatically when a WooCommerce order is marked as completed. The customer receives their license key in the order confirmation email and can also find it in the customer portal. No manual intervention is needed — the entire flow from purchase to license delivery is automated.

Email Notifications

DMSI DDLS includes 13 or more email notification types to keep your customers informed throughout the license lifecycle. These include notifications for license creation, activation, deactivation, expiration warnings, renewal reminders, and more. You can customize the email templates in DDLS > Settings.

Step 4: Set Up the Customer Experience

A professional customer portal is essential when you sell wordpress plugins with license keys. Customers need a self-service area where they can manage their licenses, download files, and handle their account without contacting support for every small request.

The Customer Portal

DMSI DDLS includes a built-in Customer Portal with 6 dedicated pages:

  1. Dashboard — Overview of the customer’s account, recent orders, and license status at a glance
  2. Licenses — Complete list of all license keys with status, expiration dates, activation counts, and the ability to activate or deactivate sites
  3. Downloads — Access to all purchased plugin files, with version history and SHA256 hash verification
  4. Subscriptions — Manage active subscriptions, view billing history, and update payment methods
  5. Support Contracts — View and manage any support contracts associated with their licenses
  6. Account — Standard account management (profile, password, billing address)

One-Click License Key Copying

In the Licenses page, customers can copy their license key with a single click. This small usability detail makes a big difference — developers often need to paste license keys into wp-config.php files, plugin settings pages, or deployment scripts. Making it easy to copy reduces support tickets and improves the customer experience.

Setting Up the Portal Pages

DMSI DDLS creates the customer portal pages automatically during plugin activation. If you need to recreate them or customize their appearance, check the detailed documentation for instructions on shortcodes and page templates.

Step 5: Test the Full Flow

Before launching your plugin store to real customers, test the entire purchase and licensing flow end-to-end. This is critical — a broken checkout or missing license key will cost you sales and credibility.

Create a Test Order

  1. If you have not already, set up a payment gateway in WooCommerce. For testing, you can use WooCommerce’s built-in “Cash on Delivery” method or a Stripe/PayPal sandbox.
  2. Open your store in an incognito browser window (or log out of your admin account)
  3. Add your licensed product to the cart
  4. Complete the checkout process
  5. In WP Admin, go to WooCommerce > Orders and mark the test order as “Completed”

Verify License Key Generation

  1. Check the order details — you should see a license key assigned to the order
  2. Check the customer’s email — the order confirmation should include the license key
  3. Navigate to DDLS > Licenses in WP Admin — the new license should appear with status “active”
  4. Log in as the test customer and visit the Customer Portal — verify the license appears in the Licenses page and the plugin file appears in the Downloads page

Test License Activation via API

DMSI DDLS provides a REST API for license validation and activation. The API namespace is /wp-json/dmsilm/v1/. Test the validation endpoint by making a request:

GET https://yoursite.com/wp-json/dmsilm/v1/licenses/validate?license_key=YOUR-TEST-KEY&site_url=https://testsite.com

You should receive a JSON response indicating whether the license is valid, the activation count, the expiration date, and other license details. If the response shows "valid": true, your licensing system is working correctly.

Step 6: Validate Licenses from Your Plugin

The most important integration step is adding license validation to your plugin code itself. This is what connects your plugin on the customer’s site back to your licensing server, enabling you to verify purchases, control updates, and enforce activation limits.

PHP Code for License Validation

Add the following function to your plugin. It calls the DMSI DDLS REST API to validate a license key against your store:

function my_plugin_validate_license($license_key) {
    $response = wp_remote_get(
        'https://yoursite.com/wp-json/dmsilm/v1/licenses/validate',
        array(
            'body' => array(
                'license_key' => $license_key,
                'site_url'    => home_url(),
            ),
        )
    );
    if (is_wp_error($response)) {
        return false;
    }
    $body = json_decode(wp_remote_retrieve_body($response), true);
    return isset($body['valid']) && $body['valid'] === true;
}

How This Works

  1. The function takes a license key as input (typically stored in the plugin’s settings page by the customer)
  2. It sends a request to your store’s REST API at the /wp-json/dmsilm/v1/licenses/validate endpoint
  3. The request includes the license key and the site URL where the plugin is installed
  4. DMSI DDLS checks the key against its database — verifying it exists, is active (not expired, suspended, cancelled, or revoked), and has not exceeded its activation limit
  5. The function returns true if the license is valid, false otherwise

Where to Use This in Your Plugin

Call this validation function in strategic places within your plugin:

  • Plugin activation — Validate when the customer first activates the plugin and enters their license key
  • Periodic checks — Run validation daily or weekly using WordPress cron to catch expired licenses
  • Update checks — Validate before serving automatic updates so only licensed sites receive new versions
  • Feature gating — If you have a freemium model, validate before enabling premium features

Handling Validation Responses

In your plugin settings page, provide clear feedback to the customer based on the validation result:

  • If valid === true — Show a green “License Active” indicator with the expiration date
  • If the license is expired — Show a renewal link pointing to your store
  • If the activation limit is exceeded — Inform the customer they need to deactivate another site first, or upgrade their license
  • If the key is invalid — Prompt the customer to double-check their license key or contact support

Remember to replace https://yoursite.com in the code snippet with your actual store URL. For the complete API reference, see the detailed documentation.

Bonus: Subscription Billing for Recurring Revenue

Selling one-time licenses works, but subscription billing transforms your plugin into a predictable, recurring revenue stream. Instead of hoping customers manually renew each year, subscriptions charge automatically — reducing churn and increasing lifetime customer value.

DMSI DDLS includes built-in subscription management at no extra cost. You do not need a separate subscriptions plugin or a paid WooCommerce extension.

Subscription Billing Cycles

You can configure subscriptions with the following billing cycles (determined by your License Duration setting):

  • Daily — Useful for trial periods or metered billing
  • Weekly — Suitable for short-term project licenses
  • Monthly — Common for SaaS-style plugin pricing
  • Yearly — The most popular choice for WordPress plugin subscriptions

Payment Retry and Dunning

What happens when a subscription payment fails? DMSI DDLS handles this automatically with payment retry and dunning (the process of communicating with customers about failed payments):

  • Automatic payment retry — The system retries failed payments on a schedule, giving temporary payment issues time to resolve
  • Dunning emails — Customers receive email notifications about failed payments with instructions on how to update their payment method
  • Grace period — The license remains active during the retry period so the customer’s plugin continues working while payment issues are resolved
  • Automatic suspension — If all retry attempts fail, the subscription and associated license are suspended automatically

Setting Up a Product with Subscription Billing

To create a subscription-based plugin license:

  1. Create a new WooCommerce product as described in Step 2
  2. Enable the “Licensed” option and configure license settings
  3. In the DDLS subscription settings, set the License Duration in your License Type settings — a 12-month duration means annual billing, a 1-month duration means monthly billing
  4. Set the subscription price — this can be different from a one-time purchase price
  5. Configure trial periods if you want to offer a free trial before billing starts

When a customer purchases a product with subscription billing enabled, DMSI DDLS handles the entire lifecycle: initial payment, license key generation, recurring billing, payment retry on failure, renewal notifications, and license expiration when the subscription ends.

Frequently Asked Questions

Is DMSI DDLS really free for selling plugins?

Yes. DMSI DDLS is completely free. Every feature described in this guide — license key generation, REST API validation, customer portal, subscription billing, secure downloads, SHA256 file verification, email notifications — is included in the free plugin. You can download it from WordPress.org and start selling immediately. Optional paid extensions are available for advanced automation like dunning management, enterprise API access, and self-hosted update distribution — but the free plugin is more than enough for solo creators and small teams starting out.”.

How many license keys can I generate?

There is no limit on the number of license keys DMSI DDLS can generate. Whether you sell 10 licenses or 10,000, the system handles it. License data is stored in 13 custom database tables optimized for performance, and 8 automated background jobs handle maintenance tasks like expiration checks without slowing down your site.

Can I sell both free and premium versions of my plugin?

Yes. A common approach is to list the free version of your plugin on WordPress.org for maximum visibility, then sell the premium version with a license key through your own store using WooCommerce and DMSI DDLS. The free version can include an upgrade prompt that links to your store. When customers purchase, they receive a license key that unlocks premium features or provides access to the premium plugin download.

Does DMSI DDLS handle automatic updates?

DMSI DDLS provides the server-side infrastructure for delivering updates to licensed customers. It manages version tracking, file hosting with SHA256 hash verification, and license validation. Your plugin code needs to include an update checker that queries the DMSI DDLS API to check for new versions and serve the update file to WordPress. See the detailed documentation for the update integration guide.

What payment gateways are supported?

DMSI DDLS works with any payment gateway that WooCommerce supports. This includes Stripe, PayPal, bank transfers, and dozens of other gateways available through WooCommerce’s extensive extension ecosystem. Since DMSI DDLS extends WooCommerce rather than replacing it, you get access to the full WooCommerce payment gateway library.

Conclusion

Selling WordPress plugins with license keys does not require expensive tools or complicated setups. With WordPress, WooCommerce, and DMSI DDLS — all free — you have everything you need to run a professional plugin business: automated license key generation, REST API validation, a customer self-service portal, secure file delivery, and even subscription billing with payment retry.

Here is a summary of the steps covered in this guide:

  1. Install and configure DMSI DDLS from the WordPress plugin directory
  2. Create a licensed product in WooCommerce with activation limits and duration
  3. Configure license key settings including expiration and grace periods
  4. Set up the 6-page customer portal for license management
  5. Test the full purchase-to-license flow end-to-end
  6. Add license validation to your plugin using the REST API

The entire setup can be completed in under an hour if you already have a WordPress site with WooCommerce. If you are starting from scratch, budget a few hours for the full WordPress and WooCommerce setup before adding DMSI DDLS.

Ready to start? Download DMSI DDLS from WordPress.org and follow the quick start guide to get your first licensed product live today. For a complete overview of every feature, visit the full feature list.

Leave a Reply