Web apps
You sell software people install on their own server, not yours.
A self-hosted app or a script somebody drops on their own box is not a SaaS you can just cut off at your database, because there is no request that passes through your database. Once it is installed, it runs on hardware you do not control.
The part nobody warns you about
You ship the zip file once and lose the ability to know who is even running it. No usage numbers, no way to tell a real customer from a copy passed along in a group chat, and no way to stop either.
What Bloom does about it
A check your app makes to itself
On boot, or on a schedule you choose, the app calls the validation endpoint with its license key. A refusal comes back with a reason your app can log or act on.
Locked to where it is installed
Send a machine or domain identifier with the check and the license binds to the first one that used it. The same key on a second install is refused.
Revoke without touching their server
Block a license from the panel and the next check on their installation fails. You never need SSH access to their box to take it back.
A record of who is actually running it
Every check is logged: which license, when, and why. That is the usage picture a self-hosted product does not otherwise have.
The model that fits
License key in config
A self-hosted app already ships with an env file or a config for its database and its domain. A license key is one more line in the same file.
You deliver a license key to each customer (by purchase, email, or login). The app validates the key against Bloom Cloud and activates it on their machine. Simplest for products that already sell keys.
The integration is one HTTPS call, and the panel hands you the code for it in JavaScript, Python, Go, Java, C# or PHP. There is nothing to install.
What people ask
- What if the customer blocks outbound requests from their server?
- Then the check cannot run. Most self-hosted licensing has this limit, and it is worth saying in your own installation docs so it reads as a requirement, not a bug.
- Can I lock it to a domain instead of a machine?
- Send whatever identifier makes sense as the hardware id: a domain, a server id, a database fingerprint. Bloom does not require it to literally be hardware.
- Does this work for a WordPress plugin or a browser extension?
- If it can make an HTTPS request, it can validate a license. That covers a PHP plugin, a Node service, or anything else that runs on somebody else's server.
Something else on your mind?
Ask before you sign up. It reaches a person, and you get an answer by email.
Ask usWhat Bloom does not do here
Bloom cannot see or control the server the app runs on. It cannot stop the app from being copied onto a second machine before the first check; it can only refuse the second machine's check once the license is already bound elsewhere.
Bloom does not care what it is
The same account, the same call, whatever you happen to have built.