Skip to content

Database Schema

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.

TablePurpose
wplm_licensesThe licenses. Encrypted key, SHA-256 hash, signature, status, seats, expiry, overage.
wplm_license_metaArbitrary key/value metadata per license.
wplm_generatorsKey-format templates (charset, chunks, separator, prefix/suffix, defaults).
wplm_api_keysREST API consumer keys (hashed) with read/write scope.
TablePurpose
wplm_machinesDevices bound to a license (fingerprint, IP, platform, lease, heartbeat).
wplm_machine_componentsComponent sub-fingerprints (CPU/disk/…) under a machine.
wplm_activation_logEvery validate/activate/deactivate/heartbeat/revoke/deny event.
wplm_blacklistGlobal deny lists (fingerprint / ip / email).
TablePurpose
wplm_releasesSoftware versions (version, channel, changelog, file, hash).
wplm_webhooksWebhook endpoints (target, events, secret, format, status).
wplm_webhook_logDelivery attempts (event, response code, attempts, delivered-at).
TablePurpose
wplm_plansReusable plans (name, description, status).
wplm_packagesLicense types (purchasable tiers) inside a plan — type, price, billing, generator, seats, benefits.
wplm_subscriptionsRecurring subscriptions (status, schedule, totals, token, dates).
wplm_subscription_itemsLine items captured for a subscription.
wplm_subscription_renewalsRenewal / switch / resubscribe history.
wplm_subscription_notesSystem/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.