Skip to content
Enterpret Help Center home
InboxAsk a human

Snowflake - Users & Accounts

Updated by Vaishnavi

Sync user and account data from Snowflake into Enterpret so you can analyze feedback with customer attributes such as plan, ARR, and region. Choose a User or Account integration for these records. Feedback ingestion uses a separate Snowflake feedback integration.

Prepare your source tables

Choose the database, schema, and source table or view you want Enterpret to read. The names ENTERPRET_SHARED_DATA, PUBLIC, USERS, and ACCOUNTS below are examples; configure your actual names in Enterpret.

User and account sources require these three columns. A column is not mandatory just because its name begins with ERC_.

Required columnDefinitionRecommended SQL type
ERC_IDThe stable source identifier of the user or account represented by this row. It is not a feedback-record ID.VARCHAR
ERC_CREATED_ATWhen that user or account was created in your source system.TIMESTAMP_NTZ
ERC_ROW_CREATED_ATA stored warehouse timestamp used to select rows for ingestion. Set it when a row is loaded and advance it when the exported row changes.TIMESTAMP_NTZ

Use the uppercase column names shown above, non-empty string identifiers, and non-null SQL timestamp values. We recommend UTC values for TIMESTAMP_NTZ columns and a consistent time-zone convention in your pipeline. Additional business columns such as plan, ARR, region, and tags are optional metadata. Keep one current row per ERC_ID in each export table.

Example tables

These examples are for new export tables. Have your Snowflake administrator select or create the database and schema first, then run the examples with a role that can create tables there. IF NOT EXISTS does not modify or validate an existing table; check an existing table against the required columns before using it.

CREATE TABLE IF NOT EXISTS ENTERPRET_SHARED_DATA.PUBLIC.USERS ( ERC_ID VARCHAR NOT NULL, ERC_CREATED_AT TIMESTAMP_NTZ NOT NULL, ERC_ROW_CREATED_AT TIMESTAMP_NTZ NOT NULL DEFAULT CURRENT_TIMESTAMP(), USER_PLAN VARCHAR, TAGS ARRAY ); CREATE TABLE IF NOT EXISTS ENTERPRET_SHARED_DATA.PUBLIC.ACCOUNTS ( ERC_ID VARCHAR NOT NULL, ERC_CREATED_AT TIMESTAMP_NTZ NOT NULL, ERC_ROW_CREATED_AT TIMESTAMP_NTZ NOT NULL DEFAULT CURRENT_TIMESTAMP(), ACCOUNT_PLAN VARCHAR, ARR NUMBER, TAGS ARRAY );

DEFAULT CURRENT_TIMESTAMP() populates the stored row timestamp on insertion. It does not automatically update the timestamp when another column changes. Your warehouse pipeline must also advance ERC_ROW_CREATED_AT when it updates an exported row. For a view, expose a stored load/change timestamp from its underlying data rather than computing CURRENT_TIMESTAMP() when Enterpret queries it.

Configure the integration and authentication

  1. Open Enterpret, go to Integrations, and add a Snowflake integration.

  2. Choose User or Account. Enter the Snowflake account identifier, database, schema, warehouse, and source table/view name. Create separate User and Account integrations if you want to sync both sources.

  3. Use ENTERPRET_USER and ENTERPRET_USER_ROLE for the default setup. If you use different names, enter both the custom User and Role explicitly in Enterpret.

  4. Save the integration details and copy the public key displayed by Enterpret. This integration uses RSA key-pair authentication; password authentication is not supported.

  5. Have your Snowflake administrator configure a dedicated service user and grant access to the configured source objects, using the template below. Then use Validate Connection to check the setup.

Grant access to the correct source objects

This template is for a new dedicated service user. Have your Snowflake administrator use SECURITYADMIN or an equivalent role with permission to create the user/role and grant the required privileges. Replace YOUR_WAREHOUSE, PUBLIC_KEY_BASE64_FROM_ENTERPRET, and the example database/schema/source names with your configured values before running it. The key value is the public-key body without the PEM BEGIN/END lines. For an existing integration user, have its administrator review the current role and key instead of recreating the user or replacing its key.

CREATE ROLE IF NOT EXISTS ENTERPRET_USER_ROLE; CREATE USER ENTERPRET_USER TYPE = SERVICE RSA_PUBLIC_KEY = 'PUBLIC_KEY_BASE64_FROM_ENTERPRET' DEFAULT_ROLE = ENTERPRET_USER_ROLE; -- Default role is a session preference, so membership is still required. GRANT ROLE ENTERPRET_USER_ROLE TO USER ENTERPRET_USER; GRANT USAGE ON WAREHOUSE YOUR_WAREHOUSE TO ROLE ENTERPRET_USER_ROLE; GRANT USAGE ON DATABASE ENTERPRET_SHARED_DATA TO ROLE ENTERPRET_USER_ROLE; GRANT USAGE ON SCHEMA ENTERPRET_SHARED_DATA.PUBLIC TO ROLE ENTERPRET_USER_ROLE; -- Table source path: grant only the two configured source tables. GRANT SELECT ON TABLE ENTERPRET_SHARED_DATA.PUBLIC.USERS TO ROLE ENTERPRET_USER_ROLE; GRANT SELECT ON TABLE ENTERPRET_SHARED_DATA.PUBLIC.ACCOUNTS TO ROLE ENTERPRET_USER_ROLE;

Grant access only to the source objects you configure. If you sync only Users or only Accounts, grant SELECT only on that source. For a view, use GRANT SELECT ON VIEW in place of the matching table grant. If the sources are in different databases or schemas, grant USAGE on each configured parent.

The role needs USAGE on the warehouse, database, and schema, plus SELECT on the configured Users/Accounts objects. User/account sync does not require a CUSTOMER_FEEDBACK_TICKETS grant. Setting a default role does not replace GRANT ROLE ... TO USER; Enterpret uses the Role configured in its integration settings.

If your Snowflake network policy restricts incoming connections, ask Enterpret Support for the current IP allowlist before connecting.

Check the data and linking

During setup, use Validate Connection. It checks connectivity and the required column names. If a Sample Data Preview is shown, check the returned rows. Successful schema validation alone does not establish that every row has valid identifiers/timestamps or that the sample read succeeded. After the first sync, confirm that expected rows appear in Enterpret. If your source contains rows but the expected preview or synced data is missing, ask Enterpret Support to check the actual integration-user read. A Snowflake administrator can separately check the configured role's read privileges with secondary roles disabled; that check does not test the service user's RSA authentication.

After data syncs, spot-check a few known users/accounts and their metadata. Feedback links depend on the matching fields configured for each source; matching ERC_ID alone is not a universal linking rule. Include the metadata your organization uses for those mappings and confirm the mapping with Enterpret Support.

See Snowflake users & accounts: fields, linking, and validation for field behavior, timestamp handling, and troubleshooting.

Use this context in Enterpret Agent reporting

Ask Enterpret Agent to use the relevant fields, customer attributes, or taxonomy conditions available in your workspace, with an explicit source scope and reporting period. For a daily report, weekly digest, or recurring summary, configure scheduled Agent automations with the same brief and verify the actual scope and output. Use connectors separately when a task needs external context or supported actions; data configuration here does not grant connector access.