---
title: "Zero-Copy Segments"
slug: "zero-copy-segments"
description: "Zero-Copy Segments let you build audiences directly from your Snowflake, BigQuery, or Databricks warehouse, matching users to Insider One without copying data."
updated: 2026-07-14T13:39:16Z
published: 2026-07-14T13:39:16Z
canonical: "academy.insiderone.com/zero-copy-segments"
---

> ## Documentation Index
> Fetch the complete documentation index at: https://academy.insiderone.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Zero-Copy Segments

A Zero-Copy Segment lets you build audience segments directly from your own Data Warehouse (DWH), such as [Snowflake](/v1/docs/external-platform-integrations-snowflake), [BigQuery](/v1/docs/external-platform-integrations-google-bigquery), or [Databricks](/v1/docs/external-platform-integrations-databricks), without importing your data into Insider One.

Instead, Insider One runs your query on your warehouse, matches the returned users with your Unified Customer Database (UCD), and stores only the matched audience and segment metadata. Your raw warehouse data always remains in your own environment.

## Why use Zero-Copy Segments?

- **No data replication** → lower infrastructure and warehouse-sync cost.
- **Fresher segments** → you query live warehouse data instead of a scheduled copy.
- **Fewer moving parts** → no sync pipeline to break when schemas or permissions change.

## Prerequisites

Make sure you have:

1. The Zero-Copy add-on enabled.
2. A configured DWH connection. You can reuse a warehouse connection your team set up earlier, or create a new one during the flow.
3. A known identifier in your warehouse data that maps to Insider One: `email`, `phone_number`, `user_id`, etc.
4. The right data on your users inside Insider One ([UCD](/v1/docs/unified-customer-database-overview)). Matching a user from your warehouse isn't enough to message them. For each user you intend to reach, Insider One must already hold:
  - an identifier (the one your query returns: `email`, `phone_number`, `user_id`, etc.),
  - the contact field for your channel: an email address for email, a phone number for SMS/WhatsApp,
  - a valid consent / opt-in for that channel.

> [!WARNING]
> Only users who already exist in your Insider One UCD can be activated. If your SQL returns 100 users but only 10 exist in Insider One, the segment will contain 10.

## Step 1: Navigate to the Zero-Copy Segments in InOne

1. Navigate to **InOne** > **Audience > Segments** and select **Zero-Copy Segments.**

