Source: ai-research/ghl-2026-05-01/support-solutions-articles-155000001559-configure-marketplace-app-listing-type.md, ai-research/ghl-2026-05-01/support-solutions-articles-155000002141-marketplace-app-distribution-type.md, ai-research/ghl-2026-05-01/support-solutions-articles-155000001217-set-up-your-marketplacapp-pricing.md
When you publish an app to the HighLevel Marketplace you make three orthogonal listing decisions that together control who sees the app, who can install it, and how revenue flows. This article walks the three knobs in order — Listing Type (Standard vs White-Label), Distribution Model (target user + installer + bulk-install), and Pricing (free, subscription, one-time, freemium, usage-based, with optional free trial) — plus how agency reselling and revenue share work in practice.
Key Takeaways
- Listing Type controls visibility across white-label vs HighLevel domains. Standard apps show only on
gohighlevel.comdomain; White-Label apps show on both, but cannot reference HighLevel anywhere in the app or marketing. - Distribution is now three fields, not one option: target user (Agency or Sub-account), who can install (Both, or Agency Only), can be bulk-installed (Yes/No, mandatory Yes for new apps). 95% of apps target Sub-account.
- Private apps are capped at 5 agencies until you publish the app or pass Security Review. Each unique agency counts once regardless of sub-account count.
- The new bulk-install + Sub-account flow returns
userType: Company+isBulkInstallation: truefrom the Get Access Token call. From there you fetch installed locations and exchange the agency token for per-location tokens. - Pricing models: Free, Paid Subscription, Paid One-Time, Freemium (mix). Optionally layer a free trial of 1-90 days. Usage-based pricing supports dynamic per-charge prices via the Wallet Charge API.
- HighLevel keeps 0% commission — developers get 100% of the price they set. Agencies can mark up the per-unit price when reselling to sub-accounts; the markup goes to the agency, not HighLevel.
- Payouts run monthly through Tipalti, paid on the 15th for the prior month’s earnings.
Listing Type — Standard vs White-Label
Set during initial app creation; controls which domains see the app.
| Type | HighLevel Domain | White-Label Domains | Constraint |
|---|---|---|---|
| Standard | Visible | Hidden | None |
| White-Label | Visible | Visible | App must not reference HighLevel/GoHighLevel anywhere — name, copy, screenshots, company website. References cause disapproval during review. |
Recommendation: fully white-label your app for maximum reach. White-label apps are listed on both white-label and non-white-label domains, so they reach a strictly larger audience.
Distribution Model — Three Fields
The new model replaces the old “Agency / Sub-Account / Both” dropdown with three orthogonal questions:
| Field | Values | Notes |
|---|---|---|
| Who is the target user? | Agency / Sub-account | Whose access token does the app actually need? 95% of apps = Sub-account. Cannot be modified after set. |
| Who can install? | Both Agency & Sub-account / Agency Only | Recommended: Both. Use Agency Only for white-label SaaS where only the agency should discover/install. |
| Can the app be bulk-installed by agencies? | Yes / No | Mandatory Yes for new apps. Existing apps may be No for backward compatibility. Once Yes, cannot revert to No. |
Distribution scenarios
When an agency or sub-account installs your app, the response from Get Access Token tells you what kind of installation it was:
| Target User | Installer | Bulk? | userType | isBulkInstallation | What you do next |
|---|---|---|---|---|---|
| Agency | Agency | n/a | Company | false | Use the agency token directly |
| Sub-account | Sub-account | n/a | Location | false | Use the location token directly |
| Sub-account | Agency | No | Location | false | Use the location token directly (one location at a time) |
| Sub-account | Agency | Yes | Company | true | Get installed locations, then exchange agency token for per-location tokens; listen to AppInstall webhook for future installs |
For the new bulk flow: call Get sub-accounts where app is installed, then Get Location Token using Agency Token for each, and subscribe to the AppInstall webhook for future installs.
Private app install cap
Private apps are limited to 5 agencies max. Once a 6th agency tries to install, all new installs are blocked until you either:
- Publish the app as Public (listed in Marketplace), or
- Pass Security Review (an approved review lets the app stay Private and continue installing).
Counting rules: each unique agency = 1, regardless of sub-account count. Bulk installs still count as 1 per agency. Counts update in real time when an app is fully uninstalled from an agency.
Backward compatibility
For apps that existed before the new model, HighLevel auto-mapped the legacy choice:
| Old setting | New: Target User | New: Who can install? | New: Bulk-install? |
|---|---|---|---|
| Agency Only | Agency | n/a | n/a |
| Sub-account Only | Sub-account | Both | No |
| Agency & Sub-account | Sub-account | Agency Only | Yes |
To migrate Sub-account Only → bulk install with broad reach, implement the bulk token exchange flow first, then flip “Bulk-install” to Yes. To migrate Agency-Only → Both, ensure the app does not require agency-level scopes (companies.*, location.write, saas/location.write, snapshots.*, custom-menu-link.*, Snapshots module, CustomJS) — those scopes are blocked from sub-account install.
Pricing — Models and Setup
Configured under App → Pricing in the developer portal. Two payment-collection options:
- Within HighLevel platform (recommended) — HighLevel handles payment processing and monthly payouts. Required for agency reselling, free trials, and granular pricing. Once you go live with internal collection, you cannot switch to external; you’d have to delete and recreate the app.
- External payment page (not recommended) — Customers redirect to your own payment page on install. Disables agency reselling and reduces adoption.
Pricing models
| Model | Description |
|---|---|
| Free | No charge to install |
| Paid Subscription | Recurring monthly/annual |
| Paid One-Time | Single charge on install |
| Freemium | Mix of free and paid plans (multi-tier) |
| Usage-based / Dynamic | Per-charge pricing via Wallet Charge API; configure billing meter as Module Type = Custom Event (API), Price Type = Dynamic, with min/max range |
Free trials
Layer a 1–90 day free trial on top of any pricing model.
- Trial is app-level, applies to all plans within the app.
- A user can take the free trial only once per app within 90 days.
- Users get a notification 24 hours before the trial ends.
- After trial ends, payment auto-charges. On failure, GHL retries for 3 consecutive days; after 3 failures, the app is uninstalled.
- Track free-trial state via AppInstall webhook + Get Installed Locations API.
Usage-based / dynamic pricing
For apps with variable per-event costs (geo-priced SMS, telephony, AI tokens):
- App → Pricing → Billing Meters → create a meter with Module Type = Custom Event (API), Price Type = Dynamic.
- Set min / max price range, optional Pricing Page URL (visible to agency admins only), and Default Price per Unit.
- Charge the wallet via the Create Wallet Charge API, passing the optional
pricefield for that-event pricing. If you omitprice, the meter’s default is applied.
Agencies can set a flat per-unit markup on top of the developer’s price (see Agency App Reselling).
Reselling and revenue share
For Sub-account apps where Both Agency & Sub-account can install (or Agency Only with sub-account distribution):
- The agency installing the app sees the developer price.
- The agency can set a markup; the sub-account is charged the developer price + markup.
- Revenue split: developer gets the full developer price, agency keeps the markup, HighLevel takes 0%.
Example:
- Developer price: $10/month
- Agency resale price: $12/month
- When sub-account installs: sub-account pays 10 to HighLevel, developer earns $10.
Agencies cannot resell apps with External payment page preference. They also can’t resell Target User: Agency apps because those don’t install at the sub-account level.
Distribution + pricing matrix
| Distribution | Agency Pays | Sub-account Pays Agency | Developer Earns (per unit) |
|---|---|---|---|
| Target User: Agency | $50/mo | n/a | $50/mo |
| Target User: Sub-account, Both can install | $10/mo | $10.50/mo (with 5% markup) | $10/mo |
| Target User: Sub-account, Agency Only | $50/mo | n/a | $50/mo |
| Differential pricing (agency 10) | 10/sub | $10.50/sub | 10/sub |
Earnings and payouts
- Earnings dashboard in the developer portal shows total earnings, total installs, active accounts, and detailed install/charge data with filters.
- Payouts via Tipalti. Eligible developers get a Tipalti registration email; complete the 3-step setup once.
- Billing cycle is monthly. Payments go out on the 15th of each month for prior-month earnings. After payout is “submitted,” funds arrive in 1-3 days depending on payout method.
Try It
- Pick Listing Type at app creation: White-Label is the default best choice. Strip every HighLevel reference from your app, copy, and company website if you go White-Label.
- Set Distribution carefully: most apps = Sub-account / Both / Yes. Agency Only is rare; reserve for white-label SaaS features.
- For the bulk-install token flow, implement: install webhook listener → fetch agency-installed locations → exchange agency token for location tokens.
- Stand up Pricing under “Within HighLevel platform” — agency reselling is a major adoption driver and requires it.
- For variable-cost apps, configure a dynamic billing meter and start with a sensible Default Price per Unit so omitted
pricecalls don’t break things. - Add a 7-14 day free trial if you’re confident in your activation flow — friction-free trials drive trial-to-paid conversion.
- Verify your Tipalti setup is complete before your first payout window so you don’t miss the 15th-of-month batch.
Related
- Developer Marketplace
- OAuth 2.0
- Agency App Reselling
- Testing Draft Marketplace Apps
- App Uninstall API
- Reconnect Broken Marketplace Apps
- API Rate Limits
Open Questions
- Security Review process — sources reference it as a path past the 5-agency Private cap but don’t describe criteria, timeline, or fee.
- White-Label review specifics — sources say HighLevel references trigger disapproval but don’t enumerate edge cases (e.g. third-party screenshots, transitively-rendered HighLevel chrome, OAuth consent screen branding).
- Refund/dispute flow when a sub-account install gets refunded mid-cycle and how that propagates back through agency markup and developer earnings.