Platforms & Infrastructure

Your Software. Your Licenses. Your Server.

PM License Server is complete, self-hosted licensing infrastructure for software vendors: issue and validate license keys, deliver one-click updates, push signed feature entitlements, sell through a built-in storefront with EU-VAT invoicing, and manage every customer from one admin panel.

01

Revenue Protection

Server-side access control gates every download; expired customers see a renewal nudge instead of free updates, and segmented expiry campaigns bring them back

02

Independence & Data Sovereignty

Fully self-hosted on your infrastructure — customer data, license records, and revenue flows stay in your hands, with no per-sale platform fees or vendor lock-in

03

One Build, Many Editions

Signed feature entitlements switch plans, limits, and modules per license — no separate builds, no code forks, instant per-customer overrides

04

Automation-Ready

REST API for minting, verifying, extending, and revoking licenses plus CI release publishing — licensing becomes part of your pipeline, not a manual chore

What it's about

PM License Server

If your company sells software outside the big marketplaces — commercial WordPress plugins, themes, or privately distributed applications — you face the same infrastructure problem every vendor faces: customers need license keys, automatic updates, feature entitlements, invoices, and support. Stitching that together from SaaS subscriptions means recurring fees, vendor lock-in, and your customer data on someone else's servers.

PM License Server solves it in one self-hosted product. It runs on standard PHP hosting — no WordPress installation required on the server side, no runtime Node, no external database service needed. It speaks the native WordPress update protocol, so your customers get the familiar one-click update experience they know from the official directory, gated by the licenses you control.

Licensing, update delivery, entitlement configuration, CRM, client portal, storefront, invoicing, and segmented email — one system, on your infrastructure, under your control. Built by premotion media.

Features

Thought through to the daily workflow.

Every building block is focused on a clear benefit and fits into existing processes.

01
Feature Section

Issue license keys scoped per product with the model that fits each customer: trial, free, paid, or complimentary. Every license carries its own expiry, activation limit, and configuration overrides. Trials can run for a per-product default length or a custom duration, and can be issued automatically on public signup.

01

License Management — Four License Models, Full Lifecycle

Issue license keys scoped per product with the model that fits each customer: trial, free, paid, or complimentary. Every license carries its own expiry, activation limit, and configuration overrides. Trials can run for a per-product default length or a custom duration, and can be issued automatically on public signup. Expiry is handled end to end. A nightly job flips overdue licenses to expired, and access control also checks live on every request — so a lapsed license never slips through. Admins and the API can extend licenses, convert trials to paid, or revoke keys at any time.

  • Four license types: trial, free, paid, and comp — each app-scoped and client-linked
  • Configurable duration or explicit expiry date; perpetual licenses supported
  • Optional activation caps per license, tracked by domain and IP with first-seen and last-seen timestamps
  • Extend, convert (trial to paid), and revoke — from the admin panel or the API
  • Cryptographically strong, opaque license keys (128-bit minimum, URL-safe)
  • Filter every list by product, client, type, and expiry status with visible days remaining
02

Automatic Update Delivery — Native One-Click Updates

PM License Server implements the update protocol used by the widely adopted plugin-update-checker library. Your plugin or theme polls the server; when a newer release exists and the site is licensed, WordPress shows its native update notice and installs with one click — exactly like a marketplace product. Lapsed customers are handled commercially, not brutally: they still see the update notice with full release details, but the download stays locked — a built-in renewal nudge instead of a dead endpoint. Release packages are stored outside the web root and streamed only after an access grant, so download URLs are useless to anyone the policy does not approve.

  • Compatible with the standard WordPress update-checker client — native update UX for your customers
  • Serves release metadata, changelogs, requirements, icons, and banners parsed from each release's readme file
  • Beta/stable release channels: new uploads start as beta, visible only to designated beta testers, until an admin promotes them to stable
  • Package zips stored outside the web root, streamed only on access grant
  • Expired licenses see the update notice but cannot download — a permanent renewal reminder
  • Every metadata request and download is logged with its grant reason
