Zero Copy lets you build a Target Group directly from data that lives in your own data warehouse — without copying, uploading, or ingesting that data into Optimove. Instead of moving your data to the platform, Optimove runs a SQL query against your warehouse and retrieves only the list of Customer IDs that match your criteria.
This is especially useful for sensitive or frequently changing data — such as financial attributes, KYC status, or churn risk scores — that your team prefers to keep within your own systems. Only Customer IDs are returned to Optimove; no other columns or attributes leave your warehouse.
This guide will walk you through how to connect your data warehouse, create a Zero Copy list, and use it to build a Target Group in Optimove.
Step-by-Step: How to Create a Zero Copy List
Step 1: Add a Data Warehouse Connection
Before creating a list, you need to connect Optimove to your data warehouse. This is a one-time setup step — once a connection is saved, it can be reused for multiple lists.
Instructions:
- Navigate to Settings > Access Management > Connection Hub.
- Click "Add Connection".
- Select your database type.
- Enter a name for the connection and fill in the required credentials.
- Click "Test Connection" to verify access.
- Click "Save". The connection appears in your connections table with its last connection status and database type.
Step 2: Create a New Customer List
Customer Lists live in Data Studio. This is where you define the SQL query that Optimove will run against your warehouse to generate your customer list.
Instructions:
- Navigate to Customer Lists in Data Studio.
- Click "Add New List".
- Select the connection you set up in Step 1 from the dropdown.
- Optimove will display your warehouse's table structure so you can reference available tables and columns when writing your query. The objects and data visible here depend on the permissions your IT team has granted to Optimove.
- Enter a unique name for your list.
Step 3: Enter and Test Your SQL Query
Write a SQL query that returns the Customer IDs you want to target. Optimove runs this query against your warehouse on the schedule you define.
Instructions:
-
In the SQL query field, enter a
SELECTstatement that returns only Customer IDs. For example:SELECT CID FROM CUSTOMERS WHERE CHURN_RISK = 'HIGH'
- Click "Run Query". Optimove displays the total number of Customer IDs returned and a preview of the first 10.
- Review the results to confirm the query is returning the expected audience.
- Adjust and re-test as needed.
Important: If you need results returned in a specific order, include an
ORDER BY clause in your query. Without it, the returned records are not guaranteed to be in any particular order and may be selected randomly.Step 4: Set Your Sync Schedule
Choose how often Optimove should re-run the query to refresh your list.
Instructions:
- Choose your sync type:
- One-time — Optimove runs the query once at the time you specify.
- Recurring — Optimove re-runs the query once per day at a time you define.
- Set the time of day for the sync to run.
- Click "Save" to create the list.
Step 5: Open Your Target Group
When you save a Zero Copy list, Optimove automatically creates a corresponding Target Group from it — no extra steps needed.
Instructions:
- In the Customer Lists page, find your newly created list.
- Open the context menu and select "Open Target Group" — the auto-created Target Group opens in a new tab.
- In the Target Group Editor, add any additional criteria as needed to refine your audience.
- Save the Target Group.
How Zero Copy Works
Unlike CSV uploads or the List Sync API — where customer data is brought into Optimove — Zero Copy keeps your data exactly where it is. Optimove connects to your warehouse, runs your SQL query, and retrieves only a list of Customer IDs. Aside from the Customer IDs (CUIDs) returned by your query, no raw data or other attributes are stored in Optimove.
- Optimove executes your query against your Snowflake warehouse on the schedule you defined.
- Your warehouse returns a list of Customer IDs that match the query criteria at that point in time.
- Optimove updates the list with the fresh results. Any Target Groups referencing the list are updated automatically.
- Your raw data never moves. Only Customer IDs cross the boundary — everything else stays in your warehouse.
What about data that changes between syncs? If a customer's status changes in your warehouse after a sync has run, the list in Optimove reflects the previous sync's results until the next scheduled run.
FAQ
Can I use Zero Copy data for personalization or AI features?
No. Because Zero Copy does not store customer attributes in Optimove, data retrieved via Zero Copy cannot be used for personalization (such as Liquid tags in templates) or to train Optimove's AI models. Zero Copy lists are available for audience targeting only.
What happens if my SQL query fails or my warehouse connection goes down?
If a sync fails, Optimove sends an email notification to users registered for Zero Copy alerts. The notification includes the list name, error type, error details, and the time of failure. You can register for these notifications via Settings > System Notifications > Add System Notification, then choose to receive Zero Copy list notifications. The last successfully synced list remains active until the next successful sync.
Is there a limit to how many Customer IDs a Zero Copy list can contain?
Yes. Each Zero Copy list can return a maximum of 500k rows per query run. Customer IDs not registered in Optimove will be excluded.
Can I use one Zero Copy list in multiple Target Groups?
Yes. A single Zero Copy list can be used across multiple Target Groups. To do this, duplicate the Target Group that was automatically created when you saved the list — the duplicated Target Group retains the list criteria and can be modified as needed. Any updates to the underlying list, such as changes to the SQL query or sync schedule, will automatically apply to all Target Groups that use it.
Which data warehouses does Zero Copy support?
Zero Copy currently supports Snowflake. Support for Databricks, BigQuery, and Redshift is planned for future releases.