This guide is for developers who license their own Joomla extensions through a Subscription Manager (com_subsmgr) install. It explains what trial keys are and how to add trial support to an extension. If you are an end user of a Multizone extension, you do not need this — trials work out of the box.

{ToC}

What a trial key is

trial key lets any site run your extension at its trial tier without you issuing a per-customer key. Each product has a single, shared key in the form:

TRIAL-{product_slug}-v{version}

for example TRIAL-com_acme-v1. Your extension ships with this key as its default, so a fresh install immediately runs at the trial tier (the limited feature set you define) until the customer enters a paid subscription key.

Trial keys are generic, not per-customer: every trial site for a product uses the same key. Per-site behaviour (expiry horizon, abuse control) is handled separately — see Day-to-day control below.

How trial validation works

  1. The extension reads its configured subscription key. If none is set, it falls back to the product’s shared trial key (TRIAL-{product_slug}-v1).
  2. It POSTs the key, the product slug, the requesting domain and an installation fingerprint to the Subscription Manager REST API (…/api/index.php/v1/subsmgr/validate).
  3. The server resolves the tier (trial vs paid), signs the response, and returns the tier’s feature limits plus a trial expiry horizon.
  4. The extension caches the signed response and gates features at render time against the returned limits.

The reference client is the shared SubscriptionValidationTrait used by the Multizone extensions — it implements the call, signature verification, fingerprint binding, signed caching, and a fail-open-to-trial fallback. Reuse its shape rather than rolling your own.

Adding trial support to your extension

  1. Register the product and its trial features. Add the extension under Extensions, then define its trial-tier limits under Product Features. These values are exactly what a trial site receives. (Without trial features defined, the product will not appear in the New dropdown on the Trial Keys screen.)
  2. Ship the client. Build your extension to validate against the Subscription Manager API using the SubscriptionValidationTrait pattern, defaulting to the shared trial key when no paid key is configured. Gate features at render/emission, never on save() — a live-validation result that resolves lower at save-time would otherwise drop user input.
  3. Mint the key version. On the Trial Keys screen, use New → {product} to create the first trial-key version. The key string is generated for you.

Versioning and revocation

Each New creates the next version (v1v2, …). Revoke marks a version inactive: every trial site still using that version is denied at validation and must update to a build carrying the new version. Because revocation hits every trial site on that version at once, treat it as a blunt, last-resort tool.

For targeted, day-to-day control, prefer the per-site tools rather than version revocation:

  • Trial horizon — trials carry a computed expiry (first_seen + default_trial_days), so the extension can show a countdown and convert-or-degrade prompt.
  • Per-(product, domain) revocation — cut off a single abusing site without affecting anyone else (see the Anomaliesreport).
  • Anomalies report — surfaces over-domain use, gone-dark paid keys, and long-running unconverted trials, with one-click actions.

Security notes

  • The integrity model is GPL-friendly: responses and cache rows are RSA-signed and bound to an installation fingerprint(a hash of the site’s Joomla secret), so a cached response cannot be copied between sites. It is anti-forgery + detection, not DRM.
  • Validation fails open to the trial tier when the API is unreachable — the extension keeps working at trial limits rather than breaking the customer’s site.

See also:
Subscriptions Manager - How to integrate Joomla extensions to add tiered subscriptions

Subscriptions Manager Changelog

Subscriptions Manager

Licences, trademarks, source code licences and attributions

928uk® is a trademark of Multizone Limited, registered in the UK. Multizone and this site is not affiliated with or endorsed by The Joomla! Project™. Any products and services provided through this site are not supported or warrantied by The Joomla! Project or Open Source Matters, Inc. Use of the Joomla!® name, symbol, logo and related trademarks is permitted under a limited licence granted by Open Source Matters, Inc. AdMob™, AdSense™, AdWords™, Android™, Chrome OS™, Chromebook™, Chrome™, DART™, Flutter™, Firebase™, Firestore™, Fuchsia™, Gmail™, Google Maps™, Google Pixel™, Google Play™, Pixelbook Go™, and Pixel™ and other trademarks listed at the Google Brand Resource center are trademarks of Google LLC and this site is not endorsed by or affiliated with Google in any way. Apple and the Apple logo are trademarks of Apple Inc., registered in the U.S. and other countries. App Store is a service mark of Apple Inc. The OSI logo trademark is the trademark of Open Source Initiative. Any other product or company names may be trademarks™ or registered® trademarks of their respective holders. Use of these trademarks in articles here does not apply affiliation or endorsement by any of them.

Where the source code is published here on multizone.co.uk or on our GitHub by Angus Fox, Multizone Limited it is licenced according to the open source practice for the project concerned.

BSD 3-Clause "New" or "Revised" Licence
Original source code for mobile apps are licenced using the same licence as the one used by "The Flutter Authors". This Licence, the BSD 3-Clause "New" or "Revised" Licence (bsd-3-clause) is a permissive licence with a clause that prohibits others from using the name of the project or its contributors to promote derived products without written consent.
GNU General Public Licence v3.0 or later
Original source code for Joomla! published here on multizone.co.uk by Angus Fox, Multizone Limited is licenced using the GNU General Public Licence. This Licence, the GNU General Public Licence Version 3 or later (gpl-3.0+) is the most widely used free software licence and has a strong copyleft requirement. When distributing derived works, the source code of the work must be made available under the same licence.

Please respect the licences and dont use the name of this site or our company to promote derived products without written consent. I mean, why would you? You're not us!

Amazon Associate
As an Amazon Associate we earn from qualifying purchases.
Logo
Our Logo Image is by Freepik. We chose it because its an M and also the letter A twice - and that represents us.
Graphics
Our images representing user experience and interface design are from Freepik here and here and here and here and here.