Skip to main content
Connect Snowflake

Automatically populate Rally and stay updated by syncing contacts and data directly from Snowflake into Rally.

Sophie avatar
Written by Sophie
Updated over a month ago

πŸ’‘ Snowflake is an enterprise feature. Contact your Rally Sales Rep to enable!

Using Rally's Snowflake integration can provide significant value to your team and broader organization by seamlessly connecting, syncing, and updating data from Snowflake to Rally. Automatic data syncing every 24 hours reduces manual efforts and ensures data consistency. By configuring sync settings and Property mappings, you can tailor the integration to meet your specific needs. Additionally, the ability to manage the integration settings, start manual syncs, pause/resume syncing, and disconnect the integration provides flexibility and control over the data flow between Rally and Salesforce, enhancing efficiency and productivity.

This integration can automatically sync rich product usage data from Snowflake to each of your participant's profiles every 24 hours when set to pull in data such as specific features used, last logged in, etc.

  • Benefits for Researchers β€” With enriched Snowflake data in Rally, researchers can create super targeted, niche segments of users + panels in Rally to recruit the best fit customers for research on-demand β€” without relying on data science teams.

  • Benefits for Data Science Teams β€” No longer required to fulfill research requests / run SQL queries to pull lists of customers to help researchers recruit for research.

    • For some of our customers, the time spent on recruiting for a Study dropped from 4 weeks to just minutes after connecting Snowflake to Rally.

How does the Snowflake Integration work?

Rally connects to your Snowflake instance through a standard OAuth connection to a Snowflake user.

After setting up a connection with Snowflake, you can set configuration settings and create Property mappings between Rally Properties and Snowflake Properties. Each of these Properties can be configured per Property to sync data from Snowflake β†’ Rally.

Once your Snowflake account has been connected and the integration has been configured, Rally will automatically sync data between Rally and Snowflake every 24 hours. You can pause the automatic syncs, delete the connection, or start a manual sync at any time by managing your Snowflake integration in Rally > Settings > Connected Apps.

When syncing, Rally uses the email address of the person to map data between Snowflake and Rally. If an email address from Snowflake is not detected in Rally, Rally will either ignore or create a new person in Rally depending on how you configured the integration.

🚨 Snowflake refresh tokens expire after 90 days by default, but the Snowflake account administrator can request Snowflake to increase refresh token timeout.


Required User Permissions

🚨 Before configuring your Snowflake Integration with Rally, ensure you have the correct user permissions in both accounts.

Rally User Permissions

In Rally, you’ll need to be an Ops Manager, Developer, or Admin role type.

Snowflake User Permissions

Rally connects to your Snowflake instance through a standard OAuth connection via an individual user account. The Snowflake user will need to have at least the Snowflake user role of "Account Administrator" to set up new OAuth integrations.

Request Snowflake Refresh Token Timeout Increase

🚨 By default, Snowflake expires its refresh tokens after 90 days. A refresh token is an OAuth 2.0 object that allows an access token to renew. After the refresh token expires, the associated access token can no longer be used and a new access token must be created. This requires action in both Rally and Snowflake.

The Snowflake account administrator can request Snowflake Support to increase the refresh token timeout with the below consent request explained in the Snowflake FAQ.

<Your Organization's name e.g. ABC Ltd.> is requesting Snowflake extend the OAUTH_REFRESH_TOKEN_VALIDITY parameter

value to be set to a value of <1 year (31622400 in seconds) or lower value> for their account. This allows <ABC Ltd.> to set

the OAuth refresh token timeout to as long as <1 year> for the OAuth integrations defined in their Snowflake account.

Snowflake recommends a shorter duration for the OAuth refresh token timeout as a security best practice. <ABC Ltd.> acknowledges

that setting the OAuth refresh token timeout to <1 year> creates a risk that the client application can renew the user's session

during extended refresh token time period without user's involvement.

If you do not change the default timeout for refresh tokens, Rally strongly recommends setting a reminder to update your Snowflake access token every 90 days. If the refresh token expires, data syncs that use the Snowflake access token will stop until the access token is updated.

πŸ’‘ To reconnect, see the Manage the Snowflake Integration section below.


Set Up the Snowflake Integration

After you have the correct User Permissions, you can set up your Snowflake integration with Rally.

1. Connect Snowflake to Rally

  1. In the top right corner of Rally, select your user icon and select 'Settings'.

  2. From the sidebar, select 'Connected Apps'.

  3. To the right of Snowflake, select 'Connect' and follow the steps below.

