Skip to content
Developer Resources

Set Up Your MarketplacApp Pricing

Set up app pricing in the GHL Customer Care Marketplace: internal checkout, plans, free trials, usage-based pricing, differential pricing, earnings, and Tipalti payouts.

7 min read1,480 words8 explained imagesUpdated Tue, 23 Jun at 12:07 PM
View as markdownOpen in ClaudeOpen in ChatGPT
Each image has a one line explanation. Switch to full detail for the step it belongs to, the fields and buttons involved, examples and the whole procedure.
On this page
  1. Where can I configure my app's pricing?
  2. Payment Failure Recovery for Paid Apps
  3. Select payment collection preference (Within the GHL Customer Care platform, recommended)
  4. External payment page (Not recommended)
  5. What pricing models can I offer?
  6. How to use it as a Developer?
  7. How to Use it as an Agency
  8. Reselling & markup behavior (agencies)
  9. Distribution Types and Pricing Models
  10. Offering Free-trial
  11. Key Points to Remember
  12. Usage-based pricing
  13. How your earnings are calculated
  14. Earnings Dashboard
  15. Payout
  16. How Does the Payout Process Work?
  17. Frequently Asked Questions

Monetizing your app on the GHL Customer Care developer app marketplace presents various avenues. This guide walks you through the options and tells you how to set them up.


TABLE OF CONTENTS


Where can I configure my app's pricing?

Log in to your Marketplace - Developer account, click on your app and select the 'Pricing' option from the left menu.

Where can I configure my app's pricing? (image 1 of 8) What this shows Log in to your Marketplace - Developer account, click on your app and select the 'Pricing' option from the left menu. What this shows Illustrates the "Where can I configure my app's pricing?" section of "Set Up Your MarketplacApp Pricing". This screenshot appears in the "Where can I configure my app's pricing?" section of "Set Up Your MarketplacApp Pricing". The text alongside this image reads: Log in to your Marketplace - Developer account, click on your app and select the 'Pricing' option from the left menu. Immediately after, the guide continues: Paid Marketplace apps now use a recovery flow when a charge fails. Instead of pausing the app immediately, GHL Customer Care provides a 30-day grace period and attempts automatic retries during that time. Image 1 of 8 What to chooseLog in to your Marketplace - Developer account, click on your app and select the 'Pricing' option from the left menu. Next stepPaid Marketplace apps now use a recovery flow when a charge fails. Instead of pausing the app immediately, GHL Customer Care provides a 30-day grace period and attempts automatic retries during that time.

Payment Failure Recovery for Paid Apps

Paid Marketplace apps now use a recovery flow when a charge fails. Instead of pausing the app immediately, GHL Customer Care provides a 30-day grace period and attempts automatic retries during that time.

This helps reduce involuntary churn and gives users time to resolve billing issues before access is interrupted.


This method permits customers (both agencies and sub-accounts) to pay for the app within the GHL Customer Care platform. We handle the payment processing and ensure timely payouts to developers.

  1. Enable agencies to re-sell these apps to their end sub-accounts, enhancing wider adoption and engagement for your app
  2. Use granular pricing modules offered by GHL Customer Care Marketplace platform such as free-trials, etc.
  3. Streamlined collection and reconciliation of payments.

If you'd rather manage your app's pricing on your platform, choose this option and provide the redirect URL for your external payment page. Customers will get redirected to your payment page during the installation process and upon successful payment the app will be installed in their account.

Add the redirect URL for the payment page.

Note:

  • Initially selecting an external payment page allows for later changes to the GHL Customer Care platform. But, once live with internal payment collection, you cannot switch to an external page. Such a change necessitates deleting and recreating the app.
  • Agencies cannot resell apps with external payment preference, which reduces your app's adoption chances.

What pricing models can I offer?

Your app can have one of three pricing models, all of which are configurable using Pricing Plans:

  1. Free
  2. Paid - Subscription
  3. Paid - One-time
  4. Freemium - Combination of Free and Paid plans

You can optionally offer Free-trials on any of the above pricing models.


How to use it as a Developer?

