Data Specification

Event Types

Enriched Events Export gives you access to the following:

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 Experimentation counts conversions.

Event Content

Your event data contains the following:

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

For full reference of the event data, see the schema section.

Access and inspect Enriched 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 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

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)

Retention Policy

Optimizely Experimentation retains the files in your Enriched Events Export buckets for 1 year. Optimizely automatically deletes older data. We have 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.

FieldTypeDescription
uuidstring (guid)Event UUID generated by the client. Used to de-duplicate events
timestamp long (time millis)Event timestamp in milliseconds
process_timestamplong (time millis)Timestamp in milliseconds set by the server. Indicates when the event was processed by the server
visitor_idstringUser/visitor identifier set by the client
session_idstringUnique session id generated by the server
account_idstringAccount identifier
campaign_idstringUnique campaign id
experiment_idstringUnique experiment id

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

Set to NULL if user is evaluated for the experiment and fails the audience condition.
attributesarray<id:string, name:string, type:string, value:string>Array of user attributes (also known as segments)
user_ipstringUser IP address
user_agentstringUser agent
refererstringClient referer (page from which event was sent)
is_holdbackbooleanBoolean 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.
revisionstringClient snippet revision
client_enginestringClient engine string (e.g ‘js’, ‘node-sdk’).
client_versionstringClient version

Conversions

Each row represents a single conversion event.

FieldTypeDescription
uuidstring (guid)Event UUID generated by the client. Used to de-duplicate events
timestamplong (time millis)Event timestamp in milliseconds
process_timestamplong (time millis)Timestamp in milliseconds set by the server. Indicates when the event was processed by the server
visitor_idstringUser/visitor identifier set by the client
session_idstringUnique session id generated by the server
account_idstringUnique account identifier
experimentsarray<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_idstringEvent entity identifier
attributesarray<id:string, name:string, type:string, value:string>Array of user attributes (also known as segments.)
user_ipstringUser IP address.
user_agentstringUser agent.
refererstringClient referer (page from which event was sent)
event_typestringEvent type (click, pageview, custom or client_activation)
event_namestringFriendly event name (from client or ‘multi-event’ in case of multiple events)
revenuelongRevenue (in cents)
valuedoubleValue used to compute value/numeric metrics.
quantitylongQuantity metric value
tagsmap<key:string,value:string>Key/value pair of event tags
revisionstringClient snippet revision
client_enginestringClient engine string (e.g ‘node-sdk’)
client_versionstringClient version