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

BigQuery data specification

Data specification of Optimizely Experimentation data included in the BigQuery data export.

📘

Note

This is a third-party integration and is not an Optimizely subprocessor. See Optimizely's Third-Party Add-Ons & Platform Integration Terms.

This page describes the data schemas for Optimizely Experimentation data in BigQuery.

Decisions

Field

Type

Description

uuid

String

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

timestamp

Integer

Event timestamp (in UTC).

account_id

String

Account identifier.

visitor_id

String

A unique identifier for the visitor.

session_id **

String

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

campaign_id

String

The ID of the campaign containing this experiment.

experiment_id

String

The ID of the experiment the visitor was assigned to.

For Personalization campaigns, explicitly send null as the experiment_id for visitors not bucketed into any experiment. This is required to accurately compute campaign reach.

experiment_id_hash

Integer

Integer-range partitioning column. Use ABS(MOD(FARM_FINGERPRINT(experiment_id), 4000)) to filter queries by experiment ID.

variation_id

String

The ID of the variation the visitor was assigned to.

For Personalization campaigns, explicitly send null as the variation_id for visitors not bucketed into any experiment. This is required to accurately compute campaign reach.

user_ip

String

User IP address.

user_agent

String

User-agent.

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.

referer

String

HTTP referer (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.

client_engine

String

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

client_version

String

Client version.

revision

String

Client snippet revision.

attributes

array <id:String, type:String, value:String>

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

process_timestamp

Integer

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

** Optimizely no longer automatically generates the session_id as of October 9, 2023, but you can add it manually. See the Experimentation Analytics October 2023 release notes.

Conversion

Field

Type

Description

uuid

String

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

timestamp

Timestamp

Event timestamp in UTC.

account_id

String

Account identifier.

visitor_id

String

A unique identifier for the visitor.

session_id **

String

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

entity_id

String

Event entity identifier.

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.

project_id

String

(Optional) Only pass project_id if you are using the Optimizely Recommendations product.

revenue

Integer

Revenue (in cents).

value

Float

The value used to compute value or numeric metrics.

quantity

Integer

Quantity metric value.

user_ip

String

User IP address.

user_agent

String

User-agent.

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.

referer

String

HTTP Referer (the page from which the event was sent).

client_engine

String

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

client_version

String

Client version.

revision

String

Client snippet revision.

attributes

Array <id:String, name:String, type:String, value:String>

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

tags

Map <key:String, value:String>

Key-value pairs of event tags.

properties

Map <key:String, value:String>

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

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.

process_timestamp

Integer

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

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