Apps & key types
An app is one thing you sell. A key type is a variant of that app — typically differing on activation limit, duration, or price. Every license belongs to exactly one app and one key type.
Each app has:
| Field | Notes |
|---|---|
displayName | Shown in checkout and on the dashboard |
productId | URL-safe slug, derived from the key prefix |
keyPrefix | 4 uppercase alphanumerics; appears at the start of every license key |
brandColor | Used in the paywall and the hosted checkout success page |
The key prefix is globally unique across all Keylight accounts — pick something distinctive. Typical choices: ACME, GEMS, BRY7.
Adding an app
Section titled “Adding an app”From the dashboard go to Apps → Add app, fill in a display name and a 4-character key prefix, and submit. If the prefix is already taken (globally), the form returns immediately — pick another.
If you’ve linked Stripe Connect, Keylight also creates a matching Stripe product on your connected account so checkout sessions can reference it.
Plan limits
Section titled “Plan limits”Your Keylight plan caps the number of apps per account:
| Plan | Apps |
|---|---|
| Free | 1 |
| Starter | 3 |
| Pro | 10 |
| Enterprise | Custom |
See Billing & plans.
Key types
Section titled “Key types”A new app starts with a single key type named Default (3 activations, no expiry). Most apps are fine with just that. Add more when you want to sell:
- A time-limited version (e.g. 1-year vs lifetime).
- A device-limited version (e.g. Single vs Family pack).
- A free trial key type with reduced features (enforce in your app — Keylight just issues the key).
Fields
Section titled “Fields”| Field | Required | Notes |
|---|---|---|
| Display name | yes | Shown on checkout and the dashboard |
| Activation limit | yes | Max concurrent devices per license |
| Duration | no | Empty = lifetime; otherwise license expires after the selected number of days, weeks, months, or years |
| Price | no | Only relevant if you sell via Stripe Connect |
| Currency | no | usd, eur, gbp |
| App flags / entitlements | no | Comma-separated flags your app can read from the SDK |
When you set a price and currency, Keylight creates a corresponding Stripe price on your connected account. Editing a price archives the old Stripe price and creates a new one — existing active subscriptions aren’t affected.
Adding / editing / deleting
Section titled “Adding / editing / deleting”Go to Apps → [app name] → Key types.
- Add: click Add key type, fill in the form, save. The key type ID (used in URLs and API calls) is derived from the display name.
- Edit: inline on each card.
- Delete: inline delete button with confirmation. Deletion is permanent. Licenses already minted against this key type keep working, but no new ones can be issued.
How the SDK picks a key type
Section titled “How the SDK picks a key type”The SDK doesn’t select a key type. Key types are a server-side concept — the license record carries its key type config, and /activate enforces the activation limit and duration directly from the record.
If you want your app to behave differently for different key types, add App flags / entitlements such as beta, early_access, or team. The Swift SDK exposes those flags through LicenseManager.hasEntitlement(_:), so your app can show badges or unlock features without parsing license keys.
Related
Section titled “Related”- Minting licenses — issuing keys by hand.
- App status — active, testing, and deactivated states.
- Key types — deeper dive on what they represent.
- Connect onboarding — how pricing flows into Stripe checkout.