Snowflake

image-20250812-061006.png

Zeta supports Snowflake connectivity so you can use warehouse data in the Zeta Marketing Platform (ZMP) for Data Flows, query-based segments, and Zero Copy Database Explorer—without always copying data into ZMP first.

Snowflake connectivity must be included in your agreement and enabled on your ZMP account. Contact your Zeta representative or Support to confirm entitlement and enablement before setup.

What you can do with Snowflake in ZMP

Once a Snowflake connection is available for your account, you can typically:

  • Read data in place (Zero Copy) — Segment and personalize against tables/views that remain in Snowflake

  • Ingest via Data Flows — Pull selected Snowflake data into ZMP profiles, events, or resources when materialization is preferred

  • Build query-based segments — Use SQL for Audience Activation and Analytics Reporting Building (Query Lab) against approved Snowflake datasets

  • (Optional) Receive ZMP engagement data outbound — Shares of sends, opens, clicks, and related engagement data back to your Snowflake account (scoped with your Zeta team)

  • (Optional) Clean Room Peer-to-Peer Collaboration - A data clean room is a secure environment that enables the connection of distributed data across multiple platforms and parties within the ZMP ecosystem.


Choose the right connection approach

Approach

Description

Best when

Who owns Snowflake compute for ZMP reads

Client setup effort

Zeta involvement

1

Direct connection (zero-copy)

Ability to configure mapping to any of the tables/objects that the user role has access to, and used in ZMP segmentation tools as well as query-based segments and data flows.

Data stays in your Snowflake; you are required to create a dedicated user/role for Zeta

your warehouse

Billing: will accrue to your dedicated user/role created

Create role/user/warehouse + grants; enter connection in ZMP (or provide details securely)

Enable feature; help validate if needed

2

Snowflake Data Share

Client creates a specific data share against specific DB tables/objects to share to Zeta’s Snowflake account.

  • When in region: propagation against data shares happens in real-time

  • When out of region: requires that the client set data propagation at a set cadence

You prefer not to share login credentials; you want to expose only specific objects

to data-share; Zeta’s warehouse can read data after share is accepted

Billing: Zeta will pass-through credits consumed by Zeta’s user role created

Create share + grant Zeta as consumer; send share metadata

Accept share, wire access, register connection in ZMP

3

Zeta-assisted/ZMP Snowflake access

When you want to partition

You need advanced query segments against ZMP-managed data in Snowflake, or a hybrid setup coordinated by Zeta

Usually Zeta

Provide use case, site/account context, and required objects with your Zeta team

Zeta configures access and the ZMP connection

Recommendation: Prefer Approach 1 (direct zero-copy) when you only need to query your own warehouse data for segmentation and activation. Prefer Approach 2 (Data Share) when you need stricter object-level exposure or when joining/working with Zeta-managed datasets requires it. Use Approach 3 only when your Zeta team confirms it is required for your use case.


Prerequisites (all approaches)

Before setup:

  1. Confirm Snowflake connectivity is contracted for your ZMP tenant.

  2. Ask Support / your Zeta representative to enable external database / Zero Copy capabilities for your account.

  3. Identify the databases, schemas, tables, and/or views ZMP should access.

  4. Prefer a dedicated Snowflake role (and, for direct connect, a dedicated user + warehouse) used only for Zeta—this isolates permissions and makes credit usage easier to track.

  5. Align on identifiers for joining to people (for example, email, customer ID) and on refresh/latency expectations.

Region guidance (especially for Data Shares)

Zeta’s primary US Snowflake account used for ZMP Data Shares is in AWS us-east-1.

  • If your Snowflake account is already in AWS us-east-1, a direct Data Share is typically straightforward.

  • If your account is in another AWS region, you may need Snowflake replication / auto-fulfillment so data is available in us-east-1 before sharing.

  • Cross-cloud setups (Azure / GCP) may require additional scoping with your Zeta team; do not assume a standard same-region share will work without review.

EU ZMP / EU Snowflake considerations should be confirmed with your Zeta representative for your specific tenant.


Approach 1: Direct Snowflake connection (client-owned account)

In this model, data remains in your Snowflake account. You create access for ZMP, then create (or help create) the Snowflake connection in ZMP.

Step A — Prepare Snowflake (client)

Create a dedicated role/user/warehouse and grant least-privilege read access to the required objects. Example pattern (adjust names to your governance standards):

-- Example only — adapt to your security model
CREATE ROLE IF NOT EXISTS ZETA_ZMP_ROLE;
CREATE USER IF NOT EXISTS ZETA_ZMP_USER
  PASSWORD = '<secure-password>'   -- or configure key-pair auth
  DEFAULT_ROLE = ZETA_ZMP_ROLE
  DEFAULT_WAREHOUSE = ZETA_ZMP_WH;

