# Personalized offers

> For the complete machine-readable documentation index, see [llms.txt](https://apidocs.chargebee.com/llms.txt).


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](https://www.chargebee.com/docs/retention/getting-started-guide/chargebee-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](https://app.chargebee.com/login?forward=https://app.chargebee.com/request_access/chargebee-growth&ref=feature) 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": "&lt;div class=\"slate-p\"&gt;Need  to take a break?&lt;/div&gt;",
        "description": "&lt;div class=\"slate-p\"&gt;Instead of canceling why don't you pause your plan? We'll be here when you are ready to get started again.&lt;/div&gt;"
      },
      "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
}
```

## Personalized offers attributes

## Input Parameters

- `id` (required, string, max chars=50)
  A unique and immutable identifier for the personalized offer.

- `offer_id` (required, string, max chars=50)
  ID of the base offer configured. This ID is immutable and always refers to the core offer and its latest published version.

- `content` (required, content)
  The offer content to display to the user, includes title and description.
  
  **Tip**  
  The content is formatted in HTML and can be rendered safely in the DOM. However, the code may contain empty `<div>` elements of the form `<div class="slate-p"></div>`. Replace these with one or two newlines to preserve the intended line breaks.
  - `title` (required, string, max chars=100)
    The offer headline to display to the end user.
  - `description` (required, string, max chars=100)
    The offer content or description.

- `options` (required, list of option)
  List of offer options (choices or call-to-action buttons) in this offer.
  - `id` (required, string, max chars=50)
    A unique identifier for a specific option within the offer.
  - `label` (required, string, max chars=50)
    The text to display on the call-to-action button or link for this option.
  - `processing_type` (required, enumerated string)
    Defines what happens after a customer accepts an offer and how the offer benefit is fulfilled. [Learn more](https://www.chargebee.com/docs/growth/offers/in-app-offers#offer-processing).
    Possible enum values:
      - `billing_update`
        The offer is fulfilled by Chargebee by applying the offer benefit directly to the subscription.
      - `checkout`
        The offer is fulfilled by Chargebee via a Chargebee-hosted [Checkout](https://www.chargebee.com/docs/billing/2.0/hosted-capabilities/hosted-checkout) flow.
      - `url_redirect`
        Chargebee provides the `redirect_url` as configured in Growth, and the fulfillment is processed by your system.
      - `webhook`
        Chargebee triggers webhook and fulfillment is processed by your system.
      - `email`
        Chargebee sends an email as configured in Growth, and the fulfillment is processed by your system.
  - `processing_layout` (required, enumerated string)
    Specifies the [UI layout](https://www.chargebee.com/docs/billing/2.0/hosted-capabilities/hosted-checkout#ui-layout-options) for Checkout.
    Possible enum values:
      - `in_app`
        Use an embedded checkout experience within the current interface.
      - `full_page`
        Redirect the user to a dedicated full-page checkout.
  - `redirect_url` (required, string, max chars=250)
    A URL to which the user should be redirected. Returned only if the offer's processing type is 'url\_redirect'

