Guides
Submit Documentation FeedbackJoin Developer CommunityLog In

Data Specification

Event Types

Enriched Events Export gives you access to:

  • Decision events (also known as impressions): special events that are fired when Optimizely “decides” that a visitor is bucketed into a certain experiment / variation pair.
  • Conversion events (also known as events): all other events that are fired when a visitor “converts” to a desirable action, such as a click, page view or purchase.

Your export contains the same decision and conversion event data that Optimizely uses to display your experiment results, or metrics, on the Results page. This means you can easily correlate your analysis with our Results page. For more information, see How Optimizely counts conversions.

Event Content

Your event data contains:

Raw data as sent by the Optimizely client or Event API, including (but not limited to):

  • event timestamp
  • visitor ID
  • event (entity) ID and event name
  • user attributes
  • event tags
  • misc visitor and event metadata (user-agent etc.)

Enriched data generated by Optimizely’s server:

  • (server) process timestamp
  • session ID
  • experiment ID
  • variation ID

Please see schema for a full reference of the event data.

AWS S3 Partitioning

Your event data is exported in the following S3 partitions:

Decisions:

s3://optimizely-events-data/v1/account_id=<account_id>/type=decisions/date={YYYY-MM-DD}/experiment=<experiment_id>

Conversions:

s3://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 creation date of the data
  • experiment_id: Unique experiment identifier (used for the decisions partition)
  • event_name: Event (entity) identifier (used for the conversions partition)

Access and inspect data

The data is stored in Parquet-formatted file parts. The number of file parts is variable and depends on the experiment record volume. parquet-tool is a handy tool to inspect the file content and schema.

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
  • AWS SDK released after May 2016

Retention Policy

Optimizely retains the files in your Enriched Events Export buckets for 1 year. Optimizely automatically deletes older data. We've implemented a GDPR workflow that complies with data deletion requirements laid out here.

Status File

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

Decisions:

s3://optimizely-events-data/v1/account_id={account_id}/type=decisions/date={YYYY-MM-DD}/_SUCCESS

Conversions:

s3://optimizely-events-data/v1/account_id={account_id}/type=events/date={YYYY-MM-DD}/_SUCCESS

We recommend that you check for the presence of this file at regular intervals. If it is present, it is safe to start importing the daily partition data.

Schema

Decisions

Each row represents a single decision event.

field

type

description

uuid

string (guid)

Event UUID generated by the client. Used to de-duplicate events

timestamp

long (time millis)

Event timestamp in milliseconds

process_timestamp

long (time millis)

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

visitor_id

string

User/visitor identifier set by the client

session_id

string

Unique session id generated by the server

account_id

string

Account identifier

campaign_id

string

Unique campaign id

experiment_id

string

Unique experiment id. Set to NULL if user is evaluated for the experiment and fails the audience condition.

variation_id

string

Unique variation id.
Set to NULL if user is evaluated for the experiment and fails the audience condition.

attributes

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

Array of user attributes (also known as segments)

user_ip

string

User IP address

user_agent

string

User agent

referer

string

Client referer (page from which event was sent)

is_holdback

boolean

Boolean indicating if the visitor is bucketed into the experiment based on the traffic allocation settings.
If set to true, user has been excluded from the experiment.

revision

string

Client snippet revision

client_engine

string

Client engine string (e.g ‘js’, ‘node-sdk’).

client_version

string

Client version

Conversions

Each row represents a single conversion event.

field

type

description

uuid

string (guid)

Event UUID generated by the client. Used to de-duplicate events

timestamp

long (time millis)

Event timestamp in milliseconds

process_timestamp

long (time millis)

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

visitor_id

string

User/visitor identifier set by the client

session_id

string

Unique session id generated by the server

account_id

string

Unique account identifier

experiments

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

Array of the campaign(s), experiment(s) and variation(s) the event is attributed to

entity_id

string

Event entity identifier

attributes

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

Array of user attributes (also known as segments)

user_ip

string

User IP address

user_agent

string

User agent

referer

string

Client referer (page from which event was sent)

event_type

string

Event type (click, pageview or custom)

event_name

string

Friendly event name (from client)

revenue

long

Revenue (in cents)

value

double

Value used to compute value/numeric metrics.

quantity

long

Quantity metric value

tags

map<key:string,value:string>

Key/value pair of event tags

revision

string

Client snippet revision

client_engine

string

Client engine string (e.g ‘node-sdk’)

client_version

string

Client version