
Agentic Salesforce to Snowflake ELT: From One Prompt to a Governed Pipeline
How Bruin CLI, Bruin MCP, Bruin Cloud, and agent skills can build and maintain a Salesforce to Snowflake ELT pipeline across bronze, silver, and gold layers.
Reverse ETL explained in plain terms: how warehouse data moves back into CRMs, marketing tools, support systems, internal apps, and workflows, how it differs from ETL and ELT, and when teams should use it.

Arsalan Noorafkan
Developer Advocate

Quick answer: reverse ETL is the process of moving modelled, trusted data from a data warehouse or lakehouse back into the operational tools where people work. Instead of only loading data into Snowflake, BigQuery, Redshift, Databricks, or Postgres for analysis, reverse ETL pushes useful outputs back out to systems like Salesforce, HubSpot, Braze, Customer.io, Zendesk, Slack, Microsoft Teams, internal apps, and product databases.
The simplest version looks like this:
warehouse table -> reverse ETL sync -> CRM, marketing tool, support tool, or internal app
So if your warehouse knows that a customer is likely to churn, reverse ETL can push that churn score into Salesforce. If your product model identifies users ready for an upgrade, reverse ETL can send that audience to Braze or Customer.io. If your finance model flags accounts with unusual spend, reverse ETL can put that information where the account team actually sees it.
That is why people also call this category data activation. The data does not just sit in a dashboard. It changes what happens next.
Reverse ETL is the opposite direction of the traditional analytics flow.
Traditional ETL and ELT move data from operational systems into an analytical store:
Salesforce, Stripe, Postgres, product events -> warehouse
Reverse ETL moves prepared analytical data back into operational systems:
warehouse -> Salesforce, HubSpot, Braze, Zendesk, Slack, product app
The important word is prepared. Reverse ETL should not usually push raw tables back into business tools. It should push useful, cleaned, joined, and governed outputs: customer health scores, lifecycle stages, product usage summaries, account tiers, churn risk, recommended next actions, lead scores, renewal dates, feature adoption status, or support priority.
In practice, reverse ETL is a bridge between the data team and the operating teams.
The data team builds a reliable definition in the warehouse. Sales, marketing, support, success, product, finance, or operations use that definition inside the tools they already check every day.
Most modern data stacks were built to centralize data. Pull everything into the warehouse, transform it, build dashboards, and let people analyze it.
That works for reporting.
It does not always work for action.
A sales rep does not want to open a BI dashboard every morning, filter to their accounts, copy a health score, and then update Salesforce manually. A support team does not want to search a dashboard to see whether a customer is enterprise-tier before replying in Zendesk. A lifecycle marketer does not want a CSV export of eligible users every week. A product experience should not depend on someone manually downloading a segment.
Reverse ETL exists because the warehouse became the best place to calculate the truth, but not the best place for every team to consume it.
The warehouse can answer:
Reverse ETL takes those answers and puts them into the operational surface where the next action happens.
The names are annoying, but the distinction is useful.
| Pattern | Direction | Main job | Example |
|---|---|---|---|
| ETL | source -> transform -> warehouse | Clean and transform data before loading it into the analytical store. | Extract Salesforce records, transform them, then load clean tables into Snowflake. |
| ELT | source -> warehouse -> transform | Load raw data first, then transform it inside the warehouse. | Load product events into BigQuery, then build user and account models with SQL. |
| Reverse ETL | warehouse -> operational tools | Push prepared warehouse data back into business systems. | Sync account health scores from the warehouse into Salesforce and Zendesk. |
ETL and ELT help you centralize data for analysis.
Reverse ETL helps you operationalize the results of that analysis.
This is also why reverse ETL usually comes after ingestion and transformation. If the upstream model is wrong, stale, or poorly defined, reverse ETL will faithfully distribute that mess into tools people rely on. That is the classic garbage-in & garbage-out problem, just with more places to clean up afterwards.
Imagine a B2B SaaS company with customer data spread across product events, billing, support, CRM, and marketing systems.
The data team builds an account_health model in the warehouse:
account_id
account_name
plan
monthly_recurring_revenue
active_users_30d
feature_adoption_score
open_support_tickets
last_login_at
health_score
churn_risk
recommended_action
That model is useful in a dashboard, but the customer success team works in Salesforce and Slack. So the team sets up reverse ETL:
health_score syncs to a Salesforce account fieldchurn_risk syncs to Salesforce and Zendeskrecommended_action appears in the account owner viewNothing magical is happening. The warehouse still does the modelling. Reverse ETL handles the handoff.
But the behaviour of the company changes. Customer success sees risk earlier. Sales does not sell into bad-fit accounts blindly. Support can prioritize context-rich tickets. Marketing can suppress customers who should not receive a generic campaign.
That is the point.
Reverse ETL is most useful when the warehouse has a better version of the truth than any single SaaS tool.
Sales teams use reverse ETL to enrich CRM records with data the CRM cannot calculate by itself.
Common fields include:
The goal is not to make Salesforce or HubSpot a warehouse. The goal is to give sales teams enough context to act without making them leave their workflow.
Marketing teams use reverse ETL to build audiences from warehouse data and push them into campaign tools.
Examples:
This is where reverse ETL overlaps with composable CDPs. The warehouse owns the data model, and marketing tools receive the segments or traits needed for campaigns.
Support and success teams often need context from billing, product usage, implementation status, and account ownership.
Reverse ETL can push that context into Zendesk, Intercom, Salesforce, Gainsight, Vitally, or a support console:
This prevents the usual tab-hopping problem where a support agent has to check five systems before answering a customer.
Reverse ETL can also write data into product databases or internal tools.
Examples:
This version needs more caution than a CRM sync. Product and internal app writes can affect live user experience, so validation, rollback, ownership, and rate limits matter a lot.
Most reverse ETL systems follow the same basic workflow.
account_health.health_score -> Salesforce.Account.Health_Score__c.account_id, email, user_id, or external_id.The sync key is where many reverse ETL projects quietly fail.
If the warehouse uses customer_id, Salesforce uses account_id, billing uses stripe_customer_id, and marketing uses email, somebody has to define the identity mapping properly. Otherwise the sync "works" but updates the wrong record, skips records, duplicates objects, or creates a cleanup job nobody wanted.
Reverse ETL is the movement pattern.
Data activation is the broader outcome.
Reverse ETL asks:
How do we move this warehouse data into another system?
Data activation asks:
What should happen because this data exists?
Sometimes the answer is a classic field sync into Salesforce. Sometimes it is an audience in Braze. Sometimes it is a Slack alert, a Teams report, a Jira ticket, a GitHub issue, an internal API write, or an AI agent preparing the first version of a follow-up.
This distinction matters because not every activation workflow is a simple row sync.
If the output is "update this CRM field", a dedicated reverse ETL tool is often a good fit. If the output is "run a governed pipeline, check the data, explain the change, notify the account owner, and create a task when the pattern repeats", you are closer to workflow activation. Same source data, different operating model.
A concrete Salesforce version of this is the agent workflow in our Salesforce to Snowflake ELT walkthrough. The agent first builds the normal pipeline - Salesforce objects into Snowflake, silver and gold models, checks, lineage - then a Salesforce activation skill can take a trusted gold output and prepare the write-back: update account risk fields, create follow-up tasks for neglected high-value opportunities, or upsert approved changes into Salesforce. The important part is the dry-run and approval gate. The agent is not free-writing into the CRM; it scopes the request, checks object and field names, reports counts and failures, and only pushes when the write set is understood.
The happy-path demo is easy: choose a table, map a few fields, press sync.
Production is where the details show up.
Who owns the source model? Who owns the destination field? Who approves a change? If sales manually edits a CRM field, can the warehouse overwrite it? Should it?
Reverse ETL needs clear ownership because it crosses team boundaries. Data teams often own the model. Business teams often own the destination workflow. Both sides need to know what is allowed to change.
Bad dashboards are embarrassing. Bad reverse ETL syncs can trigger campaigns, update CRM records, change support priority, or affect an app.
Useful checks include:
The boring checks matter more than the clever sync logic.
Reverse ETL depends on matching records across systems. Email is tempting, but it changes, duplicates, and often belongs to a user rather than an account.
Good systems use stable IDs where possible and treat identity mapping as a first-class model, not an afterthought.
Every destination behaves differently.
Some fields can be overwritten. Some are read-only. Some APIs rate-limit aggressively. Some tools apply validation rules after the sync. Some destinations treat missing values as "clear this field", while others ignore them.
Before turning on a sync, define:
This is the stuff that decides whether reverse ETL becomes trusted infrastructure or a weekly cleanup exercise.
You may not need a dedicated tool on day one.
For a simple internal workflow, a scheduled SQL model plus a small Python job that calls an API can be enough. For a product database, you may want a controlled service or pipeline asset anyway. For a marketing team that needs many destinations and self-service audience syncs, a reverse ETL or composable CDP tool can save a lot of time.
The decision usually comes down to scale and risk.
You should consider a reverse ETL tool when:
You can start simpler when:
There is no prize for adding another platform too early. There is also no prize for maintaining a pile of scripts after the workflow becomes business-critical.
There are a few categories of tools that can support reverse ETL:
You will see names like Hightouch, Fivetran Census, Segment, RudderStack, Polytomic, Multiwoven, Airbyte, Workato, and Salesforce Data Cloud in this conversation. They do not all solve the same version of the problem.
If you are comparing vendors, use a separate evaluation guide rather than turning a definition article into a shopping list. We keep that breakdown here: Best Reverse ETL Tools 2026: Segment vs Hightouch vs Census.
For the concept itself, the useful question is simpler: where should this warehouse-backed decision show up so somebody or something can act on it?
Before pushing warehouse data into an operational tool, write down the contract.
If those answers are vague, the sync is probably not ready.
Reverse ETL moves trusted data from a warehouse back into the business tools that people use every day. A common example is syncing a customer health score from Snowflake or BigQuery into Salesforce, HubSpot, Zendesk, Braze, or an internal application.
It is called reverse ETL because the direction is reversed from the classic ETL flow. ETL moves data from operational systems into a warehouse for analysis. Reverse ETL moves analysed or modelled warehouse data back into operational systems for action.
Not exactly. Reverse ETL is the technical pattern of syncing warehouse data out to other systems. Data activation is the broader business outcome: using data to trigger actions, personalize workflows, update tools, create tasks, send alerts, or guide teams inside the systems they already use.
Common destinations include CRMs like Salesforce and HubSpot, marketing tools like Braze and Customer.io, support tools like Zendesk and Intercom, customer success tools, ad platforms, spreadsheets, product databases, internal tools, Slack, Microsoft Teams, and workflow systems like Jira or Linear.
A reverse ETL tool usually starts from the warehouse and syncs data to destinations. A customer data platform, or CDP, often owns customer profiles, identity resolution, audience building, event collection, and marketing activation. The categories overlap, especially in warehouse-native or composable CDP products.
dbt can build the clean models that reverse ETL depends on, but dbt is not usually the sync layer that writes those models into Salesforce, HubSpot, Braze, Zendesk, Slack, or an internal API. You still need a reverse ETL tool, API job, pipeline asset, or workflow automation layer to operationalize the model.
No. Marketing is a common use case because audience syncs are obvious, but reverse ETL is also useful for sales, RevOps, support, customer success, finance, product, operations, and internal tooling. Any team that needs warehouse-backed context inside an operational system can use the pattern.
Do not use reverse ETL when the source data is untrusted, the identity mapping is weak, nobody owns the destination field, or a failed sync would be hard to detect and reverse. In those cases, fix the model, ownership, and validation first. The sync should be the final handoff, not the place where unclear logic gets hidden.

How Bruin CLI, Bruin MCP, Bruin Cloud, and agent skills can build and maintain a Salesforce to Snowflake ELT pipeline across bronze, silver, and gold layers.

Most AI data analysts live in Slack or a browser. Bruin runs in WhatsApp too. Here is why field, sales, and ops teams prefer asking their data questions there, what it takes to make it actually work, and how to roll it out safely.
Can you just use ChatGPT, Claude, or a coding agent like Codex to analyze your company data? Here is the honest difference between a general AI model and a purpose-built AI data analyst, why a model alone is not enough, and what it takes to get trustworthy answers from live company data.
Practical updates on open-source data pipelines, AI analysts, governance, and what we are shipping at Bruin.