Send Google BigQuery Data to Insider One

Prev Next

You cannot make any changes to External Platform Integrations without having either an Administrator or an Editor with PII access in InOne. Refer to User Roles for further information.

This guide explains how to securely import user attribute and event data from your Google BigQuery (GBQ) tables into Insider One for advanced segmentation, targeting, and personalization.

Essentials before the integration

  • A Google Cloud project with BigQuery enabled.

  • Service account credentials (JSON key file) with the following IAM roles:

    • BigQuery Data Viewer

    • BigQuery Job User

    • BigQuery Metadata Viewer

  • Access to the datasets and tables containing user and event data.

  • A column (e.g., updated_at) in your table/view to track row updates for incremental sync.

Step 1: Create a Service Account

To create a Service Account, you should:

1.1. Go to the Google Cloud Console – Service Accounts page.

1.2. Select your project (from the top navigation bar).

1.3. Click Create Service Account.

1.4. Enter a name (e.g., insider-bigquery-integration) and description.

1.5. Click Create and Continue.

Refer to Google’s documentation for further details on creating and managing service accounts.

1.6. To assign required roles, add the following roles in the “Grant this service account access to project” step:

  • BigQuery Data Viewer (roles/bigquery.dataViewer)

  • BigQuery Job User (roles/bigquery.jobUser)

  • BigQuery Metadata Viewer (roles/bigquery.metadataViewer)

Refer to Google’s documentation for further details on BigQuery predefined IAM roles.

To finish and create the Service Account,

1.7. Click Done after adding the roles. Your service account will appear in the list.

1.8. In the Service Accounts list, click the email of your new service account.

1.9. Go to the Keys tab.

1.10. Click Add Key > Create new key.

1.11. Select JSON and click Create.

The JSON key file will be downloaded automatically to your computer.

Refer to Google’s documentation for further details on creating and managing service accounts.

Step 2: Upload the JSON Key to Insider Console

2.1. Navigate to Components > Integrations > External Integrations on the Insider One’s InOne panel.

2.2. Select Google BigQuery integration.

2.3. Enter a name for your integration and click Save.

2.4. Click Upload Service Account Key and select the JSON file you downloaded in Step 1.11.

2.5. Click the Verify Authentication button to verify your Service Account.

Step 3: Select Dataset and Table

After successful authentication, Insider One will display a list of available projects, BigQuery datasets, and tables in your project.

If you cannot find your dataset in here, you should check if you gave permission to that dataset or table while creating the Service Account.

3.1. Select the desired Dataset.

3.2. Choose the Table or View you want to import data from.

Step 4: Mapping GBQ Columns to Insider One Identifiers, Attributes, Events

4.1. You should map at least one identifier from GBQ to Insider One so that Insider One can understand which users you are sending data for.

Only string can be mapped to the Insider One Identifiers.

4.2. After selecting the identifier, you should select the Last Updated Column so that Insider One can understand which rows are updated in each new sync.

Only timestamp data type can be selected as Last Updated Column

You should maintain that Last Updated Column properly so that it reflects the changes in order to have proper data sync between GBQ and Insider One.

  • If you want to send data to Insider Attributes from GBQ, you should enable the Sync Attributes and map the columns to the Insider attributes.

  • If you want to sync events, enable the Sync Events.

    • Select the column that represents the event name in your table.

    • Select the column that represents the event timestamp in your table.

    • Select the column that represents event parameters in your table.

Data Type Matching

Ensure that the Insider and Google BigQuery data types are matched. Below is the table for data type matching.

Google BigQuery Data Type

Insider Data Type

Notes

STRING

String

Used for text attributes, identifiers, and event parameters.

INT64, FLOAT64, NUMERIC, BIGNUMERIC

Number

Used for numerical attributes (e.g., age, quantity, unit_price).

BOOL

Boolean

Used for opt-in attributes (e.g., email_optin).

TIMESTAMP, DATETIME, DATE

DateTime

Insider One auto-converts any datetime format accepted by BigQuery. RFC3339 recommended.

ARRAY

Array Strings

Used for properties like taxonomy. Map string arrays to string arrays.

ARRAY<NUMERIC/INT64/FLOAT64>

Array Numbers

Map number arrays to number arrays.

Default Attribute, Event & Parameter Data Mapping table

Parameter

Type

Description

Data Type

Required

email

Attribute

Attribute. The user's email address can be used as an identifier.

String

No

phone_number

Attribute

Attribute. User's phone number in E.164 format (e.g. +6598765432), can be used as an identifier.

String

No

email_optin

Attribute

Attribute. User's permission for marketing emails.
True = emails allowed; False = email not allowed.

Boolean

No

gdpr_optin

Attribute

Attribute. User's permission for Insider campaigns, data collection, and processing.
False = user will not see any Insider campaign or receive any message from any channel.
True or empty = Insider One may interact with the user through personalization campaigns.

Boolean

No

sms_optin

Attribute

Attribute. User's permission for SMS. True = SMS allowed; False = SMS not allowed.

Boolean

