Skip to main content

Configure Snowflake Secure Data Sharing

This article covers the steps for Snowflake Secure Data Sharing.

The Snowflake connection lets you enrich BlueConic profiles and groups with Snowflake data and export BlueConic data to Snowflake. With Snowflake Secure Data Sharing, a new data access method leverages Snowflake's Secure Data Sharing capabilities, providing a secure and efficient alternative to traditional import methods that relied on intermediary storage or complex credential management.

For details about the traditional connection, using external storage (Amazon Web Services S3, Google Cloud Storage GCS or Azure Blob Storage) and API-based integration, click here.

Note: To enable Secure Data Sharing for Snowflake, Snowflake has been added as a sub-processor under your existing BlueConic agreement.

For more details, you can review the full explanation, click here.

This feature supports

  • Batch profile import and export (Up to 6 times per day)

  • Batch group import and export (Up to 6 times per day)

  • Batch timeline event import and export (Up to 6 times per day)

  • Delta-based data processing


Before you begin

  • Enable Change Tracking:

    • For Tables:

      • Run the following command to enable change tracking on a table:
        ​ ALTER TABLE <table> SET CHANGE_TRACKING = true

    • For Views:

      • Although Snowflake provides a command to enable change tracking on a view, remember that views are built upon one or more underlying tables. Therefore, ensure that both the view and its underlying tables have change tracking enabled.

      • Run the command below to enable change tracking on a view:
        ​ALTER VIEW <view> SET CHANGE_TRACKING=true

      • Note: Enabling change tracking on the underlying tables is critical because it ensures that all changes captured by the view are fully tracked.

    • By default, Snowflake retains historical data used for change tracking for only 1 day (DATA_RETENTION_TIME_IN_DAYS = 1).

      If your connection runs infrequently: for example, weekly or monthly, then this default won't cover the gap between runs. When the retention period is shorter than your run interval, Snowflake can no longer provide the change history, and BlueConic will perform a full run instead of an incremental one.

      To avoid this, increase the retention period to match or exceed your run interval:

      ALTER TABLE <Schema>.<Table>

      SET DATA_RETENTION_TIME_IN_DAYS = 30;

      Check the current setting with:

      SHOW TABLES LIKE '<Table>' IN SCHEMA <Schema>;

      -- see the retention_time column

      Longer retention increases Snowflake storage costs, since historical data is kept for a longer period.

Note: If you don't see the tables listed in the Import goal, double-check if Change tracking is enabled on each table and view.


Configure Secure Data Sharing

To use Secure Data Sharing in the Snowflake Connection:

  1. Open the Set up and run page of your Snowflake Connection.

Note: We recommend creating a new Snowflake connection instance to test or setup Secure Data Sharing, instead of switching to SDS in an existing connection. Please turn the initial connection off.

2. Under Data access method, choose the “Secure Data Sharing” option.
​


​
If you switch to this option in an existing Snowflake Connection, a pop-up will appear confirming that you wish to make this change.
​

  1. A Secure Data Sharing configuration will appear. Select a Cloud Platform from the dropdown. This should be where your Snowflake instance is hosted: AWS, Azure, or Google Cloud.

  2. Select the geographic region of your Snowflake instance.

Important: Direct Data Sharing is only supported within the same cloud provider and geographic region as your Snowflake account.


Set up import using Secure Data Sharing

Once the cloud platform and region are defined, if you would like to import data from your Snowflake account, do the following steps:

  1. Use the Secure Share Identifier and BlueConic Account, which will populate and look something like:
    ​


    ​

  2. Copy the Secure Share Identifier and set up a share with this exact name in your Snowflake environment.

  3. Copy the BlueConic Account and use it as the unique identifier of the BlueConic Snowflake account to set up the share.

  4. Create the private share. In your Snowflake account, go to Data Products > Private sharing.
    ​

  5. Click Share on the top right, and click on Create a Direct Share.
    ​


    ​

  6. Select a database and the tables and views you want to share with BlueConic. Click Done.
    ​

7. Enter the Secure Share Identifier and add the BlueConic Snowflake account, as shown in the BlueConic UI in step 1. Then click Create Share.

