Ship idempotent reverse ETL in 60 minutes with a ruthless data engineering playbook
Spend 15 minutes a week in September and finish with a working reverse ETL from Snowflake to HubSpot through Hightouch with clean mapping, change detection, and two idempotency proofs.
This mini-course is part of the Level-up data engineering playlist. Click here to explore the full series.
I owned all the data at my company and pushed every request through my team.
I thought I built resilience. I built a silo.
Sales asked the same thing every week. How much did this account use the product this month. I made them file tickets. I made them wait. My queue grew. Their patience died. Meetings turned into status updates. Shit felt broken.
So I stopped hoarding. I pushed usage into HubSpot where they lived. Contacts showed totals and recency. Sales stopped pinging me. Marketing ran lists without me. I shipped fewer dashboards and got more credit.
And now I teach the exact move. Reverse ETL. Upserts keyed by email. Reruns without side effects. You ship it in an hour and use it forever.
Here is what flips once you wire this up:
Sales opens a contact and sees total orders, total revenue, last order date, and recency
Marketing builds a list in minutes and hits send
Finance checks the same fields and signs off
You rerun the job and nothing moves unless features changed
You hold the keys and your name lands in the room
How to work with this mini-course
Just reading the article alone would take you over 20 minutes. So:
Bookmark this guide and set a reminder to revisit it weekly.
Skim the entire article once to understand the big picture.
Each week, complete the exercises before applying them to your own projects.
Take your time. Don’t rush to implement everything at once. Master each step before moving to the next.
Also, you will need about an hour to read the whole thing and write the code at once. It’s much easier to spend 15 minutes per week!
The business pain and why reverse ETL wins
Sales opens HubSpot before a call and sees no usage. Marketing needs a list and waits. Customer support asks at 7 am. Slack fills with the same asks. Dashboards sit. Money leaks.
Teams want fields in the tool where work happens. Totals. Dates. Recency. On the contact. On time.
Reverse ETL moves a few facts from the warehouse onto the contact. I upsert by email. If facts change, HubSpot updates. If nothing changes, nothing moves. Reruns stay clean.
Why the business cares: prep before calls takes minutes, tickets drop, lists ship without a queue, one set of fields sits in one place, logs show what changed and when.
What changes on day one:
Sales sees total orders, total revenue, last order date, and recency on the contact
Marketing builds a segment for active in the last 30 days and hits send
CSM sorts by stale usage and books outreach
How a data engineer proves value:
Time to answer falls from days to minutes
Rerun noise goes to zero
Pipeline and renewals rise
Prerequisites
Create accounts on Snowflake, Hightouch, and HubSpot CRM.
None of these requires a credit card. Use a personal workspace.
HubSpot properties
Add contact properties with these internal names and types:
total_orders
numbertotal_revenue
numberlast_order_date
date pickerrecency_days
numberfeature_hash
text if you want change detection
Access
Use a Snowflake role that can create a warehouse, database, schema, views, and tables. For the sake of this project feel free to use ACCOUNTADMIN.
Allow Hightouch to reach Snowflake. Give HubSpot rights to create and edit contact properties.
Tools
Use Snowsight's (the Snowflake web UI) worksheets. Keep a simple text editor open just in case.
I also strongly recommend putting all the code in a GitHub repository so you can grow your portfolio.
Cost and safety
As always, this whole thing will cost you $0 in tooling.
Time
Block 15-20 minutes each week. Skim the whole guide once. Then only do the current week. Ship the step. Stop.
If you can log in to all three tools, create the HubSpot properties, and run a CREATE TABLE in Snowflake, you are ready for week 1.
Week 1: model features in Snowflake
The goal this week is simple. Build one fast table with four customer metrics per email. Set the grain. Prove it runs clean. Keep previews fast so Hightouch feels smooth next week.
Theory
This week is the hardest part. In my experience, the hard part is not the SQL. The hard part is locking down how KPIs work so every tool shows the same number.