CREATE WAREHOUSE IF NOT EXISTS ZETA_ZMP_WH
  WAREHOUSE_SIZE = 'XSMALL'
  AUTO_SUSPEND = 60
  AUTO_RESUME = TRUE;

GRANT USAGE ON WAREHOUSE ZETA_ZMP_WH TO ROLE ZETA_ZMP_ROLE;
GRANT USAGE ON DATABASE <YOUR_DB> TO ROLE ZETA_ZMP_ROLE;
GRANT USAGE ON SCHEMA <YOUR_DB>.<YOUR_SCHEMA> TO ROLE ZETA_ZMP_ROLE;
GRANT SELECT ON ALL TABLES IN SCHEMA <YOUR_DB>.<YOUR_SCHEMA> TO ROLE ZETA_ZMP_ROLE;
GRANT SELECT ON ALL VIEWS IN SCHEMA <YOUR_DB>.<YOUR_SCHEMA> TO ROLE ZETA_ZMP_ROLE;
GRANT ROLE ZETA_ZMP_ROLE TO USER ZETA_ZMP_USER;

Best practices

  • Prefer views when you need column-level control.

  • Grant only the objects needed for profiles, events, segmentation, or personalization.

  • Prefer key-pair authentication when your security policy requires it.

  • Do not send passwords or private keys through email, chat, Jira, or Confluence. Use your approved secure channel, or enter secrets directly in the ZMP Connections UI.

Step B — Create the connection in ZMP

  1. Go to Settings → Integrations → Connections.

  2. Click Create Connection / New Connection.

  3. Select Snowflake.

  4. Enter a clear connection name (example: acme_snowflake_zero_copy).

  5. Provide connection details:

Field

What to enter

Account

Your Snowflake account identifier/account URL details

Warehouse

Warehouse granted to the Zeta role

Database

Default database for the connection

Schema

Default schema (as applicable)

Role

Dedicated role created for Zeta

Username

Dedicated user

Password / Private key

Per your auth method

  1. Save the connection. ZMP tests connectivity.

    • Active — ready for use

    • Failed — fix credentials/grants/network policy, then retest

Step C — Configure tables for Zero Copy (recommended)

After the connection is Active:

  1. Open the connection’s action menu (⋯) → Configure Tables & Groups.

  2. Allow a few minutes for tables to populate on first connect.

  3. Configure:

    • User ID column on the primary people table

    • Columns available for Targeting and Personalization

    • Table mappings/joins if you need multi-table segmentation

    • Optional groups and aliases for easier marketer use

What Zeta does in this approach

  • Confirms entitlement and enables the feature for your account

  • Helps validate connection/table configuration if requested

  • Does not need ongoing access to your Snowflake console when you own credentials and manage grants


Approach 2: Snowflake Data Share to Zeta

In this model, you create a Snowflake Data Share that exposes approved tables/views to Zeta. Zeta accepts the share and completes ZMP wiring. You do not need to share a Snowflake password for this path.

Step A — Prepare and create the share (client)

  1. Confirm the shared objects are available in AWS us-east-1 (primary account or replica via auto-fulfillment).

  2. Create a share and add only required tables/views.

  3. Add Zeta as the consumer using:

Field

Value

Organization

zetaglobalorg

Account Name

zetaglobal

Region

us-east-1

Account Locator (if asked)

ZETAGLOBAL

Account URL (reference)

https://zetaglobalorg-zetaglobal.snowflakecomputing.com

Example pattern:

-- Example only
CREATE SHARE ZETA_<CLIENT>_SHARE;
-- Grant usage / select on desired DB, schemas, tables/views to the share
-- Then grant the share to Zeta's account (org/account/region as above)

  1. Apply least privilege and any masking policies required for PII.

  2. Send the following to your Zeta representative / Support (no secrets required for this path):

  • Share name

  • Database/schema/table/view names included

  • Business definitions of each dataset

  • Expected refresh cadence / SLA

  • Your Snowflake org/account identifiers (so Zeta can locate the inbound share)

Step B — What Zeta completes

After your share is available, Zeta will:

  1. Accept the inbound Data Share

  2. Create/configure the database and access required for ZMP

  3. Register the Snowflake connection for your ZMP account

  4. Help expose approved tables/views for Zero Copy, query segments, and/or Data Flows

  5. Validate with a test segment and/or Data Flow as needed

You cannot complete ZMP registration for a Data Share path entirely on your own; Zeta must accept and wire the share.