Note: Ensure you have a Snowflake Enterprise Edition or higher for creating shares.

8. In BlueConic, click the Validate configuration button to test that everything works correctly.
​


​

9. When validated, the button will show a checkmark.

Note: If you make any changes to the configuration, the button will reactivate.


Set up export using Secure Data Sharing

Once the cloud platform and region are defined, if you would like to export data from BlueConic to your Snowflake account, do the following steps:

  1. Enter your Snowflake Account locator in the “Your Snowflake Account” textbox; the BlueConic share identifier is automatically populated.
    ​

  2. To find your Snowflake Account Locator, open your Snowflake Account:

    • Go to the account Selector

    • Select View account details
      ​

  3. Copy the Data sharing Account Identifier and paste it in the “Your Snowflake Account” field in the Set up and run page in BlueConic UI.
    ​

  4. Click the “Validate configuration” button in the BlueConic UI.

  5. Save the Connection.
    ​


Configure batch group import

1. Click Add goal in the lower left panel and select Import groups into BlueConic

2. Select the location of the data in Snowflake.
Here, you can tell BlueConic where to find the data to be imported by selecting your Snowflake database, schema, and table. You can select multiple nested tables to import data from. Use the circular link icon to link tables together through IDs that exist in both tables.

snowflake_location_data2.jpg

3. Link identifiers between Snowflake and BlueConic.
​
To match group data between the two systems, enter the identifier used in Snowflake. Use the "Allow creation..." checkbox to allow BlueConic to create new groups for data that does not match an existing BlueConic group.

4. Map Snowflake data into BlueConic group properties.
​
Match Snowflake fields on the left with BlueConic group properties on the right. Use the dropdown at the right to select how imported content should be added to existing values:

  • Set

  • Set if empty (if the group property is empty)

  • Set or clear (if the Snowflake field is empty, allow to clear)

  • Add the data field to the list of existing values

  • Sum a number with the existing values (if the data field is a number.)

Use the Add mapping button to create additional mapping rows. You can add multiple mapping rows at once with the "Add remaining fields" option. BlueConic detects the remaining Snowflake fields and matches them with BlueConic group properties. You can set the merge strategy for imported field (set, set if empty, set or clear, add, sum) and also provide a custom prefix to the names of BlueConic profile properties (optional).


Configure batch profile import

  1. Click Add goal in the lower left panel and select Import profiles - Batch

  2. Select a BlueConic domain group. Only profiles in the domain group you select will be added or updated.​

  3. Select the location of the data in Snowflake. Here, you can tell BlueConic where to find the data to be imported by selecting your Snowflake database, schema, and table. You can select multiple nested tables to import data from. Use the circular link icon to link tables together through IDs that exist in both tables.
    Ensure that change tracking is enabled.

    ​

    snowflake_location_data2.jpg
  4. Link identifiers between Snowflake and BlueConic.
    To match customer data between the two systems, enter one or more customer identifiers. Use the dropdown menu in the BlueConic field to select either the BlueConic profile identifier or a profile property.
    ​

    How to link customer identifiers between Snowflake and BlueConic

    Use the "Allow creation..." checkbox to allow BlueConic to create new profiles for data that does not match an existing BlueConic profile.

  5. Map Snowflake data to BlueConic profile properties.
    Match Snowflake fields on the left with BlueConic profile properties on the right. Use the dropdown at the right to select how imported content should be added to existing values:

    1. Set

    2. Set if empty (if the profile property is empty)

    3. Set or clear (if the Snowflake field is empty)

    4. Add the data field to the list of existing values

    5. Sum a number with the existing values (if the data field is a number.) Use the Add mapping button to create additional mapping rows. You can add multiple mapping rows at once with the "Add remaining fields" option. BlueConic detects the remaining Snowflake fields and matches them with BlueConic profile properties. You can set the merge strategy for imported field (set, set if empty, set or clear, add, sum) and also provide a custom prefix to the names of BlueConic profile properties (optional).
      ​

      How to map data fields while importing customer data from Snowflake to the BlueConic CDP
  6. Optional: Import events to the BlueConic Timeline
    Click Import data into BlueConic events, select a BlueConic timeline event type, and map the correct Snowflake fields into the corresponding BlueConic Timeline event properties.
    ​
    ​

    snowflake_timeline_event.jpg

