The Unlockable Packages plugin allows you to set conditions under which certain packages become available to clients, such as after a previous purchase or account age.
From £11.99 - View Pricing
What Unlockable Packages gives you
Runs on Blesta's cron with no manual upkeep, so everything stays up to date on its own.
Configure it independently for each brand on a multi-company install, so every company runs with its own settings.
Every rule carries a name and an on and off switch, so a promotion can be built in advance and switched on the day it starts.
A qualifying service counts when it is Active by default, and you can widen a rule to also accept Suspended or Pending services.
Every staff and client label ships in editable language files, ready to translate into any language or reword to match your brand.
Decide per rule whether owning any one of the main packages is enough, or the client has to hold all of them before anything unlocks.
Find a rule by name, enabled state, match mode, markup type or markup amount, with the main and unlocked packages listed on every row.
One button recomputes access and pricing for every client immediately, so a rule you just changed takes effect without waiting for anything.
Each staff action it adds is a separate permission you grant per staff group, so each team gets exactly the access it needs and nothing more.
When the qualifying service is canceled, suspended or otherwise stops counting, the packages it unlocked go back behind the gate without anyone touching them.
Pick the main packages a client must own and the restricted packages those should open up, and the hidden packages appear in that client's order form as soon as they qualify.
Optionally add a percentage or fixed-amount markup to the renewal price of an unlocked service once the client no longer holds the package that earned it, so loyalty pricing ends with the loyalty.
Access is written into Blesta's own restricted-package list, so a client who has not qualified is refused the package even if they try to order it directly from a package group. Addon groups and carts built before a rule changed are outside that check, so treat those as a soft gate.

Keep your best packages hidden until a client has earned them, then unlock them automatically the moment they qualify.
Some of your best packages should not be available to just anyone - a premium tier, a loyalty perk, an upgrade you only want to offer to clients who already hold a qualifying service. Blesta already lets you restrict a package so nobody can order it directly, but by itself that restriction never lifts for anybody. Unlockable Packages watches your clients' services and automatically opens up those restricted packages the moment a client owns the right one, then locks them straight back up if that qualifying service is canceled or stops counting. You define the rules once; the plugin keeps every client's access in sync from then on, with no manual grants and no manual revokes.
Enhance your package management with Unlockable Packages by Blesta.Club.
Installing and updating extensions can now be done automatically through the Blesta Club Subscription Manager - this is the recommended way going forward.

Upload the extension folder into your Blesta installation so it lands under your Blesta directory at:
plugins/unlockable_packages/
For example, on a typical install: /var/www/html/blesta/plugins/unlockable_packages/
There are no credentials to enter - Unlockable Packages works entirely with your existing packages and services.
You're ready to go - see the usage guide for a walkthrough of day-to-day use.
Installing and updating extensions can now be done automatically through the Blesta Club Subscription Manager - this is the recommended way going forward.

Upgrading works just like installing: upload the new files over the old ones, then run the upgrade from the same page you installed it on.

Open Tools in the admin sidebar and click Unlockable Packages to see every rule you've created, with its Enabled state, Name, Master Packages, Unlockable Packages, Match Mode and Markup Type/Amount all listed on the row. Click a column heading to sort by it, and use the funnel button above the list to filter by name, enabled state, match mode, markup type or markup amount. Click the pencil button on a row to change that rule, or the trash button to delete it after confirming. A rule whose unlock packages are no longer set to Restricted carries a red warning under its Unlockable Packages, because it no longer gates them.
Click the + button (or the pencil button on an existing rule) to open the rule form. It has three sections - Rule, Packages and Markup - and the blue info icons next to the Match Mode, Qualifying Service Statuses and Markup fields explain each option when you hover them:
Click Submit to save, or Cancel to go back to the list without saving. Saving a rule does not recompute anyone's access by itself: a new or changed rule reaches a client the next time one of their services is added, changed, suspended, unsuspended or canceled, at the daily reconcile run, or straight away for everyone when you click Sync All Clients.
Click Sync All Clients above the list to recompute restricted-package access and pricing for every client right away, rather than waiting for a client's next service change or the nightly cron. Confirm the prompt, and a message reports how many clients were recomputed. Use it after adding or changing a rule when you want the change to apply at once.
v3.0.0 - 2026-10-11
PHP 8.2 - 8.4 · Blesta 6.x
Requires Blesta 6.0 or later; Blesta 5.x installs stay on v2.x
The Unlockable Packages list and the add and edit rule forms have been redesigned for the Blesta 6 admin interface, including dark mode
The rule form is now split into Rule, Packages and Markup sections
v2.0.0 - 2026-09-11
PHP 7.2 - 7.4, 8.1 - 8.4 · Blesta 5.x
Added a "Sync All Clients" button and a daily reconcile cron so rule changes reach clients who have not touched a service
Added a per-rule Match Mode: unlock when a client owns any one master package, or only when they own every master package
Added per-rule Qualifying Service Statuses so a suspended or pending master service can still count as owning the master
Fixed the rules list accepting a tampered filter that could show records belonging to another company
Fixed the Delete and Sync All Clients links falling through to a plain GET if the confirmation script fails to load
Added a staff permission for the Sync All Clients action (grant it under Settings > Staff > Groups)
v1.0.0 - 2024-09-22
PHP 7.2 - 7.3, 8.1 - 8.4 · Blesta 5.x
Blesta Club release
Get exactly what you need and want.
Requires PHP 8.2 - 8.4 · Blesta 6.x
Value: £65.55
Not sure whether to lease or own? Our FAQ explains how the licence types differ.
What our customers say
(0 customer reviews)
It is possible to leave a review only if you have purchased this extension or a Club tier which contains it.
We reserve the right to alter wording or formatting for presentation.
We will discuss any changes made and offer the option to withdraw review text if the changes can't be agreed on.
It may take up to 1 hour for a review to appear or update due to caching.
More extensions to explore
Plugin
Integrate the Announcements plugin to provide updates and news to your clients.
PHP 8.2 - 8.4 · Blesta 6.x
Plugin
Give your clients rewards based upon service purchases.
PHP 8.2 - 8.4 · Blesta 6.x