There are 3 steps to connecting Snowflake to Rally:

  1. Create an OAuth integration for Rally.

  2. Create a Role for the Rally integration to use.

  3. Configure the account URL, client ID, and client secret.

First, log into Snowflake and run the provided query to create an OAuth integration for Rally.

CREATE OR REPLACE SECURITY INTEGRATION RALLYUXR 
type = oauth
enabled = true
oauth_client = custom
oauth_client_type = 'PUBLIC'
oauth_redirect_uri = 'https://app.rallyuxr.com/auth/snowflake'
oauth_allow_non_tls_redirect_uri = true
oauth_issue_refresh_tokens = true
oauth_refresh_token_validity = 7776000; --Use oauth_refresh_token_validity=31622400 if requested for refresh token timeout increase

Second, you must create a Snowflake Role for the Rally OAuth integration to use using the provided query. When running this command, make sure to enter the warehouse, database, schema, and table that Rally can read from.

CREATE ROLE IF NOT EXISTS RALLY_ROLE; 
GRANT ROLE RALLY_ROLE TO USER <current-user>;

--Grants read_only access to a single table
GRANT USAGE ON WAREHOUSE test_warehouse TO ROLE RALLY_ROLE;
GRANT USAGE ON DATABASE test_db TO ROLE RALLY_ROLE;
GRANT USAGE ON SCHEMA test_db.test_schema TO ROLE RALLY_ROLE;
GRANT SELECT ON TABLE test_db.test_schema.test_table TO ROLE RALLY_ROLE;

Finally, you must retrieve the Account URL, Client ID, and Client Secret, enter them into Rally, and click "Connect".

Query for retrieving the Account URL:

SELECT CONCAT('https://', t.value:host::varchar) as account_url FROM TABLE(flatten(input => parse_json(SYSTEM$ALLOWLIST()))) as t WHERE t.value:type::varchar = 'SNOWFLAKE_DEPLOYMENT';

Query for retrieving the Client ID & Client Secret:

select system$show_oauth_client_secrets('RALLYUXR');

2. Configure the sync

After Snowflake is connected to Rally, carefully configure the following sync settings.

  • Create new people in Rally during sync.

    • When selected, all Snowflake contacts that don't exist in Rally will be created in Rally. Rally uses the record's email to check if a contact exists.

  • Delete people in Rally if deleted in Snowflake.

    • When selected, any contacts deleted in Snowflake will automatically be deleted in Rally during the next daily sync.

As noted before, Rally will check the person's email address when determining whether to create a new contact or delete a contact in Rally.

🚨 The sync preference to automatically "delete people in Rally if deleted in Snowflake" is hidden by default and can be added to your workspace by contacting Rally. This is hidden by default to avoid issues with active or historical Participants accidentally being deleted from Rally.

3. Map Fields Between Rally and Snowflake

Next, map Snowflake fields to Properties in Rally and select the sync direction.

πŸ’‘ The Identifier Field is a unique string field used to map a Salesforce contact to a person in Rally. Only Unique Properties in Rally (such as email or username) can be used as an identifier field.

Property Mapping

Rally currently supports mapping the following field types from Snowflake to Rally:

Snowflake Field Type

Rally Field Type

array

multi-select*

boolean

boolean

number/int/double/float/decimal

number

string

text

data, datetime

date

We only map up to 100 unique Property options per multi-select Property.

Property Level Sync Direction

Because Rally has read-only access to your Snowflake instance and cannot update data in Snowflake, only one sync direction is supported: Snowflake β†’ Rally.

Snowflake to Rally

This will sync data from Snowflake to Rally using the Contact or Lead’s email address to find people in Rally. The sync will use the value from Snowflake to set the value in Rally. If a value for this Property already exists in Rally, it will be overwritten by the value in Snowflake. If a value was deleted or removed in Snowflake, it will be removed in Rally.


Manage the Snowflake Integration

  1. In the top right corner of Rally, select your user icon and select 'Settings'.

  2. From the sidebar, select 'Connected Apps'.

  3. To the right of Snowflake, select 'Manage'.

Update your sync configurations at any time, and view a table of all previous syncs with a link to which people had data updated during the sync. You can also take the following actions:

Start Manual Sync

This will kick off a sync immediately, rather than waiting for the next sync interval.

Pause/Resume

This will pause your data from syncing between Rally and Salesforce until you select 'Resume'.

Disconnect

This will disconnect Rally and Snowflake and prevent any more syncs from occurring.

Reconnect
This option is only visible when data sync connection is disconnected. This will reinitiate the OAuth flow using the existing configuration. You can use this to update your refresh token and reset the expiry, without needing to reconfigure the entire connection.

Did this answer your question?