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.com domain; 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: true from 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.

TypeHighLevel DomainWhite-Label DomainsConstraint
StandardVisibleHiddenNone
White-LabelVisibleVisibleApp 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:

FieldValuesNotes
Who is the target user?Agency / Sub-accountWhose 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 OnlyRecommended: Both. Use Agency Only for white-label SaaS where only the agency should discover/install.
Can the app be bulk-installed by agencies?Yes / NoMandatory 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 UserInstallerBulk?userTypeisBulkInstallationWhat you do next
AgencyAgencyn/aCompanyfalseUse the agency token directly
Sub-accountSub-accountn/aLocationfalseUse the location token directly
Sub-accountAgencyNoLocationfalseUse the location token directly (one location at a time)
Sub-accountAgencyYesCompanytrueGet 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:

  1. Publish the app as Public (listed in Marketplace), or
  2. 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 settingNew: Target UserNew: Who can install?New: Bulk-install?
Agency OnlyAgencyn/an/a
Sub-account OnlySub-accountBothNo
Agency & Sub-accountSub-accountAgency OnlyYes

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

ModelDescription
FreeNo charge to install
Paid SubscriptionRecurring monthly/annual
Paid One-TimeSingle charge on install
FreemiumMix of free and paid plans (multi-tier)
Usage-based / DynamicPer-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):

  1. App → Pricing → Billing Meters → create a meter with Module Type = Custom Event (API), Price Type = Dynamic.
  2. Set min / max price range, optional Pricing Page URL (visible to agency admins only), and Default Price per Unit.
  3. Charge the wallet via the Create Wallet Charge API, passing the optional price field for that-event pricing. If you omit price, 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

DistributionAgency PaysSub-account Pays AgencyDeveloper Earns (per unit)
Target User: Agency$50/mon/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/mon/a$50/mo
Differential pricing (agency 10)10/sub$10.50/sub10/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 price calls 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.

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.