BigQuery data specification
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 \ | 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 notesExperimentation 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 \ | An array of user attributes (also known as segments). |
`tags` | Map \ | Key-value pairs of event tags. |
`properties` | Map \ | Key-value pairs defining properties of the event. The value must be a string. |
`experiments` | Array \ | 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 notesExperimentation Analytics October 2023 release notes.