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.

Experimentation Events Export gives you access to the following data:

Your export contains the same decision and conversion event data that Optimizely uses to display your experiment results, or metrics, on the Experimentation Results page. This means your analysis aligns with what is displayed on the Optimizely Experiment Results page. For information, see How Optimizely Experimentation counts conversions.

Event content

Your event data includes (but is not limited to) the following:

  • Event timestamp (UTC, UNIX epoch milliseconds).
  • Visitor ID.
  • Event (entity) ID and event name.
  • User attributes.
  • Event tags.
  • Additional visitor and event metadata, such as user-agent.
  • Server process timestamp (time zone is in UTC. The format is UNIX epoch milliseconds).
🚧

Important

Optimizely no longer automatically generates the session_id field for decision events and experiments and session_id fields for conversion events as of October 9, 2023.

For information, refer to the Experimentation Analytics October 2023 release notes.

For the complete field reference, see the Schema section.

Event data transformation

Optimizely pre-processes the data in the Experimentation Events Export to ensure accuracy, consistency, and usability for analysis. As part of this process, certain transformations may be applied to standardize event attributes, remove inconsistencies, and prevent data issues. The following transformations may be applied to the data:

  • 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 conversions unless at least one of the following conditions is met: entity_id is populated, revenue is populated, 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 and inspect Experimentation Events Export data

The data is stored in Parquet-formatted file parts. The number of file parts fluctuates and depends on the overall experiment record volume. parquet-tool is a useful utility for inspecting file contents and schemas.

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

  • AWS CLI version 1.11.108 or later.
  • The AWS SDK released after May 2016.

AWS S3 partitioning

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).

Status file

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

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

Check for this file at regular intervals. When it is present, you can safely begin importing the daily partition data.

File structure

The Experimentation Events Export has the following file structure:

  • Decisions – All visitor bucketing information for experiments.
    • Experiment
      • Day
  • Events – (Conversions) All events tracked, such as click, hover, or anything else that might be configured.
    • Event
      • Day

Schema

Decisions

Each row represents a single decision event.

🚧

Important

Optimizely no longer automatically generates the session_id field as of October 9, 2023. For information, refer to the Experimentation Analytics October 2023 release notes.

Field

Type

Description

uuid

string (GUID)

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

timestamp

long (time millis)

Event timestamp in milliseconds (in UTC).

process_timestamp

long (time millis)

Timestamp in milliseconds set by the server. Indicates when the event was processed by the server (in UTC).

visitor_id

string

The user or visitor identifier set by the client.

session_id **

string

Unique session ID. Optimizely no longer automatically generates the session_id as of October 9, 2023.

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

A boolean indicating if the visitor is bucketed into the experiment based on the traffic allocation settings.

If set to true, the user was excluded from the experiment.

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

The activationTimeStamp is only available 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. This setting is most relevant if your implementation runs in a web browser or mobile app and must comply with data privacy regulations.

This flag is independent of the IP anonymization setting in Account and Project settings. If this flag is true, IP-based filtering does not work correctly, because anonymization occurs before IP filters are applied.

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

Conversions

Each row represents a single conversion event.

🚧

Important

Optimizely no longer automatically generates the session_id and experiments fields as of October 9, 2023. See the Experimentation Analytics October 2023 release notes.

Field

Type

Description

uuid

string (GUID)

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

timestamp

long (time millis)

Event timestamp in milliseconds (in UTC).

process_timestamp

long (time millis)

Timestamp in milliseconds set by the server. Indicates when the event was processed by the server (in UTC).

visitor_id

string

User identifier set by the client.

session_id **

string

Unique session ID. Optimizely no longer automatically generates the session_id as of October 9, 2023.

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. Optimizely no longer automatically generates the experiments field as of October 9, 2023.

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 (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) Only pass project_id if 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

The activationTimeStamp is only available 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. This setting is most relevant if your implementation runs in a web browser or mobile app and must comply with data privacy regulations.

This flag is independent of the IP anonymization setting in Account and Project settings. If this flag is true, IP-based filtering does not work correctly, because anonymization occurs before IP filters are applied.

** Optimizely no longer automatically generates the session_id and experiments fields as of October 9, 2023. See the Experimentation Analytics October 2023 release notes.