Reverse ETL
Hightouch, Census, RudderStack — pushing modeled warehouse data into SaaS tools.
The mirror of ETL / ELT & Ingestion. After your warehouse holds the trustworthy version of "active customer," reverse ETL syncs that to Salesforce / HubSpot / Intercom / Customer.io / your ad platforms — so non-technical teams operate on the same definitions defined in dbt or Semantic Layers & Metrics.
Hosted SaaS
- ★ Hightouch — the category leader; warehouse-first; deep connector list; SQL or model selectors; small free tier (3 syncs).
- ★ Census — same niche; extra strength in identity resolution; small free tier.
- Polytomic — strong on "two-way sync" between SaaS apps; free tier.
- Workato, Tray.io, Zapier — generalist iPaaS; not warehouse-first but get the job done for low-volume pushes.
Open source / self-host
- ★ RudderStack Reverse ETL — the OSS RudderStack server (Elastic License v2) includes warehouse-source reverse-ETL alongside its CDP collection layer; see Event Tracking & CDP.
- Multiwoven (formerly Castled) — open-source reverse-ETL; AGPLv3; smaller connector list but actively developed.
- Grouparoo — was open source; effectively retired after Airbyte acquisition in 2022. Mention only to redirect users to the alternatives above.
DIY patterns
- dbt model →
INSERT INTO external_table→ cron — for a few simple syncs, a dbt run that writes to an external Postgres / Salesforce-shaped staging table plus a small Python script beats running a reverse-ETL platform. - Workflow engine + warehouse query — see Data Orchestration; Dagster / Prefect / Airflow can
SELECT FROM warehouseandPOSTto vendor APIs natively. - Cube + webhook — a Semantic Layer query can fan out to webhooks via a simple consumer.
Common destinations
- CRM: Salesforce, HubSpot, Pipedrive, Attio.
- Marketing: Customer.io, Iterable, Braze, Klaviyo, Mailchimp.
- Support: Intercom, Zendesk, Front.
- Ads: Facebook / Google / TikTok Ads custom audiences.
- Product: PostHog (groups), Mixpanel (cohort), Amplitude.
- Slack, Notion — for ops handoffs.
Patterns to know
- Idempotent upserts. Match on
external_id(= warehouse PK) so re-syncs don't dupe. - Diff-based syncs. Don't push every row every run — most platforms compute a diff vs. the last sync. Watch out for soft-delete handling.
- Rate limits. SaaS APIs throttle hard; the platform's job is back-off and queueing.
- Consent & PII. Reverse ETL is the easiest place to leak PII to vendors. Filter unsubscribed / opted-out users in the model, not in the sync.
- Audit per sync. Track row counts in / out / failed; surface failures to the data team, not the marketers.
Pick this if…
- Default reverse ETL, hosted, free-tier: Hightouch or Census.
- Already running RudderStack OSS: use its reverse-ETL features.
- AGPL-friendly self-host: Multiwoven.
- You only have 1–2 syncs: roll your own with Data Orchestration.
- You need two-way sync, not one-way: Polytomic.