Push modelled data from your warehouse back into the SaaS tools that business teams use every day — CRM, marketing, support — so they can act on analytics without a BI detour.
Rendering diagram…
Use reverse ETL when the business team needs analytics-derived data inside the tools they already use:
churn_risk as a property in HubSpotcustomer_tier visible on every ticketIf your answer to "where should this number live?" is "in a report", consider reverse ETL instead. People don't live in reports.
Your warehouse already has the source of truth. A reverse ETL job reads a modelled table or query result and writes it to a SaaS destination via that tool's API. Tools like Hightouch, Census, and Polytomic productise this; you can build it yourself with workflow code, though the edge cases bite.
Two common modes:
Most SaaS destinations rate-limit aggressively and charge per API call. A reverse ETL job that pushes 10 million "updates" where only 400 actually changed is a great way to blow your quota.
Do not sync raw tables. Build a customer_traits model in dbt (or your warehouse) that is the single version of truth for everything you'll push out. Sync that model, not the underlying joins.
Every sync needs a stable identifier on the destination side (salesforce.contact_id, hubspot.email). Map warehouse rows to that key. Mismatches cause duplicates on the destination that are hard to clean up.
Option A: hash each row and compare to the last-synced hash. Option B: use a last_modified_at column from the source. Avoid diffing full tables — it scales badly.
Every destination has different limits. Implement exponential backoff, chunk the payload, and parallelise within the destination's allowed concurrency. Budget for "when Salesforce is having a day".
Every sync should produce a per-row outcome: created, updated, skipped, failed. When a go-to-market person asks "why isn't this lead showing up", the log answers the question without a developer.
Periodically check an external system for changes and trigger workflows when new or updated records are detected. The reliable alternative when webhooks aren't available.
Receive real-time events from external systems via webhooks, validate them, and trigger the appropriate workflow response. The foundation of reactive automation.