Documentation

LicensesWP complete playbook

A full guide for WordPress product owners: install the self-hosted license server, activate products, inject the client SDK into themes and plugins, sell with WooCommerce, and operate keys, domains, and signed updates end to end.

Customer journey

From your purchase to buyer activations

Follow the same path your business will run daily - nothing left as tribal knowledge.

  1. 1. Buy & install LicensesWP

    Activate the plugin on your license-host WordPress site. Generate an API key, create Products that match your commercial slugs, and connect WooCommerce if you sell from WordPress.

  2. 2. Ship a licensed theme or plugin

    Embed the Composer client SDK so activation, validation, enforcement, and update checks call your server with your product slug and API key.

  3. 3. Buyers purchase on your store

    On completed order, LicensesWP issues serial keys automatically. Keys appear in email surfaces and WooCommerce My Account -> My Licenses.

  4. 4. Customers activate domains

    Serials bind to allowed domains within your seat limits. Buyers self-manage activations via My Account or the

    Manage your license

    shortcode.

  5. 5. Deliver signed updates

    Only valid, activated licenses receive time-limited signed package URLs. Expired seats and unauthorized copies stay locked out.

  6. 6. Monitor & operate

    Use Dashboard charts, activity logs, fraud velocity, CRM customers, bulk tools, and webhooks to run licensing like a product company.

Server setup

Install and activate the license server

LicensesWP runs on WordPress you host - no rented SaaS between you and your customers.

Upload and activate LicensesWP on the site that will act as your license host. This can be the same WordPress site as your store, or a dedicated licensing host.

Open LicensesWP -> Settings and create an API key. Store it securely; every commercial theme or plugin client will use this key with your server URL.

Create Products that match each commercial theme/plugin slug you will ship. Map WooCommerce products when you sell through WooCommerce.

Configure email templates, activation limits, durations (daily, weekly, monthly, yearly, custom days, or lifetime), and optional webhook endpoints.

  • Activate LicensesWP on the license-host site
  • Generate and store an API key from Settings
  • Create a Product for each commercial slug
  • Set duration, activation limits, and email templates
  • Connect WooCommerce products (optional but recommended)
  • Upload the first update package for each product version

Client SDK

Inject licensing into themes & plugins

Protect every release you sell with the official client - activation UI, enforce gating, and update checks against your host.

Inside the commercial product (plugin or theme), require the official client package with Composer, then boot it early on plugins_loaded (plugins) or after_setup_theme (themes).

Pass your license-host URL, API key, product_slug (must match the Product ID on the server), product_type (plugin or theme), version, and the main file or stylesheet path.

When enforce is enabled, unlicensed sites stay locked until a valid serial is activated on that domain. Update checks only succeed for valid seats.

Optional: set telemetry => true in the client config when the license host enables Collect client telemetry (WP/PHP/plugin versions on activate/validate).

In-plugin Developer Docs under LicensesWP → Settings → Docs expand hooks, REST routes, encryption, variable products, multisite notes, and edge cases for agencies.

  • composer require licenseswp/wplm-client
  • Boot the client early with server_url + api_key + product_slug
  • Match product_slug exactly to the server Product
  • Set product_type to plugin or theme
  • Enable enforce for commercial releases
  • Optional: enable telemetry when the host collects insights
  • Ship a release and verify activation + update check

Bootstrap example

use LicensesWP\Client\Client;

$client = new Client([
  'server_url'   => 'https://your-license-host.com',
  'api_key'      => 'YOUR_API_KEY',
  'product_slug' => 'my-plugin',
  'product_name' => 'My Plugin',
  'product_type' => 'plugin', // or 'theme'
  'version'      => '1.0.0',
  'plugin_file'  => __FILE__, // theme: use get_stylesheet_directory()
  'enforce'      => true,
  'telemetry'    => true, // optional
]);
$client->boot();

WooCommerce

Sell licenses from your WordPress store

Native issuance on completed orders - My Account licenses, renewals, and optional subscription alignment.

Mark commercial WooCommerce products as licensed and connect them to LicensesWP products. Choose duration and how many keys to generate per quantity.

For variable products, set duration and activation limits on each variation so yearly vs lifetime (or different seat counts) match what the customer purchased.

After checkout, keys appear for buyers under My Account -> My Licenses with copy-to-clipboard. Order status changes stay synchronized with license status.

Prefer a dedicated host without WooCommerce? Issue keys from admin or your storefront API, and let buyers use the customer portal shortcode.

  • Enable licensed product flags on WC products
  • Map each WC product to a LicensesWP Product
  • Set variation-level duration/limits when selling tiers
  • Choose duration and keys-per-quantity
  • Place a test order and confirm My Licenses
  • Align renewals with WooCommerce Subscriptions if used

Self-service

Customer portal & domain management

Reduce support tickets - buyers look up keys and manage domains themselves.

Add the portal shortcode to any page. The demo Portal page ships ready out of the box:

Manage your license

Customers enter purchase email + serial to review activations and deactivate domains they no longer use - within the limits you configured.

  • Publish a page with

    Manage your license

  • Link Portal from the footer menu
  • Test lookup with email + serial
  • Verify domain deactivate respects seat limits

Operations

Admin control center

Everything under one LicensesWP menu for daily product operations.

Dashboard

Active/inactive by real activations, expiring-soon windows, charts, and recent activity.

Licenses & Products

Create, extend, deactivate keys; manage catalogs, versions, and update packages.

Orders & Subscriptions

Bridge store orders to licenses; run flexible durations and renewals.

Customers / CRM

Ownership views and relationship tools for renewals and support.

Activity & fraud

Audit trail plus activation-velocity monitoring for suspicious patterns.

Bulk & automation

Bulk create/update, auto-licenser mappings, and auto-deactivation on status changes.

API & webhooks

Integrate beyond WordPress

Stable REST endpoints and HMAC-signed webhooks for your wider stack.

REST actions cover activate, validate, deactivate, and update-check - documented inside the plugin Developer Docs.

Webhooks notify your CRM, Slack, or automation tools on lifecycle events with HMAC signatures so payloads stay trustworthy.

Multisite installs can track blog_id and use network-aware settings for agencies managing complex WordPress networks.

  • Review REST routes in Developer Docs
  • Configure webhook URL + HMAC secret
  • Test activate -> validate -> update-check
  • Enable multisite awareness when needed

FAQ

Common questions

Do I need WooCommerce?

No. WooCommerce unlocks automatic issuance and My Account licenses, but you can issue keys manually and use the portal shortcode without WooCommerce.

Where do updates come from?

Your license server delivers signed, expiring download URLs only to valid activated domains - packages stay under your control.

How do I license a theme vs a plugin?

Use the same client SDK. Set product_type to theme or plugin, and point plugin_file / theme path accordingly. Create matching Products on the host for each slug.

Can agencies use this?

Yes. Flexible product counts by plan, multisite awareness, white-label options, and CRM tools support studios and multi-brand setups.

Is my data portable?

Licenses live on your WordPress database and infrastructure - you are not locked into a third-party licensing SaaS.

What happens when a license expires?

Expired seats stop receiving signed updates and fail enforce checks when enforcement is enabled. Renewals re-open access automatically when configured with your store.

Next step

Ready to put it into practice?

Open the portal to test buyer flows, review Features for the full capability map, or pick a plan and launch your license server.