๐Marketplace Automation
Last updated
You don't have to create a license per sale. Each developer connects their own marketplace integration from the dashboard โ there is no shared/global secret. A purchase auto-issues a key; a refund/chargeback auto-revokes it.
Map the product โ set its BuiltByBit resource ID on the product (Products dialog).
Connect โ open Integrations โ Connect BuiltByBit. This generates your private webhook URL and secret (both resettable). Requires a plan with marketplace integrations enabled.
Create the webhook on BuiltByBit (Webhooks โ Create):
Trigger Purchase, Template Custom, Method POST, Content type application/json.
URL = your webhook URL โ the exact per-tenant URL is shown in your dashboard (https://license.ohalee.com/api/v1/webhook/builtbybit/<your-id>).
Body โ your secret goes in the secret field:
{
"event": "purchase",
"resourceId": "{resource_id}",
"userId": "{user_id}",
"buyerName": "{username}",
"secret": "<your secret>"
}The server auto-creates the license (idempotent per buyer + product, scoped to your products).
BuiltByBit has no purchase-id placeholder, so a sale is identified by {user_id} + {resource_id}.
Voxel (voxel.shop) is supported the same way from the Integrations page โ connect it, map the product, and create the webhook.
A generic custom-webhook platform covers anywhere else you sell.
Link buyers to https://license.ohalee.com/redeem from your resource's purchase instructions โ they enter their BuiltByBit user ID (from their profile URL) and get their key to paste into config.yml.
Set an Ultimate API token on the Integrations page and the server will DM the key to the buyer automatically (no redeem step).
Besides /redeem, buyers have:
/redeem
Enter marketplace user ID โ get the license key.
/status
License status by key.
/portal
Status + free a seat themselves when migrating servers (rate-limited).
/trial?product=<id>
Claim a self-serve trial when a product has trials enabled.
All four pick up your custom branding (name, accent, logo, support link) from the Account page.
Last updated