Guides
Sync from a warehouse
Keep Clarify in sync with your data warehouse using Segment
Use Segment's Reverse ETL to sync data from BigQuery, Snowflake, or Redshift into Clarify on an ongoing basis. This is the recommended approach for teams that use a warehouse as their source of truth.
How it works
- Your warehouse contains the canonical customer data
- Segment queries your warehouse on a schedule (hourly, daily)
- Changed records are pushed to Clarify via the API
- Clarify matches on email/domain to update existing records or create new ones
Setup
1. Connect your warehouse to Segment
In Segment, add your warehouse as a Source (Reverse ETL):
- BigQuery, Snowflake, Redshift, or Databricks
- Configure a service account with read access to your tables
2. Add Clarify as a destination
In Segment, add Clarify as a Reverse ETL destination:
- Enter your workspace slug and API key
- Map your warehouse columns to Clarify fields
3. Define your sync model
Write a SQL query that selects the records you want to sync:
SELECT
email,
first_name,
last_name,
company_name,
title,
lifecycle_stage
FROM analytics.contacts
WHERE updated_at > CURRENT_TIMESTAMP - INTERVAL '24 hours'4. Map fields
| Warehouse column | Clarify field | Notes |
|---|---|---|
email | email_addresses | Primary match key |
first_name | first_name | |
last_name | last_name | |
company_domain | domains (on company) | Used for company matching |
lifecycle_stage | Custom field | Create the field first |
5. Set a schedule
- Hourly for fast-moving data (active pipeline)
- Daily for reference data (company metadata, enrichment)
Matching behavior
Clarify matches incoming records by:
- People: email address
- Companies: domain
If a match is found, the record is updated. If not, a new record is created.
Tips
- Start with a daily sync and move to hourly once you've validated the mapping
- Use Segment's Debugger to inspect payloads before they hit Clarify
- Create custom fields in Clarify before mapping warehouse columns to them