![](https://cdn.document360.io/c6df4583-da94-4cb2-bb8a-be0cbdd11109/Images/Documentation/image-KSO9HU00.png)
2. You will land on the Zero-Copy Segments listing page.

## Step 2: Create a Zero-Copy Segment

On the listing page, you will see all Zero-Copy segments in your account. For each segment, you can see:

- **Segment name**
- **Status**: e.g., *Syncing, Ready, Action Required.*
- **Connected DWH**: which warehouse the segment runs on.
- **Last sync time**: when it was last refreshed.
- **User count**: matched Insider One users from the last refresh.

1. Click **Create** to start a new segment.

![](https://cdn.document360.io/c6df4583-da94-4cb2-bb8a-be0cbdd11109/Images/Documentation/image-MNLUXPC4.png)

1. Enter a name for your Zero-Copy segment.
2. Add a tag if needed and click **Create** to proceed.

![](https://cdn.document360.io/c6df4583-da94-4cb2-bb8a-be0cbdd11109/Images/Documentation/image-0X2Y6NUP.png)

## Step 3: Select a Data Warehouse connection

1. Select an **existing DWH connection**, or create a new one.

![](https://cdn.document360.io/c6df4583-da94-4cb2-bb8a-be0cbdd11109/Images/Documentation/image-ZTIAZ23F.png)

> [!WARNING]
> Only **one** connection can be used per segment.

> [!WARNING]
> You should add a connection to proceed to the Segmentation tab.

> [!WARNING]
> **Important:** After the segment's first successful save, the DWH connection becomes locked. To use a different warehouse you must create a new segment. You will receive a warning about this before your first save.

## Step 4: Build your audience

In the Segment tab, you will build the query that returns your audience.

### 4.1: Select the identifier

Pick which identifier your query returns: `email`, `phone_number`, `user_id`, etc.

- Selecting an identifier is **mandatory**.
- The SQL editor is auto-prefilled with a non-editable `SELECT DISTINCT` template so the chosen identifier is always referenced correctly, for example:

```sql
SELECT DISTINCT <column> AS phone_number
-- Be sure that phone numbers are in E.164 format
```

### 4.2: Write the query

- AI input is the default. Describe the audience in plain language (e.g. "customers who purchased more than 3 times in the last 90 days") and the assistant generates the SQL. This lets non-technical users build segments.
- If you prefer SQL, switch to the editor to write, review, and run it directly. It supports syntax highlighting and query execution.
- You can browse **databases, schemas, and tables** in the connected warehouse, and **join multiple tables** within the same connection.

![](https://cdn.document360.io/c6df4583-da94-4cb2-bb8a-be0cbdd11109/Images/Documentation/image-N2ZFUQQA.png)

### 4.3: Validate your query

The editor guides you with clear feedback:

- Warehouse execution errors are shown directly.
- Referencing a non-existent table or schema surfaces the related error.
- Execution is **blocked** if the query returns **more than one column** (only the identifier is needed).
- Execution is **blocked** if the **selected identifier is missing** from the query.
- You can ask the **AI assistant** to explain and fix SQL errors.

### 4.4: Preview the results

- Preview shows up to the first **100 rows** returned by the query.
- The preview page displays the **total row count** returned by the SQL in the warehouse.

## Step 5: Review and save the segment

### 5.1: Review the matched user count

The count bubble shows the final number of Insider UCD users matched; not the raw warehouse row count.

**Flow**: your SQL runs on the DWH → results are matched against Insider UCD → the final Insider user count is displayed.

If execution runs long, you'll see the message below:

> "Fetching data is taking longer than expected. You can keep using Insider One — save the segment and leave, and we'll notify you by email and in-app once it's ready."

You can **save** and leave; you'll be notified when it's done. Note that once you save, the connection can no longer be changed.

### 5.2: Set the refresh behavior

- **Scheduled refresh**: Choose how often the segment re-runs.
- **Manual refresh**: Re-run any time with the Refresh action.

### 5.3: Save and activate the segment

Click **Save as Active**. You will be redirected to the listing page while the segment runs its first query.

> [!NOTE]
> If the source count and the Insider One count differ, that's expected; only users already in Insider One are counted.

![](https://cdn.document360.io/c6df4583-da94-4cb2-bb8a-be0cbdd11109/Images/Documentation/image-OY6WTEQM.png)

On the listing page, the segment shows an in-progress state: **Syncing****/Querying** until the first run completes and it becomes **Ready**.

While the segment is querying:

- You can **view** and **edit** the SQL.
- You **cannot save changes** or **preview results** until the run finishes.

## Step 6. Use the segment in campaigns

Once the Zero-Copy Segment status changes to **Ready**, it becomes available under **Saved Segments** and can be used in the following channels when building a campaign:

- Bulk campaigns (for example, **SMS**, **Email**, and **Push** campaigns)
- **Architect** > **On Past Behavior** triggers (the segment refreshes according to the trigger frequency)

Zero-Copy Segments are unavailable in the following channels. If you attempt to use them, a clear validation message is displayed:

- **OnSite campaign** segment steps
- **Architect Check** nodes

## Zero-Copy Segments limitations and behavior

| Area | Details |
| --- | --- |
| Campaign refresh | If a refresh is still running when a campaign starts, the campaign uses the previous successful snapshot. |
| User matching | Only users who already exist in Insider One **UCD** are included. Warehouse users who do not exist in Insider One are ignored. |
| Connection changes | After the first save, the DWH connection cannot be changed. Create a new segment to use a different warehouse. |
| Data warehouse | Each Zero-Copy Segment uses a single warehouse. You can combine multiple Zero-Copy Segments in [Dynamic Segments](/v1/docs/dynamic-segments) or campaign steps. |
| Compute cost | Query compute runs on your warehouse and is billed by your warehouse provider. Insider One does not add compute costs. |
| Query timeout | Queries can run for up to **60 minutes**. Longer-running queries time out and fail. |
| First run | If the initial run fails, the segment cannot be used in campaigns until a run completes successfully. |
| Performance | Query performance and concurrency depend on your warehouse configuration and current workload. |
