---
title: Integrate Optimizely Data Platform
slug: configured-commerce/docs/integrate-optimizely-data-platform
docTags: 
createdAt: 2026-07-20T15:45:40.000Z
---

To use Commerce Search v3 with Optimizely Configured Commerce, you must integrate with Optimizely Data Platform (ODP) to process and send the user events data to Google Retail Search. You must enable ODP and configure the following integration jobs for exporting products, warehouses, orders, customers, user profiles, and customer user profiles data to ODP.

## Prequisites

Ensure you have followed all [prerequisites for Commerce Search v3](docId\:hsPpUqQYUDL3v-lcq_eOS). You must have validated whether or not your environment uses unique email addresses before integrating with ODP.

## Enable ODP Integration

This must be completed as part of a manual provisioning request. Verify ODP tracking is enabled under **Settings > Integration > ODP Integration**. Contact [Support](mailto\:support@optimizely.com) if the integration is not enabled.

::Image[]{src="https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/H524zjq_jFO3RsN2wQh0i-20260720-150121.png" size="60" isUploading="false" width="994" height="878" darkWidth="994" darkHeight="878" showCaption="false"}

When **Enable ODP Tracking** is turned on, and the settings change is saved, the Admin Console displays an **ODP Job Definitions** modal with the prompt: *"Do you wish to install the Job Definitions for ODP data export?"*

The modal includes an **ODP** toggle defaulted to **Yes**. Click **Save** to install the job definitions automatically. This replaces the previous manual process of creating each job definition individually.

The import installs eight job definitions: ODP Customer Export, ODP User Profile Export, ODP Order Export, ODP Warehouse Export, ODP Product Export, ODP Customer To User Mapping Export, Daily User Events Sync (recurring), and Historical User Events Sync.

The prompt appears each time **Enable ODP Tracking** is toggled on and saved.

## Custom order status mapping

If you have custom order statuses, you can configure which statuses should sync to ODP without any code changes.

1. Go to **Order Status Mapping** in the Admin Console.
2. Click **Edit** for the order status.
3. Map the order statuses to an ODP Action Type of **Purchase** or **Cancel**. If a status does not correspond to either action type, you can leave it unmapped.

::Image[]{src="https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/jj1YSqaKW5bYZOd3L2F_X-20260720-150121.png" size="100" alt="Update ODP action type.png" isUploading="false" showCaption="false" indent="2" width="2232" height="1058" darkWidth="2232" darkHeight="1058"}

:::Paragraph{indent="1"}
Typically, you should map statuses such as *Submitted*, *Purchased*, *Order Placed*, or any custom status that represents an order being successfully submitted (or that aligns with an ERP order placed status) to **Purchase**. Map any status representing a cancelled order to **Cancel**.
:::

:::hint{type="info"}
By default, Configured Commerce sends the following order statuses to ODP: *Submitted*, *Punchout*, and *ReadyForPickup* as **Purchase**, and *CancellationRequested* as **Cancel**. If needed, you can map additional order statuses to the appropriate ODP action types using the previous steps.
:::

## Real-time data

Once the ODP integration is enabled, any additions or updates to products, customers, users, and so on are sent in real time to ODP from the Configured Commerce backend through ODP REST APIs.

## Historical data

Create the following integration jobs to send product, customer, user profile, customer user profile, warehouse, and order data to ODP.

1. **Export products to ODP** – Create an integration job with **ProductOdpExport** as the **Post Processor**, configure any necessary notifications, and schedule and run the job once. Verify the job runs in Configured Commerce and that ODP imports the data successfully.

::Image[]{src="https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/7lbC74NNNHEBVpF5yuxtC-20260720-150121.png" size="100" alt="Product ODP Export.png" isUploading="false" showCaption="false" indent="2" width="2274" height="1210" darkWidth="2274" darkHeight="1210"}

2. **Export warehouses to ODP** – Create an integration job with **WarehouseOdpExport** as the **Post Processor**, configure any necessary notifications, and schedule and run the job once. Verify the job runs in Configured Commerce and that ODP imports the data successfully.

::Image[]{src="https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/_sq_iLFiknG0LSw15HzTO-20260720-150121.png" size="100" alt="Warehouse ODP Export.png" isUploading="false" showCaption="false" indent="2" width="2274" height="1230" darkWidth="2274" darkHeight="1230"}

3. **Export orders to ODP** – Create an integration job with **OrderOdpExport** as the **Post Processor**, configure any necessary notifications, and schedule and run the job once. Verify the job runs in Configured Commerce and that ODP imports the data successfully.

::Image[]{src="https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/SRE2hauPZW7VTVqsWi8Ow-20260720-150121.png" size="100" alt="Order ODP Export.png" isUploading="false" showCaption="false" indent="2" width="2270" height="1246" darkWidth="2270" darkHeight="1246"}

4. **Export customers to ODP** – Create an integration job with **CustomerOdpExport** as the **Post Processor**, configure any necessary notifications, and schedule and run the job once. Verify the job runs in Configured Commerce and that ODP imports the data successfully.

::Image[]{src="https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/f2bbUV2U-PL-slt3AS8tL-20260720-150121.png" size="100" alt="Customers to ODP.png" isUploading="false" showCaption="false" indent="2" width="2274" height="1230" darkWidth="2274" darkHeight="1230"}