No

whatsapp_optin

Attribute

Attribute. User's permission for WhatsApp Message. True = WhatsApp Message allowed; False = WhatsApp Message not allowed.

Boolean

No

name

Attribute

Attribute. User's name.

String

No

surname

Attribute

Attribute. User's surname.

String

No

birthday

Attribute

Attribute. User's birthday in RFC 3339 format (e.g. 1993-03-12T00:00:00Z).
Note: Ensure the birthday ends with Z to indicate UTC; no other time offset is included. The Google BigQuery data type should be DATE.

Date/Time

No

gender

Attribute

Attribute. Gender of the user.

String

No

age

Attribute

Attribute. Age of the user.

Number

No

language

Attribute

Language information of the user.

String

No

country

Attribute

Attribute. The user's country information in ISO 3166-1 alpha-2 format.

String

No

city

Attribute

Attribute. City information of the user.

String

No

uuid

Attribute

Attribute. The user’s UUID can be used as an identifier.

String

No

event_name

Event

Name of the event.

String

Yes

timestamp

Event Parameter

Event time.

Datetime

Yes

event_group_id

Event Parameter

Event group ID.

String

No (Yes only when the event_name is purchase or cart_page_view)

product_id

Event Parameter

Event parameter. Unique product ID.

String

No

name

Event Parameter

Event parameter. Name of the product.

String

No

taxonomy

Event Parameter

Event parameter. Category tree of the product.

Array

No

currency

Event Parameter

Event parameter. Currency used for product pricing, in ISO 4217 format (e.g., USD).

String

No (Yes only when the event_name is purchase or cart_page_view)

quantity

Event Parameter

Event parameter. Quantity of the product.

Integer

No (Yes, only when the event_name is purchase)

unit_price

Event Parameter

Event parameter. Price of the product without any discount(s).

Float

No

unit_sale_price

Event Parameter

Event parameter. Unit price of the product.

Float

No (Yes only when the event_name is purchase or cart_page_view)

color

Event Parameter

Event parameter. Color of the product (selected by user).

String

No

size

Event Parameter

Event parameter. Size of the product (selected by user).

String

No

shipping_cost

Event Parameter

Event parameter. Shipping cost of the items in the basket.

String

No

promotion_name

Event Parameter

Event parameter. Name of the promotion.

String

No

promotion_discount

Event Parameter

Event parameter. Total amount of discount applied by promotions.

Float

No

If you have purchase event in your Google BigQuery table, please make sure to;

  • If in a basket, there are more than single item, make sure to add those as seperated rows into your Google BigQuery table.

  • Include e_guid(event_group_id) parameter for each purchase event. This is needed to connect different products to single cart

Refer to Events & Attributes for further information on all default events and attributes.

If your data type in Google BigQuery is a TIMESTAMP format, the specific date format is not critical. Insider One automatically converts any datetime format that is accepted by Databricks.

Step 5: Configure Sync Frequency and Launch

5.1. Choose how often Insider One should fetch data from GBQ. The options are 15 min, 30 min, 45 min, hourly, and daily.

When you activate the integration, Insider fetch all the data in that table or view without looking to Last Updated Column in order to make the full table sync. After full table sync Insider starts looking to Last Updated Column to get the latest updated rows.

5.2. Review your configuration and mappings.

5.3. Select Activate and click the Save as Active button to activate the integration.

During the first full table sync, you will not be able to change the settings and configurations of your integration.

If the data volume on the BigQuery side exceeds 10 GB, Insider cannot ingest the data in a single sync.

Best Practices

  • Always use a dedicated service account with least-privilege access.

  • Ensure the Last Updated Column is reliably maintained to avoid unnecessary MTU usage and to retrieve the latest data.

  • Use BigQuery views to pre-filter or transform data before syncing.

Data Import Logic

During the GBQ → Insider synchronization:

  • If any identifier coming from GBQ is invalid, the entire record is not sent.

  • If an attribute coming from GBQ is invalid, only that specific attribute is skipped.

  • If an event parameter coming from GBQ is invalid, the entire event is excluded from processing.

Limitations

  • Views are not supported; you can only use tables to map your data.

  • Each table must include an identifier.

  • Custom attributes or event parameters must be predefined in Insider One (via the Events & Attributes page).

  • For purchase events:

    • Add one row per product in a basket.

    • Include e_guid (event_group_id) to link multiple rows to a single cart.

  • The synchronization process does not support DELETE operations. If a record is deleted from your GBQ table, the corresponding data will not be removed from Insider on the next sync.

FAQ

Q: Can I use views as a source?
A: Yes, as long as the view is accessible by the service account and contains a Last Updated column.

Q: What happens if I delete a record in BigQuery?
A
: Deletions are not propagated to Insider. Only new and updated records are synced.

Q: How do I add custom attributes or events?
A
: Create them in Insider’s Events & Attributes page before mapping.

Q: What if my table does not have a Last Updated column?
A
: The integration requires a Last Updated column for incremental sync. Please add one to your table or view, or your integration will stop data sync.