Import Data from Snowflake

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 share user and event data from your Snowflake account to Insider One using Snowflake. This method ensures a secure, efficient pipeline that minimizes maintenance and overhead costs.

Essentials before integration

Before you begin, ensure the following prerequisites are met to ensure a smooth, secure data import from Snowflake to Insider One.

  • A Snowflake Enterprise or Business Critical account.

  • Permission to create and manage shares in Snowflake. The user setting up the share must have ACCOUNTADMIN access.

  • Access to the schema and tables that include user and event data.

Set up the Snowflake integration

If you want to integrate more than one Snowflake account into the same Insider One panel, please reach out to the Insider One team.

Follow the steps below to authenticate your Snowflake account and set up your data sync.

  1. Navigate to InOne > Components > Integrations > External Integrations.

  2. Click on the Snowflake integration.

  3. Enter a name for your Snowflake integration and click Save.

  4. Enter your Snowflake Account Identifier and Warehouse Name.

  1. To find your Snowflake Account Identifier, go to Snowflake > Account Details and copy the first part of the Account/Server URL.

  2. To get your Warehouse name, go to Snowflake > Compute > Warehouses and enter the Warehouse name that you want Insider One to use.

The size of the warehouse determines throughput. For large, initial loads (where you have a high volume of data), we advise to scale up the warehouse to maximize parallel processing and achieve the fastest possible ingestion time

Be sure that you add the IPs below to the IP white list in your Snowflake Account:

  • 54.75.24.135

  • 3.248.74.75

  • 99.80.200.102

  1. After you enter the Authentication inputs, scroll down to Script and Key Setup.

  1. To create a Private Key and a Public Key, run the script below on your local machine terminal. Then, two files will be created.

    openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt 
    
    openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
  1. Upload this file: rsa_key.p8

    If you create with a different command in the terminal, which creates a private key with a Passphrase, you can use the Enter Passphrase input field. If your file requires a passphrase, the input field will automatically open.

  2. Run an SQL in Snowflake. Make sure you replace the <DB>, <SCHEMA>, <STREAM> and <PUBLIC KEY> placeholders with your actual values.

Important:

  • When replacing <RSA_PUBLIC_KEY>, use only the raw key value. Do not include the lines:

    -----BEGIN PUBLIC KEY-----

    -----END PUBLIC KEY-----

  • You should paste only the actual key content, for example:

    ABCDE1235…

Important:

  • The Stream you grant to Insider One must be dedicated exclusively to Insider One and must not be used by any other integration or system. If another system also uses this Stream, Insider One will not be able to retrieve the all changes from Snowflake .

  • If you haven’t yet created a Stream for the table you are sharing with Insider One, refer to Snowflake documentation to create a dedicated Stream for Insider One.

  • Insider One automatically selects the Stream associated with a table. Therefore, the table you want to sync should only have one Stream, and that Stream must be the one created specifically for Insider One.

  1. After you run all the SQL successfully in the Snowflake side, click the Verify Authentication button to verify your authentication.

  2. After verification, select the database, schema, and table you want to sync. If you’ve made any changes in Snowflake, click Refresh to load the latest structure.

  3. After selecting the table, you will be able to match the columns with Insider One’s attributes, events, and event parameters.

  1. First, select the identifiers you want to send to Insider One. Data will be imported using the identifiers you choose. You may select more than one identifier. For example, if some of your users have only a phone number and others have only an email address, it is recommended to select both so that Insider One can match as many users as possible. However, it is essential to note that if the email or phone number for the same user in Insider One does not match the values you send from Snowflake, an identifier conflict will result.

  2. If you want to send attributes next to the identifier from Snowflake, you can open the Sync Attributes and map the columns in Snowflake to the Insider One Attributes.

  3. To map the Events and Event parameters from Snowflake, you can open Sync Events.

Refer to Default Attribute, Event & Parameter Data Mapping Table for required event parameters.

  1. After completing the matching step, proceed to the Launch step. Choose how often you want the data to sync—every 15 minutes or up to once daily. Set the activation status to Active and click Save as Active.

Data Type Mapping

Ensure that the Insider One and Snowflake data types match. You can refer to the table below for data type matching:

Snowflake Data Type

Insider One Data Type

Notes

VARCHAR, TEXT

String

Used for text attributes, identifiers, and event parameters.

NUMBER, INTEGER, DECIMAL, FLOAT

Number

Used for numerical attributes (e.g., a_age, e_quantity, e_unit_price).

BOOLEAN

Boolean

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

TIMESTAMP, TIMESTAMP_LTZ, TIMESTAMP_NTZ, TIMESTAMP_TZ

DateTime

Insider One automatically converts any datetime format accepted by Snowflake. RFC3339 format is recommended for consistency.

ARRAY (of strings)

Array

Used for properties like e_taxonomy. Ensure the array contains simple string values.

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. The 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 One campaigns, data collection, and processing:    

-False = user will not see any Insider One 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 time; no other time offset is included. Snowflake 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 the 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

Purchase Event

If you have purchase event in your Snowflake 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 Snowflake 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 all default events and attributes.

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

Limitations

  • Each table must include an identifier.

  • Custom attributes or event parameters must be predefined in Insider One (see 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.

Data Import Logic

During the Snowflake → Insider synchronization:

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

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

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

FAQ

Q: Do I need to be on a specific Snowflake plan?
A:
Yes, either Enterprise or Business Critical.

Q: What permissions are required in Snowflake?
A:
You must have ACCOUNTADMIN privileges and access to relevant schemas and tables.

Q: Can Insider One access data in a different region?
A:
Yes, but you need to enable cross-region replication.

Q: Can I share multiple tables with Insider One?
A: Yes, you can share multiple tables with Insider One.

Q: What happens if I include custom attributes or events?
A:
They must be created first in Insider One’s Events & Attributes page and mapped in the Match page.

Q: Can I send purchase events with multiple products?
A:
Yes. Add each product as a separate row and use the event_group_id (e_guid) to link them to the same cart.

Q: How should I format dates (like a_birthday and e_timestamp)?
A: If your data type in Snowflake is a TIMESTAMP format, the specific date format is not critical. Insider One automatically converts any datetime format that Snowflake accepts. For example, 1993-03-12T00:00:00Z is a valid RFC3339 format, but Insider One can also process other standard Snowflake datetime formats.

Q: How can I delete a user attribute or an entire user profile?
A: The Snowflake integration performs data synchronization based on updates and additions. It does not support explicit "delete" operations for user attributes or entire user profiles within Insider One. If a record is deleted in your Snowflake table, it will not automatically trigger the removal of that data from Insider One during the next sync. To delete user data in Insider One, you can use Insider One's dedicated user deletion features or contact Insider One team.

Q: Under what conditions does a Snowflake stream become “stale”?
A: A stream becomes stale when its “offset” falls outside the data-retention period of its source table (or underlying tables for a view). At that point, historical data — including any unconsumed change records — is no longer accessible, and you must recreate the stream to resume change capture. Refer to Snowflake’s documentation for more information.