> ## Documentation Index
> Fetch the complete documentation index at: https://moengage.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Personalize Experience Events Tracking

> Track impression and click events for personalized experiences from the MoEngage Personalize API on Android.

This document outlines the new methods available in the MoEngage Android SDK to report impressions and clicks for experiences fetched using the [MoEngage Personalize API](https://www.moengage.com/docs/api/experiences/fetch-experience).

# Prerequisites

## SDK version

> You must update your Native Android SDK catalog version to **5.2.0** or higher.

## MoEngage Account Configuration

Ensure your MoEngage workspace is enabled to utilize the Personalize API. Refer to [this article](https://www.moengage.com/docs/user-guide/personalize/server-side-personalization/create-server-side-personalization-experience) for details on setting up Personalize API experiences.

# Reporting Experience Shown events

The SDK provides helper APIs to track shown events; please refer to the [API documentation](https://moengage.github.io/android-api-reference/personalization-core/com.moengage.campaigns.personalize/-mo-e-personalize-helper/experience-shown.html) for more details.

Impressions should be reported when an experience is visually presented to the user.

## Single Experience

To report an impression for a single experience, pass the **experience\_context** of the experience as a map.

**experience\_context** is a JSON object that is returned as part of the [response of the Personalize API request](https://www.moengage.com/docs/api/experiences/fetch-experience).

<CodeGroup>
  ```Kotlin Kotlin wrap theme={null}
   MoEPersonalizeHelper.experienceShown(context, experienceContextMap)
  ```

  ```Java Java wrap theme={null}
   MoEPersonalizeHelper.INSTANCE.experienceShown(context, experienceContextMap);
  ```
</CodeGroup>

## Mulitple Experiences

To track the experience shown event for multiple experiences, pass the **list** of **experience\_context** of each experience as a map.

<CodeGroup>
  ```Kotlin Kotlin wrap theme={null}
   MoEPersonalizeHelper.experienceShown(context, experienceContextMapList)
  ```

  ```Java Java wrap theme={null}
   MoEPersonalizeHelper.INSTANCE.experienceShown(context, experienceContextMapList);
  ```
</CodeGroup>

# Reporting Experience Clicked events

The SDK provides helper APIs to track clicked events; refer to the [API documentation](https://moengage.github.io/android-api-reference/personalization-core/com.moengage.campaigns.personalize/-mo-e-personalize-helper/experience-clicked.html) for more details.

Clicked events should be reported when a user clicks on any element that has been personalized using the response of the Personalize API.

## Single Experience

To report a click event for a single experience, pass the **experience\_context** of the experience as a map.

<CodeGroup>
  ```Kotlin Kotlin wrap theme={null}
   MoEPersonalizeHelper.experienceClicked(context, experienceContextMap)
  ```

  ```Java Java wrap theme={null}
   MoEPersonalizeHelper.INSTANCE.experienceClicked(context, experienceContextMap);
  ```
</CodeGroup>

## Mulitple Experiences

To track the experience shown event for multiple experiences, pass the **list** of **experience\_context** of each experience as a map.

<CodeGroup>
  ```Kotlin Kotlin wrap theme={null}
   MoEPersonalizeHelper.experienceClicked(context, experienceContextMapList)
  ```

  ```Java Java wrap theme={null}
   MoEPersonalizeHelper.INSTANCE.experienceClicked(context, experienceContextMapList);
  ```
</CodeGroup>

You can optionally include a **b\_id** key in the **experience\_context** object to provide additional context about the click. Its value should describe the specific component or interaction within the experience that was clicked. This is particularly useful for experiences composed of multiple interactive elements, helping to distinguish between clicks on different parts of the same overall experience.