A) Configure your billing meter

  • Go to App → Pricing → Billing Meters and create (or edit) a meter with Module Type = Custom Event (API).
  • Set Price Type: Dynamic
  • Enter Minimum and Maximum price, add a Pricing Page URL (recommended for transparency), and set a Default Price per Unit.
  • Save changes.
How to use it as a Developer? (image 2 of 8) What this shows Go to App → Pricing → Billing Meters and create (or edit) a meter with Module Type = Custom Event (API). What this shows Illustrates the "How to use it as a Developer?" section of "Set Up Your MarketplacApp Pricing". This screenshot appears in the "How to use it as a Developer?" section of "Set Up Your MarketplacApp Pricing". The text alongside this image reads: Go to App → Pricing → Billing Meters and create (or edit) a meter with Module Type = Custom Event (API). Set Price Type: Dynamic Enter Minimum and Maximum price, add a Pricing Page URL (recommended for transparency), and set a Default Price per Unit. Save changes. Immediately after, the guide continues: Use the existing Create Wallet Charge API. Include the new, optional price field when you want to apply a dynamic per-unit price for that charge. If price is omitted, the meter’s Default Price per Unit is applied. Image 2 of 8 Where to goGo to App → Pricing → Billing Meters and create (or edit) a meter with Module Type = Custom Event (API). Set Price Type: Dynamic Enter Minimum and Maximum price, add a Pricing Page URL (recommended for transparency), and set a Default Price per Unit. Save changes.
Buttons and menus referenced A) Configure your billing meter
Next stepUse the existing Create Wallet Charge API. Include the new, optional price field when you want to apply a dynamic per-unit price for that charge. If price is omitted, the meter’s Default Price per Unit is applied.
All 4 steps in this procedure
  1. Go to App → Pricing → Billing Meters and create (or edit) a meter with Module Type = Custom Event (API).
  2. Set Price Type: Dynamic
  3. Enter Minimum and Maximum price, add a Pricing Page URL (recommended for transparency), and set a Default Price per Unit.
  4. Save changes.
B) Charge the wallet via API
  • Use the existing Create Wallet Charge API. Include the new, optional price field when you want to apply a dynamic per-unit price for that charge.
  • If price is omitted, the meter’s Default Price per Unit is applied.

How to Use it as an Agency

  • In your app’s Pricing section, end users see the price range for dynamic meters and a link to the Pricing Page URL.
  • Visibility note: The Pricing Page URL is visible to agency admins only, not to sub-accounts.
How to Use it as an Agency (image 3 of 8) What this shows In your app’s Pricing section, end users see the price range for dynamic meters and a link to the Pricing Page URL. What this shows Illustrates the "How to Use it as an Agency" section of "Set Up Your MarketplacApp Pricing". This screenshot appears in the "How to Use it as an Agency" section of "Set Up Your MarketplacApp Pricing". The text alongside this image reads: In your app’s Pricing section, end users see the price range for dynamic meters and a link to the Pricing Page URL. Visibility note: The Pricing Page URL is visible to agency admins only, not to sub-accounts. Immediately after, the guide continues: Agencies can configure a flat per-unit markup when reselling apps' service (app reselling). Because markups change effective end pricing, the Pricing Page URL is hidden from sub-accounts to avoid confusion. Example: If an SMS base price…. Image 3 of 8 What this coversIn your app’s Pricing section, end users see the price range for dynamic meters and a link to the Pricing Page URL. Visibility note: The Pricing Page URL is visible to agency admins only, not to sub-accounts.
Buttons and menus referenced Visibility note
Next stepAgencies can configure a flat per-unit markup when reselling apps' service (app reselling). Because markups change effective end pricing, the Pricing Page URL is hidden from sub-accounts to avoid confusion. Example: If an SMS base price is $1.00 (UK) and $1.50 (France), an agency can add a $0.50 markup so sub-accounts pay $1.50 (UK) and $2.00 (France).
All 2 steps in this procedure
  1. In your app’s Pricing section, end users see the price range for dynamic meters and a link to the Pricing Page URL.
  2. Visibility note: The Pricing Page URL is visible to agency admins only, not to sub-accounts.