03

License API — Automate Everything

A REST API lets your checkout, website, or internal tools mint, verify, extend, configure, and revoke licenses programmatically. Authentication uses hashed, scope-limited API keys — separate scopes for reading licenses, writing licenses, writing configuration, and publishing releases — so each integration gets exactly the permissions it needs. Your build pipeline can publish releases directly: push a package zip to the release endpoint and the server parses the readme, stores the package, and records the new version automatically.

  • Create licenses via API: find-or-create the customer by email, mint the key, set type, duration, and activation cap in one call
  • Check any key: validity, product, type, status, expiry, days remaining, activations, and resolved feature entitlements
  • Extend, upgrade, configure, and revoke licenses programmatically
  • CI release ingestion: push a zip from your build pipeline, get a published release
  • Scoped bearer API keys, stored hashed, shown once, revocable, with last-used tracking
  • Rate limiting on all public and API endpoints
04

Signed Entitlements — Remote Feature Configuration

Define a feature catalog per product — booleans, numbers, strings, lists, or JSON — and resolve values in layers: product defaults, per-license-type overrides (what each plan includes), and per-license overrides (what this specific customer gets). One customer needs a raised limit or an extra module? Override it on their license without touching code. The resolved configuration is delivered to the installed software on authentication, signed with a per-product HMAC secret so the client can verify authenticity and cache the payload safely. Ship one build to everyone; the license decides what it does.

  • Per-product feature catalog with typed values: bool, int, string, JSON, and list
  • Three-layer resolution: product default → license-type override → per-license override
  • HMAC-signed payloads with a config version hash and cache TTL for safe client-side caching
  • Entitlements embedded in the standard license check — one call authenticates and configures
  • Change a customer's features from the admin panel; the change reaches their installation on the next check
05

Whitelist Access — Beyond License Keys

Not every deployment fits a license key. Whitelist entries grant access by IP address or domain, per product or globally, each with a required description and an enable/disable toggle. Ideal for your own infrastructure, staging environments, development machines, and partner sites.

  • IP and domain whitelist entries, per-product or global
  • Required description on every entry — you always know why access exists
  • Inline enable/disable without deleting the entry
  • Whitelist entries can be flagged as beta testers to receive pre-release versions
  • Clear security model: license keys and IP entries are hard gates; domain entries are a documented convenience gate
06

Client CRM & Segmented Messaging

Every signup, order, and API-minted license lands in a built-in CRM: company, contact, email, phone, address, notes, and every license the client holds across all your products. Customer groups control which parts of your storefront each segment can see. Non-sequential public reference codes identify clients in emails and the portal without exposing internal IDs. Email the right customers at the right time: one client, a hand-picked selection, a customer group, or a filtered segment — by product, license type, status, or expiry window. Messages send through the Resend batch API with throttling and backoff, and signed webhooks track delivery, bounces, and complaints per recipient.

  • Lightweight CRM: one client record, many licenses across products
  • Customer groups gate storefront visibility per segment — hidden products stay hidden, even on direct access
  • Segmented campaigns: by product, license type, status, or expiry window — ideal for renewal reminders
  • Markdown composition with merge variables: name, product, expiry date, days remaining
  • Per-recipient delivery, bounce, and complaint tracking via verified webhooks
  • Automatic unsubscribe handling and hard-bounce flagging
07

Client Portal — Self-Service for Your Customers

Your customers get their own login: a dashboard of their licenses and expiry dates, a support ticket system with image and PDF attachments, a searchable knowledgebase with an optional AI assistant, and digital contract signing for your agreements. Contracts are versioned and bilingual; signatures bind to the exact version signed, giving you a clean audit trail. The knowledgebase assistant answers customer questions from your own documentation, with strict daily cost caps — you bring your own OpenRouter API key and choose the model.

  • Secure client login with password reset and forced password change
  • License dashboard: every key, product, type, and expiry in one place
  • Support threads between customers and your team, with attachments
  • Knowledgebase with optional AI chat grounded in your own documents, with per-client and global daily limits
  • Versioned, bilingual contract signing with a full signature audit trail
