How to License and Update WordPress Themes (Free Guide 2026)
You built a WordPress theme people are paying for. The moment the first sale lands, two problems show up that a plain download link was never built to solve. Someone can pass your zip file around a forum for free. And when you fix a security hole in version 2.3, you have no reliable way to get it in front of the buyer still running 2.1.
Both problems have the same shape: you need to know who bought your theme, on which sites it runs, and you need a channel back to those sites. This guide to WordPress theme licensing shows how to build exactly that on your own WordPress store, using two DMSI products, without a marketplace in the middle and without a development team behind you.
The two jobs: licensing and updates
WordPress theme licensing is really two jobs, and it helps to separate them, because they are solved by two different pieces.
Licensing answers one question: is this installation allowed to use what it paid for? That means issuing a unique key with every sale, limiting how many sites one key can be activated on, and checking the key when the theme asks.
Updates answer a different question: is there a newer version, and may this site have it? That means storing your releases, telling licensed sites when a new one exists, and handing them the new zip through WordPress’s normal update screen.
A license key on its own does not deliver a single update, and an update channel with no licensing gives your work away. You want both, and you want them to talk to each other.
What DDLS is
DMSI DDLS (Digital Downloads, Licensing & Subscriptions) is a free WordPress plugin, published on WordPress.org, that turns a WooCommerce store into a store for software licenses and digital downloads. It runs on top of WooCommerce, so your products, checkout, payments and taxes stay exactly where they already are. What DDLS adds is the part WooCommerce has no opinion about:
- A license key on every sale. When an order completes, DDLS issues a key for the product that was bought.
- Activation limits. Each license has a limit on how many sites it can be activated on. You choose the number per product: one site for a single-site license, more for an agency license.
- Validation. Your theme can ask your store whether a key is valid for the site it is running on, and your store answers.
- Signed download links instead of a zip file anyone can share.
- Renewals tied to license state. If you sell yearly licenses, a renewal extends the license and a cancellation revokes access.
You can see how the key check works in more detail in how DDLS handles license validation.
Yes, you license a theme the same way you license a plugin
This is the question most theme authors ask first about WordPress theme licensing, so here is the direct answer: DDLS does not care whether the file you sell is a plugin or a theme. The same key generation, the same per-site activation limits and the same validation checks apply. You license a theme exactly as you license a plugin.
In practice that means there is no separate “theme mode” to learn. You create your theme as an ordinary licensed product in your store, attach the zip, set the activation limit, and sell it.
Where the DMSI Update Server fits
DDLS handles the license. Delivering new versions is the job of a separate add-on for DDLS: the DMSI Update Server. It runs on the same store, keeps your releases, and answers one question from each licensed site: “is there a newer version for me?”
The Update Server also comes with a small PHP SDK, a handful of files you place inside your theme. The SDK does three things for you:
- Adds a license page to your theme, where your buyer pastes their key and activates it against your store.
- Keeps the license honest in the background with a daily validation check and clear notices in the WordPress dashboard when something needs the buyer’s attention.
- Hooks into WordPress’s own theme updates, so your new releases appear in Appearance > Themes exactly like updates from WordPress.org. There is no separate portal your customers have to remember to visit.
WordPress theme licensing, step by step
- Install WooCommerce and DDLS on your store. DDLS is free on WordPress.org and needs WooCommerce to be active.
- Create your theme as a licensed product. Add it as a product in your store, upload the theme zip as its download, and set the activation limit: how many sites one key may run on.
- Add the DMSI Update Server to the same store and publish your current version as the first release.
- Copy the SDK into your theme, for example into a folder called
dmsi-sdkinside the theme directory. - Connect it in
functions.phpwith a few lines of code (below): point it at your store and your product, and switch on the license page and the updater. - Test the full journey once yourself: buy your own theme, activate the key on a test site, publish a new version, and watch the update appear.
The code for step 5 looks like this. It is a shortened version of the theme example that ships with the SDK:
require_once get_template_directory() . '/dmsi-sdk/class-dmsi-update-client.php';
require_once get_template_directory() . '/dmsi-sdk/wordpress/class-dmsi-wp-license.php';
require_once get_template_directory() . '/dmsi-sdk/wordpress/class-dmsi-wp-theme-updater.php';
add_action( 'after_setup_theme', function () {
$theme = wp_get_theme();
$client = new DMSI_Update_Client( array(
'api_url' => 'https://your-store.com', // the store running DDLS
'product_id' => 456, // your theme's product
) );
// The license page and the daily background check
$license = new DMSI_WP_License( array(
'client' => $client,
'slug' => 'my-theme',
'name' => $theme->get( 'Name' ),
'option_prefix' => 'my_theme_license_',
) );
$license->init();
// Updates through Appearance > Themes
$updater = new DMSI_WP_Theme_Updater( array(
'client' => $client,
'theme_slug' => get_template(),
'version' => $theme->get( 'Version' ),
'license_key' => $license->get_license_key(),
) );
$updater->init();
} );The full example in the SDK also shows how to add the license page under the Appearance menu and how to tidy up when the buyer switches to another theme.
If you can already package and sell a theme, you can do this. None of it assumes a support team standing behind you.
What your buyer experiences
This is the part that matters most, because it is what your customer actually sees:
- They buy your theme in your store, and their license key arrives in the order email.
- They download the theme through a signed link and install it like any other theme.
- They open the theme’s license page, paste the key and click activate. Your store checks the key and the activation limit, and records the site.
- From then on, the theme checks its license quietly once a day. If the license expires, the buyer sees a notice in the dashboard, with a short grace period (seven days by default) before the license counts as expired.
- When you publish a new version, WordPress’s own update check picks it up. It shows in Appearance > Themes with the usual “update available” message, and the buyer updates with one click.
Two details are worth knowing. The theme only asks your store for updates once a license key has been entered, so a copy passed around without a key never even asks. And the answer is cached for twelve hours, so each site checks your store only about twice a day.
Gating premium features
Some authors also want certain features to work only with an active license: a demo importer, premium templates, priority support links. The SDK makes this a one-line check. The license object can tell your theme whether the license is valid, meaning active or still within its grace period, and your theme decides what to switch on. It is the same pattern you would use in a plugin, and it is your decision how strict to be.
Common questions
Do I need a special “theme” product type?
No. A theme is sold and licensed exactly like a plugin: as a licensed product with a download attached.
Does DDLS on its own deliver theme updates?
No. DDLS issues and checks license keys. Delivering new versions is the job of the DMSI Update Server, the add-on described above. The two are built to work together on the same store.
Do I have to change how my theme is built?
No. You add the SDK folder and a few lines in functions.php. Your templates, styles and features stay as they are.
Is DDLS free?
Yes. DDLS itself is free on WordPress.org. If you are comparing it with paid license managers, see our overview of license management options for WordPress.
Why this is worth doing
Good WordPress theme licensing pays for itself. Every unlicensed copy of your theme on a forum is a sale that did not happen, and quite possibly a support request that still lands in your inbox. A real license key means you know exactly who bought what and on how many sites. A real update channel means that on the day you fix something, every licensed site sees the fix in its own dashboard, instead of you hoping buyers notice a changelog.
You keep your own store, your own customers and your own margin, and the tools do the checking.