Reselling & markup behavior (agencies)

  • Agencies can configure a flat per-unit markup when reselling apps' service (app reselling).
  • Because markups change effective end pricing, the Pricing Page URL is hidden from sub-accounts to avoid confusion.
  • Example: If an SMS base price is $1.00 (UK) and $1.50 (France), an agency can add a $0.50 markup so sub-accounts pay $1.50 (UK) and $2.00 (France).
Reselling & markup behavior (agencies) (image 4 of 8) What this shows Agencies can configure a flat per-unit markup when reselling apps' service (app reselling). What this shows Illustrates the "Reselling & markup behavior (agencies)" section of "Set Up Your MarketplacApp Pricing". This screenshot appears in the "Reselling & markup behavior (agencies)" section of "Set Up Your MarketplacApp Pricing". The text alongside this image reads: Agencies can configure a flat per-unit markup when reselling apps' service (app reselling). Because markups change effective end pricing, the Pricing Page URL is hidden from sub-accounts to avoid confusion. Example: If an SMS base price is $1.00 (UK) and $1.50 (France), an agency can add a $0.50…. Immediately after, the guide continues: To understand distribution types, please refer to this article. Image 4 of 8 What this coversAgencies can configure a flat per-unit markup when reselling apps' service (app reselling). Because markups change effective end pricing, the Pricing Page URL is hidden from sub-accounts to avoid confusion. Example: If an SMS base price is $1.00 (UK) and $1.50 (France), an agency can add a $0.50 markup so sub-accounts pay $1.50 (UK) and $2.00 (France). Next stepTo understand distribution types, please refer to this article.
All 3 steps in this procedure
  1. Agencies can configure a flat per-unit markup when reselling apps' service (app reselling).
  2. Because markups change effective end pricing, the Pricing Page URL is hidden from sub-accounts to avoid confusion.
  3. Example: If an SMS base price is $1.00 (UK) and $1.50 (France), an agency can add a $0.50 markup so sub-accounts pay $1.50 (UK) and $2.00 (France).

Distribution Types and Pricing Models

To understand distribution types, please refer to this article.

In this section, let's understand how you may customise your distribution type based on who you want to charge.

Let's assume that the agency in the following example has set a flat 5% markup on all Marketplace Apps.

Distribution ModelApp Pricing Model (with example)Agency paysSub-account Pays to agencyDeveloper Makes
Target User: AgencyMonthly: $50/month$50/month-$50/month
One-time: $50$50 One-time-$50 One-time
Target User: Sub-account |
Who can install? : Agency & Sub-account
Monthly: $10/month$10/month$10.5/month
$10/month
One-time: $10$10 One-time$10.5 One-time$10 One-time

Target User: Sub-account |
Who can install? : Agency Only


Monthly: $50/month$50/month-$50/month
One-time: $50$50 One-time-$50 One-time
Differential pricing enabled
(Monthly)
Agency Price:$50/month
Sub-account Price:
$10/month
$50/month
+
$10/month per sub-account
$10.5/month$50/month
+
$10/month per sub-account
Differential pricing enabled
(One-Time)
Agency Price:$50
Sub-account Price:
$10
$50 One-time
+
$10 One-time per sub-account
$10.5 One-time$50 One-time
+
$10 One-time per sub-account

Here's how you setup differential pricing for apps with Target User: Sub-account | Who can install? : Agency Only:

Distribution Types and Pricing Models (image 5 of 8) What this shows Here's how you setup differential pricing for apps with Target User: Sub-account | Who can install?: Agency Only: What this shows Illustrates the "Distribution Types and Pricing Models" section of "Set Up Your MarketplacApp Pricing". This screenshot appears in the "Distribution Types and Pricing Models" section of "Set Up Your MarketplacApp Pricing". The text alongside this image reads: Here's how you setup differential pricing for apps with Target User: Sub-account | Who can install?: Agency Only. Immediately after, the guide continues: Drive adoption of your app by offering free-trial - full-experience of the app for a limited duration of time. Image 5 of 8 What this coversHere's how you setup differential pricing for apps with Target User: Sub-account | Who can install?: Agency Only:
Buttons and menus referenced Target User: Sub-account |
Next stepDrive adoption of your app by offering free-trial - full-experience of the app for a limited duration of time.

