---
title: Optimizely Data Platform structure
slug: data-platform/docs/odp-data-structure
docTags: 
createdAt: 2026-08-10T12:05:18.000Z
---

## ODP data structure

At the core of ODP are [Customers](docId\:kJQOKwTiRoXN6KRiV0sb9).

Every customer has a record of [Events](docId\:w0DeSMy7YSyAm7PnwzGqq) that they have performed over time. Every event is classified by an **Event Type** (such as order, product, email) and **Event Action** (such as purchase, view, open) and additional metadata stored in **Fields** (such as, product\_id).

ODP considers customers and events **Objects** similar to a spreadsheet or a database table. Objects consist of **Fields** to store metadata and information about the data within the object.

:::hint{type="info"}
**Example**
The event object has a `ts` (timestamp) field to store the time at which an event happened and the customer object has an `email` field to store the last seen email for the customer.
:::

ODP also supports [Custom Fields](docId\:jWr_e_ykksqkpe5ZA-7fn) and [Custom Objects](docId\:jWr_e_ykksqkpe5ZA-7fn) to customize schema for your business needs (such as a *Concert Tickets* object).

## ODP accounts

ODP segregates data via **Accounts** and each account has a unique **Tracker ID** (also referred to as a Public API Key) to separate its data from other ODP client data.

:::hint{type="info"}
**Note**
ODP APIs and SDKs use the Tracker ID to determine where to send data.
:::

Common reasons to use multiple ODP accounts include:

- Multiple brands
- International stores
- Business uses multiple e-commerce instances (such as multiple Shopify stores)
