---
title: Send Optimizely Data Platform data with Real-Time Audiences for Feature Experimentation for the Swift SDK
slug: feature-experimentation/docs/send-odp-data-with-real-time-audiences-for-feature-experimentation-swift
docTags: 
createdAt: 2026-08-05T20:39:53.000Z
---

## Prerequisites

You must enable the [Real-Time Audiences for Feature Experimentation](docId:6UBBxxRv331nBIVZ2lun8) integration before sending events to ODP from Feature Experimentation.

## Minimum SDK version

4.0.0

## Description

The Optimizely Client extension method `sendOdpEvent` lets you send data 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](docId\:zofYSXRfkDa-2L5Umjfmy) 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](docId:8V9hWw_Py3-kwJJ5H7uR0) or [ODP UI](docId:9GxAiVHBPBQndq-66qYBy) to manage customer profiles.

## Send events to Optimizely Data Platform

The Swift SDK discards the event and throws an error in the following cases:

- `odpNotEnabled` – ODP is not enabled.
- `odpNotIntegrated` – ODP is not integrated with the project.
- `odpInvalidData` – The data contains an unsupported value type.
- `odpInvalidAction` – The action is empty.

## Parameters

This table lists the required and optional parameters for the `sendOdpEvent` method.

| Parameter               | Type                  | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| ----------------------- | --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| \`type\`                | String?               | The type of event to be sent. Defaults to \`fullstack\` for all Swift SDK-generated events if not specified.                                                                                                                                                                                                                                                                                                                                               |
| \`action\` \_required\_ | String                | Specifies the subcategory of the event type used to track the app and user lifecycle.                                                                                                                                                                                                                                                                                                                                                                      |
| \`identifiers\`         | \`\[String: String]\` | A key-value map of user identifiers. If you enable VUID with \`OptimizelySdkSettings(enableVuid: true)\` and omit \`vuid\`, the SDK adds the device \`vuid\` to the identifiers.                                                                                                                                                                                                                                                                           |
| \`data\`                | \`\[String: Any?]\`   | The event data in a key-value map. The value can be any type (string, number, or boolean.) You can use nil values, but they become empty strings. The Swift SDK adds default event data to the given data dictionary. Sending the same key when creating your Dictionary overwrites the default data values.<br />- "idempotence\\\_id":\\<br />- "data\\\_source\\\_type":"sdk"<br />- "data\\\_source":"swift-sdk"<br />- "data\\\_source\\\_version":\\ |

## Returns

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

## Example

```swift
let identifiers: [String: String] = [
        "fs_user_id": "user123",
        "email": "user123@optimizely.com"
    ]
    let data: [String: Any] = [
        "item": "shirt",
        "price": 50.00
    ]
    try? optimizelyClient.sendOdpEvent(type: "fullstack", action: "purchased", identifiers: identifiers, data: data)
```

The following diagram shows the network calls between your application, the Swift SDK, and the ODP server when calling the `sendOdpEvent` method:

![](https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/gL24rrXHQeVhMZC2TZLFC_173bcd5-swift-sendodpevent.png)

1. Your application calls the `sendOdpEvent` method.
2. The Swift SDK makes a POST request to ODP.
3. ODP responds with acknowledgment or relevant error.

## Source files

The language and platform source files containing the implementation for Swift are available on [GitHub](https://github.com/optimizely/swift-sdk/blob/master/Sources/Optimizely/OptimizelyClient.swift).