Offering Free-trial

Offering Free-trial (video 1) Open in a new tab

Drive adoption of your app by offering free-trial - full-experience of the app for a limited duration of time.

You can offer anywhere between 1 - 90 days of free-trial to your users.

Offering Free-trial (image 6 of 8) What this shows You can offer anywhere between 1 - 90 days of free-trial to your users. What this shows Illustrates the "Offering Free-trial" section of "Set Up Your MarketplacApp Pricing". This screenshot appears in the "Offering Free-trial" section of "Set Up Your MarketplacApp Pricing". The text alongside this image reads: You can offer anywhere between 1 - 90 days of free-trial to your users. Immediately after, the guide continues: The subscription will initiate automatically after the trial period ends. Image 6 of 8 What this coversYou can offer anywhere between 1 - 90 days of free-trial to your users. Next stepThe subscription will initiate automatically after the trial period ends.

The subscription will initiate automatically after the trial period ends.

Offering Free-trial (image 7 of 8) What this shows The subscription will initiate automatically after the trial period ends. What this shows Illustrates the "Offering Free-trial" section of "Set Up Your MarketplacApp Pricing". This screenshot appears in the "Offering Free-trial" section of "Set Up Your MarketplacApp Pricing". The text alongside this image reads: The subscription will initiate automatically after the trial period ends. Immediately after, the guide continues: Free trial config is at the app-level, and applies to all pricing plans in your app. A user can avail free trial only once per app within a period of 90 days. Your users will receive a notification a 24 hours before the trial period ends…. Image 7 of 8 What this coversThe subscription will initiate automatically after the trial period ends. Next stepFree trial config is at the app-level, and applies to all pricing plans in your app. A user can avail free trial only once per app within a period of 90 days. Your users will receive a notification a 24 hours before the trial period ends giving them a heads-up about the upcoming charges. In case of payment failures after free-trial, GHL Customer Care will notify the users and try to charge them again for 3 consecutive days. After 3 consecutive days of payment-failure, the app will be uninstalled from the user's account. You can track free-trial period through AppInstall webhook and Get Installed Locations API.

Key Points to Remember

  1. Free trial config is at the app-level, and applies to all pricing plans in your app.
  2. A user can avail free trial only once per app within a period of 90 days.
  3. Your users will receive a notification a 24 hours before the trial period ends giving them a heads-up about the upcoming charges.
  4. In case of payment failures after free-trial, GHL Customer Care will notify the users and try to charge them again for 3 consecutive days. After 3 consecutive days of payment-failure, the app will be uninstalled from the user's account.
  5. You can track free-trial period through AppInstall webhook and Get Installed Locations API.

Usage-based pricing 

Here's a loom demonstrating the steps to configure Usage-based pricing on your marketplace apps.

Usage-based pricing (video 2) Open in a new tab

If your app has service whose price may vary, you can opt for dynamic pricing option.

Usage-based pricing (video 3) Open in a new tab
IMPORTANT: Here's the link to API Docs for Usage-based Pricing.

How your earnings are calculated

Your revenue stems from app installations on the GHL Customer Care platform. We currently do not deduct any commission. You receive the entire payment from our customers. However, agencies can markup the price when reselling to sub-accounts. For instance:

Say, a Sub-account app is priced as follows:

  • Developer Pricing: $10/month
  • Agency Resale Price: $12/month

Here's how the resultant transactions when a sub-account installs the app:

  • Sub-account Charge: $12/month
  • Agency Charge: $10/month
  • Developer Earnings: $10/month

Earnings Dashboard

Track your revenue in the 'Earnings Dashboard'. For a live, paid app:

  • Total Earnings: Cumulative earnings till date.
  • Total Installs: Number of app installations.
  • Active Accounts: Current active/installed accounts.
  • Use the table below for detailed insights and apply filters as needed.
