Disclaimer: This website requires Please enable JavaScript in your browser settings for the best experience.

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 GuideLegal TermsGitHubDev 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.

Data schemas for Optimizely Experimentation data in BigQuery.

Decisions

FieldTypeDescription
uuidStringEvent uuid generated by the client. Used to de-duplicate events.
timestampIntegerEvent timestamp (in UTC).
account_idStringAccount identifier.
visitor_idStringA unique identifier for the visitor.
session_id **StringOptimizely no longer automatically generates the session_id as of October 9, 2023.
campaign_idStringThe id of the campaign containing this experiment.
experiment_idStringThe id of the experiment the visitor was exposed to.

For Personalization campaigns, you should explicitly send null as the experiment_id for visitors not bucketed into any experiment, for the purpose of accurately computing campaign reach.

Optimizely no longer automatically generates the session_id as of October 9, 2023, you can add it manually.
experiment_id_hashIntegerInteger-range partitioning column. Use ABS(MOD(FARM_FINGERPRINT("experiment_id"), 4000)) to query.
variation_idStringThe id of the variation the visitor was exposed to.

For Personalization Campaigns, clients should explicitly send null as the variation_id for visitors not bucketed into any experiment, for the purpose of accurately computing campaign reach.
user_ipStringUser IP address.
user_agentStringUser-agent.
anonymize_ipBooleanOptimizely typically stores the client IP address for each request. If this flag is true, the last octet of the IP will be truncated before it is stored. If false, the entire IP address will be stored. This is most relevant for consumers of this API that are implemented in a web browser or mobile client context who are subject to policies or regulation restricting the storage of end-user identifying information.

This flag is independent of the IP anonymization setting in the Account and Project settings, which only controls how Optimizely clients set this flag. If this flag is set, care must be taken when using the IP filtering feature, as fully-qualified explicit IP addresses will not function as filters (anonymization occurs before events are filtered by IP).
refererStringHTTP referer (the page from which the event was sent).
is_holdbackBooleanA 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_engineStringClient engine string (for example, 'js' or 'node-sdk').
client_versionStringClient version.
revisionStringClient snippet revision.
attributesarray <id:String, type:String, value:String>An array of user attributes (also known as segments).
process_timestampIntegerTimestamp 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

FieldTypeDescription
uuidStringEvent uuid generated by the client. Used to de-duplicate events.
timestampTimestampEvent timestamp in UTC.
account_idStringAccount identifier.
visitor_idStringA unique identifier for the visitor.
session_id **StringUnique session ID. Optimizely no longer automatically generates the session ID as of October 9, 2023.
entity_idStringEvent entity identifier.
event_typeStringEvent type (click, pageview, custom, or client_activation).
event_nameStringFriendly event name (from a client or 'multi-event' in case of multiple events).
project_idString(Optional) The project_id needs only to be passed if you are using the Optimizely Recommendations product.
revenueIntegerRevenue (in cents).
valueFloatThe value used to compute value or numeric metrics.
quantityIntegerQuantity metric value.
user_ipStringUser IP address.
user_agentStringUser-agent.
anonymize_ipBooleanOptimizely typically stores the client IP address for each request. If this flag is true, the last octet of the IP will be truncated before it is stored. If false, the entire IP address will be stored. This is most relevant for consumers of this API that are implemented in a web browser or mobile client context who are subject to policies or regulation restricting the storage of end-user identifying information.

This flag is independent of the IP anonymization setting in the Account and Project settings, which only controls how Optimizely clients set this flag. If this flag is set, care must be taken when using the IP filtering feature, as fully-qualified explicit IP addresses will not function as filters (anonymization occurs before events are filtered by IP).
refererStringHTTP Referer (the page from which the event was sent).
client_engineStringClient engine string (for example, 'node-sdk').
client_versionStringClient version.
revisionStringClient snippet revision.
attributesArray <id:String, name:String, type:String, value:String>An array of user attributes (also known as segments).
tagsMap <key:String, value:String>Key and value pair of event tags.
propertiesMap <key:String, value:String>Key value pairs defining properties or characteristics 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_timestampIntegerTimestamp 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.