Intro
Cloud Integrations let you connect Domo directly to your Snowflake data—without moving it. Your data stays governed and secure in Snowflake, while Domo gives you powerful tools to explore, transform, and visualize it. Use this guide to set up the integration, including read/write access and OAuth configuration.Architectural Overview

Prerequisites
A Snowflake Cloud Integration setup consists of two parts: read-only or read/write. After the read-only setup is complete, you may begin using virtual tables that read from Snowflake to create cards, set up Alerts, or serve as inputs in Magic ETL flows. You can set up read-only and return later to set up the write portion. Before setting up the Snowflake connection, complete the following:- Create a Snowflake service account — Create a new Snowflake account specifically for this integration. This account must have read access to your default Snowflake environment in order to create virtual Snowflake tables in Domo. For the required permissions, see Snowflake Minimum Permissions for Domo.
- (Optional) Create a Domo service account — Create a new Domo account specifically for this integration. The account role must have the Manage Cloud Accounts and Manage DataSet grants enabled.
Account Creation—Write
Before registering a Snowflake Cloud Integration for the write portion of the setup, you must complete the following:-
Create a default Snowflake database — You need a Snowflake database that is exclusively for Domo to write Domo-managed tables. During setup, this database is the default.
Note: Any tables not managed by Domo in this database are not seen by the Snowflake Cloud Integration.
- (Conditional) Place IP Addresses on an allowlist — If your Snowflake environment restricts access based on IP address, place Domo IPs on an allowlist.
Create or Manage Your Snowflake Integrations
To access the integration management interface:- Navigate to Data Warehouse.
- Select Connect Data.
- Select Snowflake from the list of Cloud Integrations.

- The Domo on Snowflake page appears.
- To create a new integration, select Connect Snowflake and continue to Create a Snowflake Integration.
- To modify an existing integration, select Manage Integrations. The Snowflake cloud integrations list appears. Select the wrench icon next to an integration to see management options based on your access level.


Create a Snowflake Integration

-
In the Name field, enter a label to identify this Snowflake integration in Domo.
The name doesn’t need to match anything in Snowflake and can be changed later. -
(Optional) In the Description field, enter a description to help others understand the purpose of the integration.
This is only visible in the integration details. -
Select an existing Snowflake service account, or select Add account to create a new one.
This account authenticates to Snowflake and determines access to tables. For guidance on creating a service account, see Create a Snowflake Account.

- Select the warehouse to use for querying data.
You can assign multiple warehouses later for optimization or specific use cases.

- Select Finish Setup. When the integration is created successfully, a confirmation screen appears.

Create a Snowflake Account
Every Snowflake integration in Domo relies on an authenticated Snowflake service account. After you create a service account, you can reuse it across multiple integrations. To create a Snowflake service account in Domo:- In the Name field, enter a name to identify the Snowflake service account within Domo.
This name can be changed later.
-
In the Account Identifier field, enter your Snowflake account identifier.
The account identifier is the subdomain that appears before
.snowflakecomputing.comin your Snowflake URL. You can locate it in several ways:- From the Snowflake URL — When you’re signed in to Snowsight, the browser URL takes the form
https://<account_identifier>.snowflakecomputing.com(for example,xy12345.us-east-1.snowflakecomputing.com). The portion before.snowflakecomputing.comis your account identifier. - From Snowsight — In the lower-left corner of Snowsight, hover over your account name to display the account details popover, which lists the account identifier and locator. You can also navigate to Admin > Accounts to view account identifiers for the accounts in your organization.
- From a SQL worksheet — Run
SELECT CURRENT_ACCOUNT();to return the account locator, orSELECT CURRENT_ORGANIZATION_NAME();together withSELECT CURRENT_ACCOUNT_NAME();to return the organization-qualified identifier.
For full details on the available identifier formats, see the Snowflake account identifier documentation.
- From the Snowflake URL — When you’re signed in to Snowsight, the browser URL takes the form
-
Select your authentication method:
-
Key Pair (Recommended)
Snowflake is phasing out single-factor password sign-ins. Key-pair authentication is more secure and future-proof. See their security MFA rollout and key pair auth documentation. Add the public key to your Snowflake user:Replace username and public_key with your actual values. In the Private Key field, upload your private key file (.p8 format). Optionally, enter the passphrase if your key pair includes one.
-
Key Pair (Recommended)

- Username & Password
Enter your Snowflake username and password.

- (Optional) In the Default Role field, enter the Snowflake role to assign to this service account.
If left blank, Snowflake applies the default role configured for the user in Snowflake.
Configure Write & Native Transform
To write data from Domo connectors to Snowflake, or run Magic ETL DataFlows directly in Snowflake, enable one or both of the following capabilities:- Write to Snowflake from connectors — Allows Domo to create and update tables in Snowflake using data loaded through connectors.
- Execute Magic ETL transformations natively — Runs Magic ETL DataFlows directly in Snowflake rather than in Domo’s execution environment.
Prerequisites
A Snowflake administrator (or someone with equivalent privileges) must be available to execute SQL queries that create a dedicated database and grant access to the service account. For the minimum permissions required and the SQL to configure them, see Snowflake Minimum Permissions for Domo.Setup
From your integration’s settings page, navigate to Write & transform and select Set up write & transform.
-
Toggle on the capabilities you want to enable:
- Write to Snowflake from connectors
- Execute Magic ETL transformations natively
-
Select the default Database and Schema where Domo writes data.
If the schema doesn’t exist, Domo creates it when selected in Magic ETL.