Configure batch group share

  1. Click Add goal in the lower left panel and select Share groups

2. Select a location in Snowflake for the export.
​
Select the Snowflake database, schema, and table to export group data to (or create new ones here). Note: If you set the export goal to use a predefined Snowflake table, BlueConic will try to merge the new values into the existing table without rewriting, overwriting fields defined in the mapping, or adding new rows.

How to select a Snowflake database, schema, and table for exporting customer data to Snowflake from BlueConic

3. Link identifiers between BlueConic and Snowflake.
​
Here, the identifiers between BlueConic groups and Snowflake fields are matched. It is not editable. You can optionally choose to let BlueConic create new records in Snowflake if no existing match is found.

4. Map BlueConic data to Snowflake.
​
Match the BlueConic data fields you're exporting to Snowflake fields.


Configure batch profile share

  1. Click Add goal in the lower left panel and select Export profiles

  2. Select a BlueConic segment for the export. Only profiles in this segment that have matching identifiers in Snowflake will be exported.
    ​

    How to select a customer segment to export to Snowflake from BlueConic
  3. Select a location in Snowflake for the export.
    Select the Snowflake database, schema, and table to export profile data to (or create new ones here). Note: If you set the export goal to use a predefined Snowflake table, BlueConic will try to merge the new values into the existing table without rewriting, overwriting fields defined in the mapping, or adding new rows.
    ​

    How to select a Snowflake database, schema, and table for exporting customer data to Snowflake from BlueConic

  4. Link identifiers between BlueConic and Snowflake.
    Here, you match identifiers between BlueConic profiles and Snowflake fields. You can optionally choose to let BlueConic create new records in Snowflake if no existing match is found.
    ​

    How to link unique customer identifiers between the Snowflake database, schema and table with BlueConic
  5. Map BlueConic data to Snowflake.
    Match the BlueConic data fields you're exporting to Snowflake fields. In each mapping row (created via the Add mapping button), select the type of information you want to export by clicking the BlueConic icon and choosing one of these options from the dropdown:

    1. Profile property: The value of a specific profile property.

    2. BlueConic profile identifier: The unique identifier for a profile.

    3. Associated segments: All segments, or a selection of one or more specific segments that the profile is associated with.

    4. Associated lifecycles: All lifecycles this profile is associated with.

    5. All viewed interactions (all time): The interactions that the profile has seen.

    6. Permission level: The permission level set in the profile.

    7. Text value: Any static text
      ​

      snowflake_map_data_dropdown.jpg
  6. Optional: Export BlueConic Timeline events to a Snowflake table
    To create a new set of mappings, click the Export events to Snowflake button. Here, you select a table from Snowflake, select your BlueConic Timeline event type, and then map your Timeline events on the left with Snowflake fields on the right. Additional mappings let you export BlueConic profile property data with your event data. (Note: If you have installed data processors in your tenant, the processor(s) you select in step 3 can filter or transform your event data.)

    1. Tip: To help manage the amount of event data exported, choose a time period for the events you want to export through the Timeline period section at the bottom of this step.
      ​

    snowflake_timeline_events3.jpg

Running the connection

  1. Turn the Snowflake connection on in the right upper corner

  2. Go to the Setup and run page. Scroll down to the Run history section. This table shows all past and scheduled runs for the connection.

  3. To start the import and export manually, save your settings and select Run now.

  4. To schedule the import and export, select the Settings icon. Choose how to schedule the import by choosing an option from the drop-down list:

    1. Number of times per day

    2. Days of the week

    3. Days of the month

    4. Weekday of the month

Tip: Make sure you have added Import and/or Export goals and saved your settings before running the connection.


Use Snowflake connections with BlueConic Lifecycles

You can add Snowflake profile share goals as touchpoints in BlueConic Lifecycles. Here are some key points to consider:

  • Exporting Lifecycle stage information to Snowflake: When you add a Snowflake share profile goal to a BlueConic Lifecycle, you can use that share goal to send a list of profiles that attain a certain lifecycle stage along their customer journeys and use this information for campaigns.

  • Setting Lifecycle stage restrictions: You can restrict a connection goal to export only the profiles that are currently part of a certain lifecycle stage.


