A Personalized Offer represents the best possible offer for a subscriber at a given moment in their lifecycle. It is generated by combining subscriber profile, subscription details, and contextual signals with the plays configured by Growth Managers in the Chargebee Growth dashboard. Learn more about Growth Solutions.
Growth Managers define strategic plays that guide customer engagement. Developers then use the Personalized Offers API to fetch and surface these offers within the subscriber experience; whether in an app, portal, checkout flow, websites or communications like email and SMS. Some common plays include:
Acquire: Incentivize trial users or prospects to subscribe.
Expand: Encourage existing subscribers to purchase higher-value products or add-ons.
Retain: Engage at-risk subscribers with targeted winbacks or discounts.
Note: Growth solutions are currently in Early Access and available only for Chargebee Billing customers at no additional cost during the EAP period. This API is also part of the Early Access Program (EAP). To request access, go to the Chargebee Growth Early Access page in Chargebee Billing.
Features of this object The Personalized Offers object enables you to:
Fetch context-aware offers generated by the Growth system.
Display offer content (title and description) to subscribers.
Provide subscribers with options they can act on.
Attribute offers to the correct brand (for multi-brand merchants).
Respect time-bound validity with the expires_at attribute.
Sample personalized offer [ JSON ]
{
"personalized_offers": [
{
"id": "a52ge40b",
"offer_id": "51Ora2PrXz",
"content": {
"title": "<div class=\"slate-p\">Need to take a break?</div>",
"description": "<div class=\"slate-p\">Instead of canceling why don't you pause your plan? We'll be here when you are ready to get started again.</div>"
},
"options": [
{
"id": "af647113-6002-4159-a48a-87f11564963e",
"label": "PAUSE MY PLAN",
"processing_type": "url_redirect",
"redirect_url": "https://mysecurecheckoutflow.com/abcd"
},
{
"id": "fd63284-6002-4159-a48a-87f11564963e",
"label": "CANCEL",
"processing_type": "billing_update"
}
]
}
],
"brand": {
"id": "1d5QXw39ar",
"name": "SecureCheck"
},
"expires_at": 24134311
}
enumerated string The processing mode of the option. Possible values: billing_update, checkout, url_redirect, webhook, email. This indicates how the offer option is fulfilled: e.g., a direct billing change, a checkout flow, or a redirect to a URL.
Possible values are
billing_updateThe offer fulfillment is processed by ChargebeecheckoutThe offer fulfillment is processed using Chargebee hosted checkouturl_redirectThe offer fulfillment is processed by your systemwebhookChargebee triggers webhook and fulfillment is processed by your system
This API is used to retrieve a list of personalized offer(s) for a customer based on the context (such as customer or subscription details and end-user attributes). This allows you to retrieve any active offers targeted to the user.
You can pre-call this API as soon as you have the user context at the point of login, or can call this API at any other point in the user journey when an offer is to be shown.
System evaluates eligibility and mapping to the right offer based on:
Customer profile and subscription information.
Device and browsing context.
Custom fields.
Play configurations.
If no eligible offers are found, the API returns an empty list. (No error is thrown in this case; an empty result is a valid response).
Features of this API
The List Personalized Offers endpoint allows you to:
Retrieve context-aware offers targeted to customers or end users.
Call flexibly at login, checkout, renewal, or any point in the user journey.Handle gracefully when no offers are available (returns an empty list, not an error).
Support both B2C (single user per customer) and B2B (multiple end users per customer) scenarios.
Note: Although the response is modeled as a list, the API currently returns at most one personalized offer (the best-matched offer for the user). If no offers are available, the list will be empty.
This API is not enabled for live sites by default. Please contact
support to get this enabled.
{
"personalized_offers": [
{
"id": "a52ge40b",
"offer_id": "51Ora2PrXz",
"content": {
"title": "<div class=\"slate-p\">Need to take a break?</div>",
"description": "<div class=\"slate-p\">Instead of canceling why don't you pause your plan? We'll be here when you are ready to get started again.</div>"
},
"options": [
{
"id": "af647113-6002-4159-a48a-87f11564963e",
"label": "PAUSE MY PLAN",
"processing_type": "url_redirect",
"redirect_url": "https://mysecurecheckoutflow.com/abcd"
},
{..}
]
},
{..}
],
"brand": {
"id": "1d5QXw39ar",
"name": "SecureCheck"
},
"expires_at": 24134311
}
optional, string, max chars=50 The unique identifier of the user in the your system. This is used to identify the user for whom the offer is being created.
optional, jsonobject A JSON object of custom attributes (key-value pairs) that can be used in offer targeting or content (per field mapping configuration).
always returned required, timestamp(UTC) in seconds The timestamp until which the offer remains active. After this time, you must retrieve the offer again via the List Personalised Offers API to get the latest.