All tables are prefixed {$wpdb->prefix}wplm_ (e.g. wp_wplm_licenses), use the
InnoDB engine and utf8mb4, and are created via dbDelta() on activation. The
schema version is stored in the wplm_db_version option; an upgrade runs
automatically when the plugin’s DB version changes.
| Table | Purpose |
|---|
wplm_licenses | The licenses. Encrypted key, SHA-256 hash, signature, status, seats, expiry, overage. |
wplm_license_meta | Arbitrary key/value metadata per license. |
wplm_generators | Key-format templates (charset, chunks, separator, prefix/suffix, defaults). |
wplm_api_keys | REST API consumer keys (hashed) with read/write scope. |
| Table | Purpose |
|---|
wplm_machines | Devices bound to a license (fingerprint, IP, platform, lease, heartbeat). |
wplm_machine_components | Component sub-fingerprints (CPU/disk/…) under a machine. |
wplm_activation_log | Every validate/activate/deactivate/heartbeat/revoke/deny event. |
wplm_blacklist | Global deny lists (fingerprint / ip / email). |
| Table | Purpose |
|---|
wplm_releases | Software versions (version, channel, changelog, file, hash). |
wplm_webhooks | Webhook endpoints (target, events, secret, format, status). |
wplm_webhook_log | Delivery attempts (event, response code, attempts, delivered-at). |
| Table | Purpose |
|---|
wplm_plans | Reusable plans (name, description, status). |
wplm_packages | License types (purchasable tiers) inside a plan — type, price, billing, generator, seats, benefits. |
wplm_subscriptions | Recurring subscriptions (status, schedule, totals, token, dates). |
wplm_subscription_items | Line items captured for a subscription. |
wplm_subscription_renewals | Renewal / switch / resubscribe history. |
wplm_subscription_notes | System/admin notes per subscription. |
Foreign keys are enforced in application logic (not as DB constraints). On
uninstall, all tables and options are removed unless the
wplm_keep_data_on_uninstall option is set.