08

Built-In Storefront & EU-VAT Billing

Sell directly from the server. A public storefront presents your products in categories — WordPress plugins, applications, and managed servers — with Markdown product pages, version facts, and order or trial calls to action. Connect Stripe and customers pay online; without Stripe, every product falls back to a structured purchase-request flow your team completes manually, which mints the license and emails it in the customer's language. Billing is EU-grade out of the box: the VAT engine applies domestic rates, B2B reverse charge with VAT-ID validation, per-country consumer rates for EU sales, and zero-rating for exports. Invoices and credit notes are numbered sequentially and gaplessly per year, with refund support and a seller-identity snapshot on every document.

  • Public storefront with category pages, Markdown product descriptions, and drag-and-drop catalog ordering
  • Optional Stripe checkout with verified webhooks; purchase-request flow works without any payment provider
  • EU VAT engine: domestic, reverse charge (validated VAT IDs), EU consumer rates, and export treatment
  • Sequential, gapless invoice and credit-note numbering per year, plus refunds
  • Managed-server products with plans, subscriptions, and per-server service records
  • Optional private mode: restrict the entire store to logged-in customers
  • Per-product public signup with optional automatic trial issuance
09

One-Screen Installer for Licensed Sites

A catalog API tells each customer site exactly which of your products it may install, at which version, with which access. The companion WordPress client (pm-plugin-manager) turns that into a one-screen installer: whitelisted products install immediately, licensed products prompt once for a key, and everything can be installed or updated individually or all at once. After installation, each plugin's own license option is seeded automatically, so its updater works with no re-entry.

  • Per-site catalog endpoint listing every product with its access status and offered version
  • One-click install and update of all licensed products from a single screen
  • Automatic license-key seeding into each installed plugin
  • Browsing the catalog never consumes an activation slot — only real downloads do
  • Package URLs are resolved server-side, never trusted from the browser
How it works

A clear path to the result.

  1. 01

    Step 1 — Deploy on Your Infrastructure

    Install on standard PHP hosting: run the migrations, create your admin account, and open the admin panel. SQLite works out of the box; MySQL/MariaDB is a configuration change. No WordPress, no runtime Node, no external services required to start.

  2. 02

    Step 2 — Add Your Products and Releases

    Create each product with its slug, type, descriptions, and pricing. Upload release zips through the admin — the server parses the readme for version, requirements, and changelog — or push releases straight from your CI pipeline via the API.

  3. 03

    Step 3 — Issue Licenses

    Mint licenses from the admin panel, let customers self-register through per-product signup pages with optional automatic trials, let them buy through the built-in storefront, or connect your own checkout to the license API.

  4. 04

    Step 4 — Integrate Your Software

    Point your plugin, theme, or app at the update endpoint using the standard update-checker pattern, and fetch the signed configuration payload to switch features by plan. Your customers see native one-click updates; your code sees verified entitlements.

  5. 05

    Step 5 — Operate and Grow

    Track customers and expiring licenses on the dashboard, send segmented renewal campaigns, answer support tickets, publish knowledgebase articles, and let the access log show you exactly who is using what.

Who is it for?

Made for concrete requirements.

The solution is a particularly good fit for these teams, roles and business models.

WordPress Plugin and Theme Vendors

Sell commercial plugins and themes outside the official directory with the same one-click update experience customers expect — gated by licenses you control, with renewal nudges built into the update flow.

Software Companies and ISVs

Run licensing as infrastructure, not as a monthly SaaS bill. Issue keys, verify them from any product via the REST API, and push feature entitlements per plan and per customer — one build, many editions.

