Licenses
A License is a software license tied to a PLG (Plugin) entitlement. It tracks which sites are authorized to use the software, manages activation and deactivation per domain, controls download access, and handles renewal. If the parent entitlement is suspended or cancelled, the license follows.
How licenses are created
Licenses are created automatically when a PLG entitlement is provisioned. When a customer purchases a plugin product and payment is confirmed, the system:
- Creates a PLG entitlement with a unique code (e.g.,
PLG-2026050042). - Generates a license key for the entitlement.
- Enables download access for the associated plugin files.
No manual steps are needed. The customer sees their license key and download link in the portal immediately after purchase.
License key
Every license has a unique key generated at creation. The key is:
- Unique -- no two licenses share the same key
- Persistent -- the key does not change on renewal or reactivation
- Partially masked in list views -- the full key is visible only in the license detail page
Customers reference this key when activating the plugin on their sites.
Site activation
Licenses work on a per-domain basis. A customer activates their license on a specific domain (e.g., lms.company.com), and the system records that activation. Each license has a maximum number of allowed activations, configured per product.
| Action | What happens |
|---|---|
| Activate | Customer registers a domain against the license. One activation slot is consumed. |
| Deactivate | Customer removes a domain. The activation slot is freed for reuse. |
Both operations are instant. The customer manages activations through the portal or through the plugin's built-in license check (API call from the activated site).
Activation limits
| License type | Limit behavior |
|---|---|
| Standard | Fixed number of activations (e.g., 5 sites). Configurable per product. |
| Agency | Unlimited activations. No domain restriction. |
| Bundle | Multiple plugins under one license. Activation is tracked per plugin. |
When the activation limit is reached, the customer must deactivate an existing domain before activating a new one, or upgrade to a higher tier.
Domain validation
The system validates the domain format (valid TLD, no protocol prefix, no path). Duplicate activations on the same domain are rejected. If a domain is already activated on a different license, the system flags the conflict.
License states
| Status | What it means |
|---|---|
| Active | License is valid. Activations and downloads are enabled. |
| Expired | Expiration date has passed. New activations are blocked. Deactivation is still allowed. Downloads are blocked. |
| Revoked | Permanently disabled by admin. All access removed. |
License status follows the parent entitlement: when the PLG entitlement is suspended, the license becomes inactive; when reactivated, the license comes back.
Download access
Customers with an active license can download the associated plugin files. Downloads are distributed through Cloudflare (Workers + R2) for performance and global availability:
- Customer requests a download in the portal.
- The system validates: license is active, product matches, domain is authorized.
- A signed URL is generated with a short expiration (5 minutes).
- The customer is redirected to the R2 download.
Download access is blocked when the license is expired or revoked.
Renewal
Licenses renew along with their parent entitlement. Two renewal paths exist:
| Path | How it works |
|---|---|
| Automatic | If the product is sold as a WooCommerce Subscription, renewal is handled automatically. The subscription renews, the entitlement stays active, and the license continues working. |
| Manual | If no subscription exists, the system sends renewal reminders (30, 15, and 7 days before expiration, configurable via the Notification Policy) with a link to renew. |
When auto-renewal is active, reminder emails are informational. When renewal is manual, the emails include a direct renewal link.
What admins see
In the WordPress admin, the license list shows:
- License key (partially masked)
- Product name
- Organization
- Entitlement code (PLG-xxx)
- Status (active, expired, revoked)
- Activated domains vs. maximum allowed
- Expiration date
Clicking a license opens its detail view with the full key, activation history, and download log.
Related pages
- Entitlements -- the parent record that owns the license
- Entitlement Classes -- PLG class details
- Documents -- downloadable files linked to licenses
- Policies -- renewal and notification policies that govern license behavior