5. **Export user profiles to ODP** – Create an integration job with **UserProfileOdpExport** as the **Post Processor**, configure any necessary notifications, and schedule and run the job once. Verify the job runs in Configured Commerce and that ODP imports the data successfully.

::Image[]{src="https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/dtwW3MnA_XsmRCZlcte1r-20260720-150121.png" size="100" alt="User Profiles Export.png" isUploading="false" showCaption="false" indent="2" width="2276" height="1234" darkWidth="2276" darkHeight="1234"}

6. **Export customer user profiles to ODP** – Create an integration job with **CustomerToUserMappingOdpExport** as the **Post Processor**, configure any necessary notifications, and schedule and run the job once. Verify the job runs in Configured Commerce and that ODP imports the data successfully.

::Image[]{src="https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/kxZy9z1i72fzaauaTIm2d-20260720-150121.png" size="100" alt="Customer User Profiles Export.png" isUploading="false" showCaption="false" indent="2" width="2270" height="1230" darkWidth="2270" darkHeight="1230"}

### Recommended strategy for scheduling data exports

- You should use scheduled exports to initialize and periodically validate full data consistency across systems.
- Real-time updates help maintain continuous synchronization with minimal latency.
- Combine both approaches for optimal reliability:
  - Real-time feeds handle incremental changes as they occur.
  - Scheduled exports serve as a safety net to catch any data gaps caused by communication or processing issues.

### Important notes

**Date range parameters for historical export jobs**

Historical export jobs support optional parameters for controlling the date range of processed data:

- **LookBackDays**
- **StartDate**
- **EndDate**

These parameters let administrators fine-tune which records are included in each export run. When no parameters are provided, all data is exported.

**LookBackDays**

- All historical export jobs support the **LookBackDays** parameter, which restricts processing to entities modified within the specified number of days.

::Image[]{src="https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/jyLbrHGosZIaKAi5QyRYT-20260720-150121.png" size="100" alt="LookBackDays.png" isUploading="false" showCaption="false" indent="2" width="936" height="446" darkWidth="936" darkHeight="446"}

- Setting **LookBackDays = 1** is recommended for daily job schedules, ensuring complete coverage of data changes within the last 24 hours while maintaining optimal performance.
- Data sourced from external systems is not updated in real time. To keep this data current, schedule daily exports with **LookBackDays = 1**, or refresh manually as needed.

**StartDate and EndDate**

In addition to LookBackDays, export jobs also support **StartDate** and **EndDate** parameters. These parameters accept specific date and time values and let administrators define an explicit date range for the export.

Use these parameters when you need precise control over the time window of data being sent to ODP, such as when backfilling historical data or exporting a specific period.

### Send custom properties to ODP

See [Send custom properties to ODP](<../../Developer docs/Integrate Optimizely Products/send-custom-properties-to-odp.mdx>) in the developer documentation to extend Configured Commerce using real-time transmission or batch integration jobs.

## User Events

Enabling storefront events tracks storefront users and sends the following events in real time to ODP through the ODP JavaScript tag and from the Configured Commerce backend through ODP REST APIs.

| **ODP event type** | **ODP action**         | **Sent from**              |
| ------------------ | ---------------------- | -------------------------- |
| product            | add\_to\_cart          | Storefront ODP JS Tag      |
| product            | remove\_from\_cart     | Storefront ODP JS Tag      |
| product            | detail                 | Storefront ODP JS Tag      |
| page\_view         | category               | Storefront ODP JS Tag      |
| page\_view         | cart                   | Storefront ODP JS Tag      |
| page\_view         | website                | Storefront ODP JS Tag      |
| navigation         | search                 | Storefront ODP JS Tag      |
| navigation         | sort                   | Storefront ODP JS Tag      |
| navigation         | filter                 | Storefront ODP JS Tag      |
| navigation         | autocomplete           | Storefront ODP JS Tag      |
| account            | update                 | Storefront ODP JS Tag      |
| order              | purchase               | Backend using ODP REST API |
| account            | register               | Backend using ODP REST API |
| account            | login                  | Backend using ODP REST API |
| account            | logout                 | Storefront ODP JS Tag      |
| product            | add\_to\_wishlist      | Storefront ODP JS Tag      |
| product            | remove\_from\_wishlist | Storefront ODP JS Tag      |
| pageview           |                        | Storefront ODP JS Tag      |
| business           | change\_business       | Storefront ODP JS Tag      |

## FAQs

:::ExpandableHeading
### Is the ODP integration required for Commerce Search v3?

No, the Optimizely Data Platform (ODP) integration is not mandatory for using Commerce Search v3 powered by Google's Vertex AI Search for Commerce. You can implement and use the basic search functionality without ODP integration.

However, ODP provides significant value as part of your search implementation:

- **Enhanced relevancy** – UserEvents captured through ODP help train the AI models to better understand customer behavior and preferences.
- **Personalized ranking** – These behavioral signals enable access to higher tiers of search functionality, particularly personalized product ranking.
- **Streamlined data pipeline** – ODP is an efficient data pipeline that captures and forwards user interactions to the AI engine.

While you can use Commerce Search v3 without ODP, integrating it significantly enhances your search experience and improves relevancy outcomes for your customers. The behavioral data it provides is valuable for optimizing product discovery and conversions over time.
:::
