The availability of features may depend on your plan type. Contact your Customer Success Manager if you have any questions.
Dev GuideAPI Reference
Dev GuideAPI ReferenceUser GuideGitHubDev CommunityOptimizely AcademySubmit a ticketLog In
Dev Guide

Data specification

Data specification for Optimizely's Experimentation Events Export.

Use the Experimentation Events Export when you need to analyze experiment data outside of Optimizely. For example, you might analyze the data in a data warehouse, business intelligence tool, or custom statistical pipeline. The Experimentation Events Export gives you access to the following data:

Your export contains the same decision and conversion event data Optimizely uses to render the Experimentation Results page. Your analysis therefore aligns with what the Results page displays. For more, see How Optimizely Experimentation counts conversions.

Event content

Your event data includes the following fields, among others:

  • Event timestamp.
  • Visitor ID.
  • Event (entity) ID and event name.
  • User attributes.
  • Event tags.
  • Additional visitor and event metadata.
  • Server process timestamp.
🚧

Important

As of October 9, 2023, Optimizely no longer generates the session_id field on decision events, or the session_id and experiments fields on conversion events.

For more, see the Experimentation Analytics October 2023 release notes.

For the complete field reference, see the Schema section.

Event data transformation

Optimizely preprocesses the data in the Experimentation Events Export to ensure accuracy, consistency, and usability. These transformations run on every export, so consumers downstream see the cleaned data, not the raw client events. The export applies the following transformations:

  • Remove duplicate events – Deduplicates events based on uuid.
  • Populate missing event names – Sets event_name to entity_id if event_name is blank.
  • Filter out incomplete conversions – Removes a conversion unless entity_id, revenue, or value is populated, or event_type is client_activation.
  • Replace oversized values – Substitutes event_name or experiment_id if the original value exceeds size limits.

Access the export data

The data is stored in Parquet-formatted file parts. The number of file parts depends on your total event volume. Use parquet-tool to inspect file contents and schemas.

Your data is available in Amazon S3 and Google Cloud Storage (GCS). The format and schema are identical. Only the storage location and credentials differ. See the Authentication API for how to obtain credentials for each.

The S3 data is encrypted using AWS-KMS. To access it, you need one of the following clients:

  • AWS CLI version 1.11.108 or later
  • AWS SDKs released after May 2016

The GCS data is encrypted at rest by Google Cloud Storage. To access it, use the Google Cloud CLI (gcloud storage) or a Google Cloud Storage client library.

AWS S3 partitions

Your event data is exported in the following S3 partitions:

Decisionss3://optimizely-events-data/v1/account_id=ACCOUNT_ID/type=decisions/date=YYYY-MM-DD/experiment=EXPERIMENT_ID

Conversionss3://optimizely-events-data/v1/account_id=ACCOUNT_ID/type=events/date=YYYY-MM-DD/event=EVENT_NAME

Legend

  • optimizely-events-data – S3 bucket name.
  • account_id – Your unique account identifier.
  • date – The data creation date.
  • experiment_id – Unique experiment identifier (used for the decisions partition).
  • event_name – Event (entity) identifier (used for the conversions partition).

GCS partitions

Your event data is exported to a per-account GCS bucket in the following partitions:

Decisionsgs://optimizely-e3-ACCOUNT_ID/v1/account_id=ACCOUNT_ID/type=decisions/date=YYYY-MM-DD/experiment=EXPERIMENT_ID

Conversionsgs://optimizely-e3-ACCOUNT_ID/v1/account_id=ACCOUNT_ID/type=events/date=YYYY-MM-DD/event=EVENT_NAME

Legend

  • optimizely-e3-ACCOUNT_ID – GCS bucket name (one bucket per account).
  • account_id – Your unique account identifier.
  • date – The data creation date.
  • experiment_id – Unique experiment identifier (used for the decisions partition).
  • event_name – Event (entity) identifier (used for the conversions partition).

Status file

The daily partition files are ready for import when the _SUCCESS file is available.

Amazon S3

Decisionss3://optimizely-events-data/v1/account_id=ACCOUNT_ID/type=decisions/date=YYYY-MM-DD/_SUCCESS

Conversions (Events)s3://optimizely-events-data/v1/account_id=ACCOUNT_ID/type=events/date=YYYY-MM-DD/_SUCCESS

Google Cloud Storage

Decisionsgs://optimizely-e3-ACCOUNT_ID/v1/account_id=ACCOUNT_ID/type=decisions/date=YYYY-MM-DD/_SUCCESS

Conversions (Events)gs://optimizely-e3-ACCOUNT_ID/v1/account_id=ACCOUNT_ID/type=events/date=YYYY-MM-DD/_SUCCESS

