License Management
A license ties a customer to one plugin and (once activated) one domain. This page covers the full lifecycle: generating, activating, expiring, and revoking keys.
Key format
Keys are generated with crypto.randomBytes and look like:
DW-A3F9-KX2M-9PLQ-77TNUppercase alphanumeric, grouped in fours, prefixed DW-. The API normalizes and validates this format before any lookup.
Generating a license
From Licenses → Generate License(or the button on a plugin's detail page), choose the plugin and optionally set:
- Customer name / email — for your records; shown in the table and logs.
- Expiry date — leave empty for a lifetime license, or set a date for a subscription. After that date, verification fails and the status flips to
expired.
A freshly generated key starts as inactive and has no domain — it becomes active and binds to a domain on first activation from a WordPress site.
Statuses
| Status | Meaning |
|---|---|
inactive | Issued but never activated, or manually deactivated. Not bound to a domain. |
active | Activated and bound to a domain. Verification and updates succeed. |
expired | Past its expiry date or revoked. Verification and downloads are refused. |
Domain binding
Each license is single-site. On activation the submitted domain is normalized (protocol, www., path, and port stripped) and stored. If a different domain later tries to activate or verify the same key, it is rejected with a domain-mismatch error.
To move a license to a new domain, use Deactivate (clears the bound domain), then let the new site activate it.
Row actions
- Activate — force a license to
activewithout a site call (rarely needed). - Deactivate — clear the domain and set
inactive, freeing the key for another site. - Revoke — set
expiredand unbind the domain. Takes effect immediately: the next verification or update download fails. - Delete — permanently remove the license and its logs.
Activity & logs
Every activation, verification, deactivation, and download is written to license_logs with the domain, IP address, user agent, and a note. View them per-license on the license detail page, or across all plugins under Logs.