---
title: "Zentrik + Snowflake"
canonical_url: https://zentrik.ai/docs/integrations/snowflake
markdown_url: https://zentrik.ai/docs/integrations/snowflake.md
category: "Integrations"
learning_track: null
last_reviewed: 2026-10-29
---

# Zentrik + Snowflake

Use the conversations and feedback in your warehouse as evidence for product decisions.

## Overview

A workspace owner or administrator connects a dedicated Snowflake service user. Select a view, map its fields, preview records, then test and activate a saved import. Imports run on demand and use your Snowflake warehouse.

## Connect Snowflake

1. Open **Settings → Sources**, find **Snowflake** in the catalog, and open its setup page.
2. Enter the account identifier and hostname, a new service user, a dedicated read-only role, and a warehouse. Use a small warehouse with automatic suspension and a query timeout.
3. Choose **Create public key**. Ask a Snowflake administrator to run the displayed setup SQL. Zentrik keeps the encrypted private key on the server.
4. Choose **Test connection**. After it succeeds, choose **New import**.

Use a separate service user for each connection. Do not grant administrator roles or permission to write source data. This integration supports public Snowflake account endpoints; private connectivity requires a separate setup.

See Snowflake's [key-pair authentication guide](https://docs.snowflake.com/en/user-guide/key-pair-auth).

## Map and import evidence

1. Enter the database, schema, and view or table. Under **Grant access to this source**, choose the object type and copy the SQL for your Snowflake administrator. Grant access only to the approved object.
2. Choose **Read columns** and review the suggested mappings. Each row needs a stable string ID, last-updated timestamp, evidence text, title, event timestamp, and Boolean deletion flag. Timestamps must include a time zone. JSON or nested source data should be converted into these fields in the view.
3. Give the dataset a stable identity. Keep it unchanged if the view moves. Choose the type of evidence and an optional product.
4. Choose **Preview evidence**. Check the sample text and dates. Preview reads up to five records and creates no Signals.
5. Save the import, test its saved definition, then activate it. Run it when ready. The run receipt records import outcomes and links to Discovery results; analysis can continue after the source import completes.

The first run reads records updated within the chosen one-, three-, or seven-day window. This is the source update date, not the conversation date. Later runs include a 48-hour overlap and leave five minutes for upstream writes to settle. Each run allows up to 1,000 records and 64 MiB of decoded results; each evidence body allows 1 MiB. An oversized result stops without advancing coverage. Use an approved view with a smaller source scope when necessary.

Keep complete records and explicit deletion rows available throughout the overlap. Physical deletion or late updates outside that window cannot be inferred from a missing row. This version imports evidence text; it does not import arbitrary event tables, account metrics, files, or warehouse write-back.

## Updates and deletions

Use the same record ID and increase its last-updated timestamp for a correction. Zentrik updates the existing Signal, withdraws its previous extracted evidence, and processes the new revision. A conflict with a person's source-text edit stops that item for review. A timestamp-only change does not create duplicate evidence.

For deletion, keep the ID and updated timestamp and set the deletion flag to true. Zentrik removes the imported source body and extracted quotes, withdraws their support, and retains a suppression record to prevent an older source replay from restoring them. Deleting the imported Signal in Zentrik also suppresses future import of that source identity.

Human decisions and their links remain for review. Check related work when supporting evidence changes. Retained human-authored documents or exports are separate records; source withdrawal does not rewrite them.

Retry a failed saved run from its receipt. The retry keeps its saved coverage window and source request identity where possible. If Snowflake confirms the statement failed, repair its source access or configuration first; retry then submits a new read for that same window. If Snowflake's result has expired, Zentrik also reads that same window again and records the new snapshot. Coverage advances only after all source writes and analysis handoffs succeed.

## Data and access

- Imported text leaves Snowflake and is stored and analyzed in Zentrik. Choose a view whose data may be shared with the destination workspace and processed by its configured AI services. Snowflake row permissions do not become per-record permissions in Zentrik.
- Zentrik issues generated read queries for the selected object and column metadata. Query limits bound returned data; they do not guarantee a fixed Snowflake compute cost.
- Stored source files and their retained versions enter a cleanup queue when withdrawn. Storage failures are retried; they do not restore the source to analysis.
- To rotate the service key, choose **Replace public key**. Install the displayed key in the unused Snowflake key slot, then choose **Test and activate key**. A failed test keeps the working key active. Remove the old key in Snowflake after activation.
- **Disconnect** removes Zentrik's saved credentials. Imported evidence and saved imports remain. Revoke the service user or its grants in Snowflake to remove its access there.

## Troubleshooting

### The connection test fails

Check the account hostname, service user, public key, role, and warehouse grant. Use the role and user named on the connection page.

### No columns or records appear

Check exact object names, source grants, update timestamps, and the five-minute settling delay. An empty result is not a deletion signal.

### An import stops at the limit

Narrow the approved view. Retry the saved run after the source scope is corrected; do not delete the saved run to bypass its coverage window.

### A source record cannot be updated

Check for duplicate IDs, a reused timestamp with different content, or a person editing the imported source text. Correct the source or resolve the conflict before retrying.

## Related guides

- [Zentrik + New Relic](https://zentrik.ai/docs/integrations/new-relic)
- [Zentrik + PostHog](https://zentrik.ai/docs/integrations/posthog)
- [Import SurveyMonkey responses](https://zentrik.ai/docs/integrations/surveymonkey)
