Dev guideAPI Reference
Dev guideAPI ReferenceUser GuideGitHubNuGetDev CommunityDoc feedbackLog In
GitHubNuGetDev CommunityDoc feedback

Send Optimizely Data Platform data using Advanced Audience Targeting and the Android SDK

Describes the sendOdpEvent method, which sends Optimizely Feature Experimentation event data to the Optimizely Data Platform (ODP) server.


You must enable the Advanced Audience Targeting integration before sending events to ODP from Feature Experimentation.



Sending Optimizely Data Platform data and the Advanced Audience Targeting integration are in beta. Apply on the Optimizely beta signup page or contact your Customer Success Manager.

Minimum SDK Version



The Optimizely Client extension method, sendOdpEvent lets you send data directly to the ODP server. You can then use this data to analyze user behavior and optimize experiences across different channels and touchpoints.

Use the sendOdpEvent method to:

  • Merge or stitch users together and determine which event is associated with which customer.
  • Send various types of events and actions, such as pageviews, clicks, form submissions, and others. You can include additional data to provide more context and information about the event being tracked.

For example, by connecting an email address identifier with a fs_user_id identifier, you can use the sendOdpEvent method to send events that are associated with both identifiers. This enables you to track and analyze the behavior of a specific user across different touchpoints and devices.

You cannot create or update user profile data like name or address with sendODPEvent. Instead, you can use the ODP Create and update customers API endpoint or ODP UI to manage customer profiles.

Sending events to Optimizely Data Platform

The Android SDK discards the event immediately if there are any errors (sdkNotReady, odpNotIntegrated, or odpNotEnabled).


This table lists the required and optional parameters for the sendODPEvent method.

typeStringThe type of event to be sent. Will be "fullstack" for all Android SDK-generated events if not specified.
StringSpecifies the subcategory of the event type, which will be used to track the app and user lifecycle.
identifiersHashMap<String, String>A key-value map of user identifiers.
dataHashMap<String, Any>The event data in a key-value map. The value can be any type (string, number, or boolean.) Null values are allowed, but will be interpreted as empty strings.

The Android SDK will add default event data to the given data dictionary. The default data values can be overwritten by sending the same key when creating your HashMap.

  • "idempotence_id":<UUID created by the Android SDK>

  • "data_source_type":"sdk"

  • "data_source":"android-sdk"

  • "data_source_version":<Android SDK version implemented>


This method sends event data to the ODP server. It does not provide return values.


val identifiers: MutableMap<String, String> = HashMap() 
identifiers.put("fs-user-id", "user123") 
identifiers.put("email", "[email protected]") 
val data: MutableMap<String, Any> = HashMap() 
data.put("item", "shirt") 
data.put("price", 50.00) 
optimizelyClient.sendODPEvent("fullstack", "purchased", identifiers, data) 
Map<String, String> identifiers = new HashMap<>();
identifiers.put("fs_user_id", "user123");
identifiers.put("email", "[email protected]");
Map<String, Object> data = new HashMap<>();
                data.put("item", "shirt");
                data.put("price", 50.00);

optimizelyClient.sendODPEvent("fullstack", "purchased", identifiers, data);

The network calls between your application, the Android SDK, and the ODP server when calling the sendODPEvent method is demonstrated below:

sendODPEvent network diagram
  1. Your application calls the sendODPEvent method.
  2. The Android SDK makes a POST request to ODP.
  3. ODP responds with acknowledgement or relevant error.

Source files

The language/platform source files containing the implementation for Android are available on GitHub.