Documentation Index
Fetch the complete documentation index at: https://help.statisfy.com/llms.txt
Use this file to discover all available pages before exploring further.
Connect Snowflake with Statisfy
The Snowflake integration lets you import data from your Snowflake warehouse into Statisfy. Author queries in the Statisfy settings UI, preview against your warehouse, and schedule them — sync product usage, account-level custom fields, person-level attributes, or custom objects. Snowflake uses the same self-serve configuration model as the other warehouse integrations. You can find the shared concepts — query types, account resolvers, transformers, schedules, configuration history — in Integration Concepts. This page focuses on what’s specific to Snowflake. Prerequisites:- Admin access to Statisfy
- A Snowflake account with a dedicated user/role for Statisfy
- The user must have
USAGEon a warehouse andSELECTon the schemas/tables you want to sync - Credentials: password or PKCS8 private key
What You Can Import
| Data Type | Description | Use Case |
|---|---|---|
| Product Usage | Time-series usage metrics per account | MAU, API calls, feature usage |
| Custom Fields | Account- or person-level attributes | Health scores, segments, industry, plan tier |
| Custom Objects | Domain-specific records | Subscriptions, deployments, contracts |
Authentication Methods
Snowflake supports two authentication options.Private Key Authentication (recommended)
Private Key Authentication (recommended)
Connect using a key pair instead of a password. Better for production — keys are not exposed during interactive sessions and rotate independently of human users.Required credentials:
- Account identifier (e.g.,
xy12345.us-east-1) - Username
- Private key file in PEM format with PKCS8 encoding
- Passphrase (only if the key is encrypted)
- Default warehouse
- Default database
- Default schema
ALTER USER ... SET RSA_PUBLIC_KEY = '...';.Password Authentication
Password Authentication
Connect using username and password.Required credentials:
- Account identifier
- Username
- Password
- Default warehouse
- Default database
- Default schema
Set Up the Service User
Run, asACCOUNTADMIN (or a role with equivalent privileges):
Steps to Connect
- Log in to Statisfy.
- Navigate to Integrations → Admin Apps → Snowflake → Connect.
-
Pick Private Key or Password authentication and fill in the fields:
- Account — your Snowflake account identifier (host without
.snowflakecomputing.com) - Username — the service user
- Private Key / Password — credential matching the method you chose
- Default Warehouse / Database / Schema — used for queries that don’t fully qualify their objects
- Account — your Snowflake account identifier (host without
- Click Test Connection to confirm Statisfy can authenticate and run a no-op query.
- Once connected, Snowflake will appear as Connected on the Integrations page.
Configure Queries
Open Integrations → Snowflake → Settings to:- Browse databases, schemas, and tables the service user can see, with column types
- Author queries using Snowflake SQL with autocomplete and a preview pane
- Map results to Statisfy accounts (via Statisfy account ID, CRM ID, organization ID, email domain, account name, or any custom field) and to fields, metrics, or custom objects
- Apply column transformers to reshape values before they’re written
- Set the cadence — daily, weekly, monthly, or a sub-day interval (HOURLY through TWELVE_HOURS)
- Run a one-off sync on demand
product_usage, custom_field, or custom_object. See Query types and Account resolvers for the shared model.
Snowflake-Specific Notes
- Fully qualify objects across databases. If a query references a table outside the default database / schema, qualify it explicitly:
OTHER_DB.SCHEMA.TABLE. - Date placeholders. Use
{START_DATE}/{END_DATE_SQL}to keep queries incremental. Snowflake’sDATE_TRUNC(),DATEADD(), andTO_DATE()work well with these placeholders. - Warehouse cost. Each query consumes warehouse credits. Use a small (
XSMALL/SMALL) warehouse withAUTO_SUSPEND = 60to minimize idle cost, and rely on Snowflake result caching for repeat scans. - Case sensitivity. Snowflake uppercases unquoted identifiers. Quote columns and tables if your warehouse uses mixed-case identifiers, otherwise stick to uppercase consistently in the query.
Account Matching
| Resolver | Description |
|---|---|
| Statisfy Account ID | Native Statisfy account identifier |
| CRM Account ID | Salesforce or HubSpot account identifier |
| Organization ID | External org identifier |
| Email Domain | Company website domain |
| Account Name | Company name (fuzzy matching) |
| Custom Field | Any custom field defined on accounts |
custom_field queries that target people instead of accounts, configure a person resolver (email column, optionally name) — Statisfy will upsert the person record by email.
Sync Behavior
Scheduled Jobs:- Each saved query runs on its own cadence.
- The first run after connecting is a bootstrap covering the last 30 days; subsequent runs cover only the active window for the cadence.
- Self-serve configuration takes precedence over any built-in fallback set up by support.
- Per-query errors are logged but do not block other queries from running.
- Invalid rows within a query are skipped and reported in the job audit log.
Network Access
If your Snowflake account uses network policies to restrict access by IP, allow Statisfy’s egress IPs:CREATE NETWORK POLICY and assign the policy to your service user.
Security
- Credentials are stored encrypted in Google Cloud Secret Manager.
- Private key authentication is recommended for production.
- All connections use TLS.
- Queries authored in the Settings page are read-only — Statisfy validates each query and rejects DDL/DML before save.
- Access is scoped to whatever the service user’s role can see — grant only the schemas you want Statisfy to read.
Troubleshooting
Authentication failed
Authentication failed
Password auth:
- Confirm the account identifier is correct (host minus
.snowflakecomputing.com) - Confirm the password hasn’t expired or rotated
- The key must be in PEM format with PKCS8 encoding
- Confirm the passphrase is correct (if the key is encrypted)
- Confirm the public key has been assigned to the service user (
DESC USER ... ;→RSA_PUBLIC_KEY)
Schema or tables not visible in the browser
Schema or tables not visible in the browser
- Confirm the service user’s role has
USAGEon the database and schema andSELECTon the tables INFORMATION_SCHEMAand system schemas are intentionally hidden- If you recently granted access, the picker may need to be reloaded
Query validation errors at save time
Query validation errors at save time
- Statisfy validates queries against the Snowflake SQL dialect — vendor-specific functions from other warehouses will be flagged
- DDL (
CREATE,DROP) and DML (INSERT,UPDATE,DELETE,MERGE) are rejected — only read-only queries are allowed - Check the validation error for the offending function or syntax
Records not matching to accounts
Records not matching to accounts
- Verify the resolver column contains values that exist in Statisfy
- For CRM ID resolvers, confirm your CRM integration has synced the matching accounts
- Try a different resolver (switch from account name to email domain) if matching is unreliable
- Add a
regex_extractorstrip_prefixtransformer if the column contains the right ID with extra characters
Sync is slow or running up credits
Sync is slow or running up credits
- Drop the warehouse size to
XSMALLfor read-only sync queries - Lower the cadence to
DAILYso each run scans a smaller window - Use
{START_DATE}/{END_DATE_SQL}to keep queries incremental rather than scanning the full table