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

FieldTypeDescription
uuidStringEvent UUID generated by the client. Used to deduplicate 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_idString

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_hashIntegerInteger-range partitioning column. Use ABS(MOD(FARM_FINGERPRINT(experiment_id), 4000)) to filter queries by experiment ID.
variation_idString

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_ipStringUser IP address.
user_agentStringUser-agent.
anonymize_ipBoolean

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.

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 deduplicate 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_nameStringHuman-readable event name from the client, or multi-event when multiple events are batched.
project_idString(Optional) Only pass project_id 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_ipBoolean

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.

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-value pairs of event tags.
propertiesMap <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_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.


Did this page help you?