Agencies Distributing In-House Tools

Deliver your internal plugin suite to every client site through the one-screen installer, keep staging and partner environments running via whitelists, and see exactly which site runs which version.

Digital Product Businesses in the EU

Sell with correct VAT from day one: reverse charge for B2B customers with validated VAT IDs, per-country consumer rates, export handling, and sequential invoices and credit notes that satisfy your accountant.

Vendors With Managed Services

Combine software licensing with managed-server offerings in one storefront — plans, subscriptions, per-server service records, and credentials management alongside your product catalog.

Tech & scope

The key details at a glance.

Product Type
Self-hosted web application (server-side)
Runtime
PHP 8.5
Framework
Slim 4, PSR-7/PSR-15 architecture
Database
SQLite (zero-config default) or MySQL/MariaDB
Frontend
Server-rendered (Twig, HTMX, Alpine, Tailwind) — no SPA, no runtime Node
Update Protocol
Compatible with the standard WordPress plugin-update-checker client
Email
Resend integration with batch sending and verified delivery webhooks
Payments
Optional Stripe checkout; purchase-request flow without any provider
VAT Handling
EU place-of-supply rules: domestic, reverse charge, EU consumer rates, export
AI Assistant
Optional, via your own OpenRouter API key with configurable model and cost caps
Languages
English and German — admin, portal, storefront, and emails
Backup
Built-in database backup and restore from the admin panel
Quality
Static analysis at the strictest level; automated test suite against SQLite and MariaDB
License
Proprietary
Author
premotion media
Availability
On request from premotion media
FAQ

Frequently asked questions.

What kinds of software can I license with PM License Server?

Any privately distributed WordPress plugin, theme, or application. Update delivery uses the native WordPress update protocol, while the license and configuration APIs are plain REST — so non-WordPress software can validate keys and fetch entitlements too.

Do I need WordPress to run the server?

No. PM License Server is a standalone PHP application. It never loads WordPress — it only speaks the update protocol that WordPress clients understand. It runs on standard PHP hosting with SQLite out of the box, or MySQL/MariaDB if you prefer.

What happens when a customer's license expires?

Access control denies the download but keeps serving full update metadata. The customer still sees the native update notice with release details — a permanent, polite renewal reminder instead of a broken endpoint. A nightly job expires overdue licenses, and every request is also checked live.

Can I sell licenses online?

Yes. The built-in storefront lists your products with Markdown descriptions and pricing. Connect Stripe for online payment with webhook-verified fulfillment, or run without any payment provider using the purchase-request flow: your team completes the order, and the server mints the license and emails it in the customer's language, with an EU-compliant invoice.

How do feature entitlements work?

You define a typed feature catalog per product, set what each license type includes, and override individual licenses where needed. The resolved configuration is delivered on license authentication as an HMAC-signed payload your software can verify and cache — so one shipped build behaves according to the plan the customer bought.

How are activation limits enforced?

Each license can carry a maximum number of activations, tracked by domain and IP. New activations beyond the cap are refused, while sites already activated always keep working — a capped license never locks out its own installations.

Can my build pipeline publish releases automatically?

Yes. A scoped API endpoint accepts a package zip from CI, parses its readme, stores the package, and records the release. New releases start on the beta channel for designated beta testers and go stable when you promote them.

What does PM License Server cost?

Licensing and deployment options are available on request from premotion media. Because the product is self-hosted, there are no per-customer or per-activation platform fees on your sales.

Ready?

Licensing Infrastructure You Own — Not Another Subscription You Rent

PM License Server gives your company the complete machinery of a commercial software business: license keys with trials and expiry, native one-click updates, signed feature entitlements, a customer CRM with segmented email, a self-service client portal, and a storefront with EU-VAT invoicing — all self-hosted, all under your control. Deploy it once, connect your products, and run your licensing the way infrastructure should run: on your terms.

Discuss your project