FAQ

General and pricing

What is Snowflake Secure Data Sharing (SDS)?

Secure Data Sharing is Snowflake's native, account-to-account sharing mechanism. With SDS you share tables and views directly from your Snowflake account with a BlueConic Snowflake account. You don't need to set up a storage provider (S3, GCS or Azure Blob Storage) or share Snowflake credentials with BlueConic.

How does it work?

For imports, you create a direct share in your Snowflake account and add the tables or views you want BlueConic to read. BlueConic reads those objects through a read-only, zero-copy share, processes the changes, and imports them into your BlueConic tenant based on the run schedule. For exports, BlueConic shares tables with your Snowflake account, so you can query BlueConic data directly from your own account.

"Zero-copy" applies to the Snowflake-to-Snowflake layer (your account and BlueConic's account). The data is still imported into BlueConic's profile store so it can be used for segmentation, activation and analysis.

Is SDS mandatory?

No. You can choose between the traditional Snowflake connection (batch import and export through an S3, GCS or Azure Blob Storage stage, authenticated with credentials) and Secure Data Sharing. We recommend setting up SDS in a new connection rather than switching an existing connection to SDS.

What are the main benefits compared to the traditional connection?

  • No staging bucket, intermediary file transfers or Snowflake credentials to manage.

  • A more restrictive access model: BlueConic can only access the objects you explicitly share. With credentials, BlueConic can technically reach everything the authenticated role has access to.

  • Incremental (delta) imports after the first run, instead of a full import on every run.

  • Lower compute costs in your own Snowflake account, because BlueConic runs the processing on its side.

Why is Snowflake Secure Data Sharing a paid feature?

When you use SDS, BlueConic runs and pays for the Snowflake compute needed to process your import and export runs. This compute isn't drawn from your own Snowflake environment or billed to your Snowflake account. Since BlueConic covers those compute costs on its side, SDS is offered as a paid add-on rather than being included by default.

Is a free trial available?

Yes, a free trial is available before committing to a paid plan.

Is SDS secure?

  • BlueConic can only access the tables and views you explicitly add to the share.

  • Shared objects are read-only for BlueConic.

  • Access is governed by Snowflake role-based access control (RBAC), and you can revoke the share at any time.

  • No Snowflake credentials or storage credentials are shared with BlueConic.

Where is the shared data located on the BlueConic side?

If your tenant runs on a dedicated BlueConic cluster, the data is read into a dedicated, BlueConic-owned Snowflake account. If your tenant runs on a shared BlueConic cluster, BlueConic uses one Snowflake account per cloud provider and region, and each customer's data is isolated at the database level. The BlueConic Snowflake account is separate from your own Snowflake environment. For more information, see Snowflake sub‑processor change to support Secure Data Sharing.

Setup and requirements

Do I need anything enabled before I can set up the connection?

Yes. SDS must be enabled for your tenant. Contact your Customer Success Manager to enable it.

Which Snowflake edition do I need?

Your Snowflake account must be Enterprise Edition or higher. Enterprise Edition is required to create shares and to set a data retention period longer than 1 day. BlueConic itself uses Enterprise Edition. If your account runs on Business Critical Edition, you can still use SDS by setting SHARE_RESTRICTIONS = FALSE on your share.

Which cloud platforms are supported?

SDS supports Snowflake accounts on AWS, Azure and Google Cloud. The cloud platform and region of your Snowflake account must match the BlueConic Snowflake account exactly, because Snowflake direct shares work within the same cloud and region. You provide your cloud platform and region when you set up the connection.

Why does the share name need to match exactly?

BlueConic finds your share by its name. The share must use the exact share identifier shown in the connection (for example TO_BC_7FADAFE1_DEA3_48BB_AA27_906B5E4F20AB). A share with any other name, such as BLUECONIC_TEST_SHARE, can't be found, and validation fails with "Cannot connect to share".

Which account locator format should I use?

Use the account locator itself (for example WAC50505), not the OrgName.AccountName format. Snowflake's documentation mentions the newer format, but direct shares still require the account locator.

Can the share identifier change?

The share identifier only changes when the connection's cloud platform or region changes. If that happens, create a new share using the new identifier.

Imports

Why do I need to enable change tracking?

SDS imports only what changed since the previous run, and it uses Snowflake change tracking to detect those changes. If change tracking isn't enabled on a shared table or view (and on the tables underneath a view), the object doesn't show up as available in the import goal.

Can I share a view that references another database?

No. Cross-database references don't work with SDS. Instead, create a table in the shared database that you keep up to date (for example with a scheduled MERGE), and enable change tracking on it. Avoid CREATE OR REPLACE on shared tables: it resets change tracking and triggers a full import.

How do I import a multi-value field?

Use a Snowflake ARRAY column, or a VARIANT that contains a JSON array. A STRING column is imported as a single value.

Are imports incremental?

Yes. The first run is a full import. After that, each run imports only the changes since the last successful run. BlueConic falls back to a full import when:

  • The mapping, goal configuration or table structure changed.

  • The time between runs is longer than the change history Snowflake keeps for the table.

  • Change tracking was disabled and enabled again.

  • A previous run was interrupted or stopped before it completed.

Avoid frequent mapping and schema changes on large tables, since each one triggers a full import.

What happens if the time between runs is longer than my table's retention period?

Snowflake keeps change history for the table's data retention period (Time Travel). If the time since the last successful run is longer than that period, BlueConic can no longer read all changes and performs a full import instead. For connections that run infrequently, set the retention period longer than the longest expected interval between runs, as described in the "Before you begin" section of this article. A longer retention period increases storage usage in your Snowflake account. See the Snowflake documentation on data retention periods.

Are there any limitations for Secure Data Sharing imports?

Yes, there are several limitations to be aware of:

  • Deletes for profiles and nested timeline events are not fully supported.

  • Schema changes trigger a full import. New columns must be mapped before they are imported.

  • Geospatial data types are not supported.

  • Nested timeline events may overwrite incorrectly if identifiers are not mapped properly.

  • Cross-database references are not supported.

Is there a limit on table size?

There is no hard limit on table size or number of rows. For large volumes:

  • Filter, join and deduplicate in Snowflake, and select only the columns you need.

  • Share one purpose-built table or view instead of several large raw tables.

  • Increase the retention period for tables that are imported infrequently.

Typical initial-import throughput is about 1.5 million profiles per hour. Actual speed depends on the size of each profile and the number of timeline events.

Can I designate a specific Snowflake virtual warehouse, or use query tagging?

With SDS, BlueConic reads the shared objects with compute in BlueConic's Snowflake account, so no warehouse in your account is used for these reads. Query tagging is not supported.

Exports

How do exports behave with enabled vs. disabled connections?

Exports are incremental when the connection is enabled. BlueConic tracks changed and deleted profiles and timeline events, and writes only those changes. A full export (truncate and re-export) runs when:

  • The connection is disabled. Deletes are only tracked while the connection is enabled, so if you run the connection manually while it is disabled, it triggers a full export instead of an incremental export.

  • A column or mapping changed.

  • The previous run failed.

  • Another goal that writes to the same table was marked for a full export or truncate.

Are data processors supported for Secure Data Sharing?

No. Data processors are not supported for imports or exports when using Snowflake Secure Data Sharing.

Troubleshooting

How can I monitor the status of my Snowflake connection?

You can track the status of your connection using the run log and email notifications. The Run history table shows all past and scheduled runs for the connection. In the details column, you can also see the last five created or updated profiles, along with links to their profile identifiers. This helps you verify how and whether profiles were updated correctly.

Validation fails with "Cannot connect to share". What should I check?

  • The share name matches the BlueConic share identifier exactly.

  • The share is a direct share, created via Data Products → Private sharing → Create a Direct Share.

  • The account locator is in the locator format, not OrgName.AccountName.

  • Your Snowflake account is on the same cloud platform and region as selected in the connection.

  • Change tracking is enabled on the shared tables and views.

Why doesn't my table or view show up in the import goal?

Check that change tracking is enabled on the object (and on the tables underneath a view), and that a view doesn't reference another database.

Did this answer your question?