Step C — After Zeta confirms the connection is ready

Use the connection like any other Snowflake connection:

  • Configure tables/groups/user ID in Connections (if Zero Copy is in scope)

  • Build audiences in Audiences → Database Explorer

  • Use Snowflake as a source in Data Flows when ingestion is required


Approach 3: Zeta-assisted access (advanced / ZMP Snowflake use cases)

Some solutions require query-based segmentation or advanced joins against ZMP-managed Snowflake datasets (or a hybrid of client + ZMP data) that Zeta configures on your behalf.

When this applies

  • Complex query segments that cannot be built with standard ZMP segmentation

  • Access coordinated through Zeta-managed Snowflake roles/connections

  • Use cases confirmed during onboarding/solution design

What you provide

Work with your Zeta representative and include:

  • ZMP account/site context

  • Business use case (segmentation, personalization, Data Flow, etc.)

  • Datasets/tables/views required

  • Expected keys for identity joins

  • Latency and refresh expectations

What happens next

Zeta configures the required access and makes the connection available in your ZMP account. Your team then uses it through Connections, Database Explorer, query segments, and/or Data Flows—same as other Snowflake connections.

This path is not fully self-service. Coordinate setup with your Zeta representative.


Optional: Outbound engagement data to your Snowflake

If your agreement includes outbound Snowflake sharing of ZMP engagement or profile data:

  1. Provide your Snowflake organization/account/region identifiers to Zeta.

  2. Confirm which datasets you need (for example, engagement events).

  3. Zeta configures the outbound share according to region rules:

    • Same-region AWS us-east-1 is typically simplest

    • Other regions may use replication / auto-fulfillment and should be scoped for refresh cadence and cost

Ask your Zeta representative to confirm whether outbound share is in scope for your tenant.


Using Snowflake data after the connection is live

Zero Copy Database Explorer

  1. Go to Audiences → Database Explorer

  2. Select the Snowflake connection/data source

  3. Build visual or SQL audiences

  4. Assign a User ID before the campaign sends

  5. Mark fields for personalization as needed ({{segment.*}} in content)

Data Flows

Use Snowflake as a source when you want selected data materialized into ZMP (profiles, events, resources) rather than only queried in place.

Query-based segments

Where enabled, create SQL segments against the approved connection. Coordinate complex SQL patterns with your Zeta team if results or performance need tuning.


Security & governance checklist

  • Use least-privilege roles and object grants

  • Prefer views + masking for sensitive columns

  • Use a dedicated Zeta role/user/warehouse when possible

  • Rotate credentials on your schedule; update the ZMP connection after rotation

  • Never paste secrets into tickets, email, or chat

  • Document dataset definitions and allowed use (profiles only, events only, both)


Compute & cost notes (high level)

  • Direct connection (Approach 1): Query compute generally runs on your Snowflake warehouse.

  • Data Share (Approach 2) and Zeta-assisted (Approach 3): Query compute generally runs on Zeta-managed warehouses after access is configured.

  • Cross-region / cross-cloud replication can add transfer, replication compute, and storage costs—scope these with your Zeta team before go-live.

Final commercial treatment is governed by your SOW/order form.


Troubleshooting

Symptom

What to check

Connection status Failed

Account identifier, role, warehouse, username/auth method, default DB/schema

Tables missing in ZMP

Grants on DB/schema/objects; wait a few minutes after first connect; use Refresh Table

Auth failures after rotate

Update password/private key in the ZMP connection; confirm role still granted to user

Data Share not visible to Zeta

Consumer org/account/region values; share grants; us-east-1 availability / replication

Segment count looks wrong

Counts are often rows, not unique people; confirm User ID mapping and joins

Cannot send campaign from Zero Copy segment

Ensure a User ID is assigned on the people table

Unexpected Snowflake credit usage

Confirm which approach you use (client vs Zeta warehouse) and warehouse auto-suspend settings

If issues persist, contact Support with:

  • ZMP account name

  • Connection name and status

  • Approach used (Direct / Data Share / Zeta-assisted)

  • Approximate time of failure

  • Error message text (no secrets)

  • Share name/object list (for Data Share issues)


Quick reference: information to gather before kickoff

For Approach 1 (Direct)
Account identifier, warehouse, database, schema, role, username, auth method, object list, User ID field(s)

For Approach 2 (Data Share)
Share name, object list + definitions, refresh SLA, confirmation of us-east-1 availability, your org/account identifiers

For Approach 3 (Zeta-assisted)
Use case, ZMP site/account context, required datasets, join keys, latency needs

Always
Confirmation that Snowflake connectivity is contracted and external DB / Zero Copy is enabled