Earnings Dashboard (image 8 of 8) What this shows Total Earnings: Cumulative earnings till date. What this shows Illustrates the "Earnings Dashboard" section of "Set Up Your MarketplacApp Pricing". This screenshot appears in the "Earnings Dashboard" section of "Set Up Your MarketplacApp Pricing". The text alongside this image reads: Total Earnings: Cumulative earnings till date. Total Installs: Number of app installations. Active Accounts: Current active/installed accounts. Use the table below for detailed insights and apply filters as needed. Immediately after, the guide continues: We've partnered with Tipalti to facilitate developer payouts, ensuring you have a smooth and efficient transaction process. Image 8 of 8 What this coversTotal Earnings: Cumulative earnings till date. Total Installs: Number of app installations. Active Accounts: Current active/installed accounts. Use the table below for detailed insights and apply filters as needed. Next stepWe've partnered with Tipalti to facilitate developer payouts, ensuring you have a smooth and efficient transaction process.
All 4 steps in this procedure
  1. Total Earnings: Cumulative earnings till date.
  2. Total Installs: Number of app installations.
  3. Active Accounts: Current active/installed accounts.
  4. Use the table below for detailed insights and apply filters as needed.

Payout

We've partnered with Tipalti to facilitate developer payouts, ensuring you have a smooth and efficient transaction process.

How Does the Payout Process Work?

  • Developer partners who are eligible for a payout will receive an email invitation to register with Tipalti. This 3-step registration process guides you through everything necessary to ensure compliance and to receive payouts from us.
  • After your account is set up and ready, you will begin receiving payouts from GHL Customer Care. The billing cycle is monthly, with payments sent on the 15th of each month for all earnings accrued in the previous month.

If you've already set up Tipalti and your payment status is marked as "submitted," then your payout is in process. Depending on your chosen payout method, you should expect to see the payment within 1-3 days.

To know more about how this works, click here - Tipalti Payout Process


Frequently Asked Questions

Q: What is the purpose of the new “price” parameter in the API?
It enables developers to set a dynamic per-unit charge during a billing event, allowing pricing to reflect current, variable service costs.
Q: What happens if the “price” parameter is omitted from the API call?
The system defaults to the Default Price per Unit previously configured for the billing meter.
Q: How do agencies benefit from dynamic pricing?
Agencies can use dynamic pricing to display a clear price range and configure flat markups on services, ensuring transparent and competitive pricing for sub-accounts.
Q: Who can view the Pricing Page URL?
The Pricing Page URL is visible solely to agency administrators, keeping pricing details clear and preventing confusion among sub-accounts.
Q: Can dynamic pricing be applied to services beyond SMS?
Yes, dynamic pricing is ideal for any service with variable costs, including telephony and other geo-based APIs.
Q: What steps are involved in setting up a dynamic billing meter?
You must configure the meter in GHL Customer Care by selecting Dynamic as the Price Type, entering pricing limits and a Pricing Page URL, and integrating the updated API with the optional “price” parameter.

Frequently asked questions

Where can I configure my app's pricing?
Log in to your Marketplace - Developer account , click on your app and select the 'Pricing' option from the left menu.
What pricing models can I offer?
Your app can have one of three pricing models, all of which are configurable using Pricing Plans: Free Paid - Subscription Paid - One-time Freemium - Combination of Free and Paid plans You can optionally offer Free-trials on any of the above pricing models.
How to use it as a Developer?
A) Configure your billing meter Go to App → Pricing → Billing Meters and create (or edit) a meter with Module Type = Custom Event (API). Set Price Type: Dynamic Enter Minimum and Maximum price, add a Pricing Page URL (recommended for transparency), and set a Default Price per Unit. Save changes. B) Charge the wallet via API Use the existing Create Wallet Charge API . Include the new, optional price field when you want to apply a dynamic per-unit price for that charge. If price is omitted, the meter’s Default Price per Unit is applied.
How Does the Payout Process Work?
Developer partners who are eligible for a payout will receive an email invitation to register with Tipalti. This 3-step registration process guides you through everything necessary to ensure compliance and to receive payouts from us. After your account is set up and ready, you will begin receiving payouts from GHL Customer Care. The billing cycle is monthly, with payments sent on the 15th of each month for all earnings accrued in the previous month. If you've already set up Tipalti and your payment status is marked as "submitted," then your payout is in process. Depending on your chosen payout method, you should expect to see the payment within 1-3 days. To know more about how this works, click here - Tipalti Payout Process

Was this guide helpful?

Related guides