- In the Default Role field, enter the Snowflake role Domo uses for write and transform operations.
Domo uses this role to generate the SQL in the next step.

- Have a Snowflake user with the
ACCOUNTADMINrole run the generated SQL to:- Create the write-back database
- Grant access to the service account
- Create a DOMO_UTIL schema for Domo-managed resources
- In the Temporary artifact storage field, specify the database Domo uses for temporary storage during native transform execution.
This can be the same database selected in step 2, or a separate database if you prefer to isolate temporary artifacts.

- On the Finalize Write & Native Transform Integration page, review the permissions Domo requires.
Select I understand that Domo can make changes to my Snowflake environment, then select Done.


Configure OAuth
OAuth allows Domo to query Snowflake data in the context of individual users rather than a shared service account, and is optional. When enabled, users accessing cards or previewing DataSets connected via OAuth are prompted to authenticate with their Snowflake credentials.Prerequisites
A Snowflake administrator (or someone with equivalent privileges) must first configure a security integration in Snowflake.Configure OAuth in Snowflake
-
In Snowflake, modify and run the following query to define the security integration.
Replace name_goes_here with a meaningful name—this name is used in subsequent queries. -
Update
oauth_refresh_token_validityto set how long refresh tokens remain valid:- 1 day = 86400 seconds
- Max = 7776000 seconds (90 days)
- Min = 3600 seconds (1 hour)
-
Run the following query to verify the integration:
-
Run the following query to retrieve the client ID and secret:
- Copy the client ID and secret for use in Domo.
Configure OAuth in Domo
From your integration’s settings page, navigate to OAuth and select Set up OAuth. Select Add OAuth Config… to create a new OAuth configuration.
- In the Name field, enter a name to identify this OAuth configuration within Domo.
-
In the Account Identifier field, enter your Snowflake account identifier.
You can find it under Account > View Account Details in Snowflake. - In the Client ID and Client Secret fields, paste the values retrieved from Snowflake.
- In the Primary Role field, select the Snowflake role to apply to all Domo users.

- Select Connect, then sign in using your Snowflake credentials.
- Review the requested permissions and select Allow to complete the setup.
FAQ
What is the guidance around warehouse configuration in Snowflake for Cloud Integrations?
What is the guidance around warehouse configuration in Snowflake for Cloud Integrations?
How do I use data transformation on my Snowflake data?
How do I use data transformation on my Snowflake data?
-
DataSet Views — DataSet Views provide the Views Explorer tool to create data transformations on your Snowflake DataSets. You can perform operations such as filtering, grouping, aggregation,
JOINs,UNIONs, and creating calculated columns from a graphic user interface. DataSet Views are created as virtual DataSets, with queries sent back to the parent DataSets.Note: Creating a DataSet View in Domo does not create a View (normal or materialized) in Snowflake. The View definition is stored in Domo, and the resulting query is sent to Snowflake table(s) when needed. -
Magic ETL DataFlows — Magic ETL is supported with Domo running on a Snowflake Cloud Integration. Using Magic ETL with Snowflake data results in data being exported from Snowflake to Magic ETL in a transient state, processed, and written back to Snowflake. Domo only operates on this data in a transient fashion and does not store DataFlow outputs in Domo. (They are sent to the Snowflake warehouse.)
Note: Data is cached in the Magic ETL execution environment for seven days, or the two most recent data versions from that Magic ETL execution.
What is the difference between Domo-managed and customer-managed Snowflake DataSets?
What is the difference between Domo-managed and customer-managed Snowflake DataSets?
How are permissions configured between Domo and Snowflake?
How are permissions configured between Domo and Snowflake?
What are the differences between using connectors to create DataSets from Snowflake and using a Snowflake Cloud Integration to create DataSets?
What are the differences between using connectors to create DataSets from Snowflake and using a Snowflake Cloud Integration to create DataSets?
- Leaving data in Snowflake — The key difference is that all Snowflake connectors copy data from Snowflake into Domo, while a Snowflake Cloud Integration leaves the data in Snowflake.
- Bulk create — A Snowflake Cloud Integration lets you look up and bulk select multiple tables to immediately create multiple unique DataSets. To do this with connectors, you would have to configure each DataSet individually with a connector.
My Snowflake view DataSet shows 0 rows, and the Last update remains unchanged, even though there are rows and updates have been made. What could be causing this?
My Snowflake view DataSet shows 0 rows, and the Last update remains unchanged, even though there are rows and updates have been made. What could be causing this?
Snowflake is not allowing me to execute the ALTER USER statement. What am I missing?
Snowflake is not allowing me to execute the ALTER USER statement. What am I missing?
SECURITY/ADMIN Snowflake role.I have uploaded my private key and provided its passphrase, but I am unable to establish a connection. What could be wrong?
I have uploaded my private key and provided its passphrase, but I am unable to establish a connection. What could be wrong?
Troubleshoot
If you experience a problem with your Snowflake Cloud Integration, the following information may help resolve the issue. You can also submit a request to Domo Support.Missing Tables
If you cannot find tables that your account has access to, ensure the table is materialized. Transient or Temporary tables on the Snowflake side cannot be used to create DataSets through a Snowflake Cloud Integration.Setup Problems
If you have problems setting up your Snowflake Cloud Integration, follow the steps below:Check Snowflake Service Account
- Log in to Snowflake with the service account credentials.
- Ensure you can view the default Snowflake Database and query the tables you expect to import.
Assign Correct Role
Ensure that a Snowflake administrator with theACCOUNTADMIN role executes the SQL provided by Domo in Snowflake.