Poll for this file. When it is present, import the daily partition data.

File structure

The Experimentation Events Export has the following file structure:

  • Decisions – Visitor bucketing information for experiments. Bucketing is the process of assigning a visitor to one of the variations in an experiment, based on their identifier and the experiment's traffic allocation.
    • Experiment
      • Day
  • Events (conversions) – All tracked events, such as a click, a hover, or any other configured event.
    • Event
      • Day

Schema

Decisions

Each row represents a single decision event.

Field

Type

Description

uuid

string (GUID)

Event UUID generated by the client. Used to deduplicate events.

timestamp

long (time millis)

Event timestamp – UTC, UNIX epoch milliseconds.

process_timestamp

long (time millis)

Server process timestamp – UTC, UNIX epoch milliseconds. Indicates when the server processed the event.

visitor_id

string

The user or visitor identifier set by the client.

session_id **

string

Unique session ID. As of October 9, 2023, Optimizely no longer generates session_id.

account_id

string

Account identifier.

campaign_id

string

Campaign ID.

experiment_id

string

Experiment ID.

Set to null if the user is evaluated for the experiment and fails the audience condition.

variation_id

string

Unique variation ID.

Set to null if the user is evaluated for the experiment and fails the audience condition.

attributes

array<id:string, name:string, type:string, value:string>

An array of user attributes (also known as segments).

user_ip

string

User IP address.

user_agent

string

User-agent.

referrer

string

Client referrer (the page from which the event was sent).

is_holdback

boolean

Indicates whether traffic allocation excluded the visitor from the experiment. When true, the visitor was excluded.

revision

string

Client snippet revision.

client_engine

string

Client engine string (for example, js or node-sdk).

client_version

string

Client version.

activation_id

string

Available only for Web Experimentation products, including Performance Edge.
Used to calculate bounce and exit metrics.

anonymize_ip

boolean

When set to true, the last octet of the IP address is removed before storage. When false, the full IP address is stored. Most relevant if your implementation runs in a web browser or mobile app under data-privacy regulations.

This flag operates independently of the IP-anonymization setting in Account and Project settings. When true, IP-based filtering does not work, because anonymization runs before IP filters apply.

** As of October 9, 2023, Optimizely no longer generates session_id. See the Experimentation Analytics October 2023 release notes.

Conversions

Each row represents a single conversion event.

Field

Type

Description

uuid

string (GUID)

Event UUID generated by the client. Used to deduplicate events.

timestamp

long (time millis)

Event timestamp – UTC, UNIX epoch milliseconds.

process_timestamp

long (time millis)

Server process timestamp – UTC, UNIX epoch milliseconds. Indicates when the server processed the event.

visitor_id

string

User identifier set by the client.

session_id **

string

Unique session ID. As of October 9, 2023, Optimizely no longer generates session_id.

account_id

string

Unique account identifier.

experiments **

array<campaign_id:string, experiment_id:string, variation_id:string, is_holdback:boolean>

An array of the campaigns, experiments, and variations the event is attributed to. As of October 9, 2023, Optimizely no longer generates the experiments field.

properties

map <key:string, value:string>

Key-value pairs that define properties of the event. The value must be a string.

entity_id

string

Event entity identifier.

attributes

array<id:string, name:string, type:string, value:string>

An array of user attributes (also known as segments).

user_ip

string

User IP address.

user_agent

string

User-agent.

referrer

string

Client referrer (the page from which the event was sent).

event_type

string

Event type – one of click, pageview, custom, or client_activation.

event_name

string

Human-readable event name from the client, or multi-event when multiple events are batched.

revenue

long

Revenue (in cents).

project_id

string

(Optional) Pass project_id only when you are using the Optimizely Recommendations product.

value

double

The value used to compute value or numeric metrics.

quantity

long

Quantity metric value.

tags

map<key:string, value:string>

Key-value pairs of event tags.

revision

string

Client snippet revision.

client_engine

string

Client engine string (for example, node-sdk).

client_version

string

Client version.

activation_id

string

Available only for Web Experimentation products, including Performance Edge. Used to calculate bounce and exit metrics.

anonymize_ip

boolean

When set to true, the last octet of the IP address is removed before storage. When false, the full IP address is stored. Most relevant if your implementation runs in a web browser or mobile app under data-privacy regulations.

This flag operates independently of the IP-anonymization setting in Account and Project settings. When true, IP-based filtering does not work, because anonymization runs before IP filters apply.

** As of October 9, 2023, Optimizely no longer generates session_id or experiments. See the Experimentation Analytics October 2023 release notes.