Tags: analytics commerce concept
Reverse ETL
Date: 2026-08-17
Pushing modelled data out of the warehouse and into the tools that act on it. It closes the loop that warehouse-first analytics leaves open — a beautifully-modelled definition of “at-risk customer” is worth nothing until it reaches the email platform that can do something about it.
Reverse ETL is syncing modelled tables from a data warehouse into operational tools — the reverse direction of ETL (extract, transform, load), which moves data from those tools into the warehouse.
The direction
ETL / ELT REVERSE ETL
sources ──────▶ warehouse warehouse ──────▶ operational tools
Shopify, GA4, ads, support email, ads, CRM, support desk,
→ one place to analyse on-site personalisation
→ one place to ACT
The warehouse is where the definition lives; the tools are where the action happens. Without a path back, every operational system either reimplements the definition or works from a worse one — which is how three systems end up with three different ideas of who a lapsed customer is.
the problem it solves
email platform "active customer" = opened in 90 days
ad platform "high value" = spent over £200 lifetime
support desk "VIP" = a manually maintained tag
warehouse the real model — RFM, margin-adjusted, returns-netted
← correct, and reaching nobody
What it looks like
Define the audience once, in the modelling layer, as a query:
-- models/audiences/at_risk_high_value.sql
select
c.customer_id,
c.email,
c.first_name,
c.lifetime_margin_pence,
c.days_since_last_order,
c.predicted_churn_score
from analytics.customers c
where c.lifetime_margin_pence > 20000 -- £200+ contribution
and c.days_since_last_order between 90 and 180
and c.predicted_churn_score > 0.6
and c.marketing_consent = true -- ← never optional
and c.deleted_at is nullA sync tool then maps those columns onto fields in each destination and keeps them current — usually hourly or daily, with a change-detection step so only differences are sent.
The consent column is load-bearing. A reverse ETL pipeline is a machine for copying personal data into third-party systems, and consent state has to be part of the model rather than checked downstream — Consent Management, Legitimate Interest vs Consent.
The problems it creates
- The warehouse becomes production infrastructure. A model that fails at 3am used to mean a stale dashboard; now it means the email campaign doesn’t send. Data quality tests stop being hygiene and become uptime — Data Quality Monitoring
- API limits set your cadence. Most destinations rate-limit writes, so “real-time” is usually hourly at best. Design the audiences to tolerate that latency — a same-session trigger is not a reverse ETL job — Rate Limiting
- Deletes are harder than inserts. Adding someone to a segment is easy; removing them when they no longer qualify requires the sync to track prior state. A pipeline that only adds produces segments that grow forever and audiences full of people who bought last week
- Field mapping drifts. A destination’s custom field gets renamed by whoever administers that tool, and the sync fails quietly or writes to nothing
- Cost scales with rows synced, and a badly-scoped audience is expensive in both warehouse compute and destination billing
Where it earns its place
- Lifecycle and lapsed-customer campaigns driven by the real model rather than the email tool’s simpler one — Lifecycle Stages, Winback Campaigns
- Ad platform audiences — suppression lists, lookalike seeds, value-based bidding fed with actual contribution margin rather than revenue. Suppression alone often pays for the whole pipeline, by stopping spend on people who just bought — Bid Strategies and Budget Allocation
- Support context — lifetime value and order history visible to an agent without leaving their tool
- On-site personalisation driven by warehouse segments — Personalisation Tests
- Sales and account management in a business with a B2B side
When it isn’t the right tool
- Real-time behaviour. A basket-abandonment email needs an event stream, not an hourly sync — Event-Driven Architecture, Webhooks
- You don’t have a warehouse or a modelling layer. Reverse ETL is the last step of a pipeline, not a first move — Warehouse-First Analytics
- A packaged CDP already does it. Considerable overlap; running both means two systems computing segments and disagreeing — Customer Data Platforms
- One destination, one simple rule. A direct integration is less machinery
Running it safely
- Version the audience definitions with the models, reviewed like any other code — Code Review
- Test before syncing. A model that returns 400,000 rows when it usually returns 4,000 should fail rather than sync — a row-count assertion is the cheapest guard available
- Log what was sent, and when. “Why did this customer get that email” is asked regularly and is unanswerable without it
- Propagate deletion. A subject access or erasure request must reach every destination the pipeline pushed to, not just the warehouse — UK GDPR and PECR for Analytics, Data Retention
- Suppress at source. Consent, opt-out and fraud flags belong in the model so no destination can receive someone it shouldn’t
Where it interacts
- Warehouse-First Analytics — the architecture this completes; without reverse ETL a warehouse is a reporting system rather than an operational one
- Customer Data Platforms — the packaged alternative, and the composable version of a CDP is essentially warehouse plus reverse ETL
- RFM Segmentation — the kind of model most often pushed out this way
- Metric Design — the whole value depends on the definition being right and singular