Inside the Kitchen
SimplePractice + HubSpot
From 12 Hours to 12 Minutes
EHR integration without an API sounds impossible. A multi-location therapy practice was losing twelve hours every month to manual data entry between SimplePractice and HubSpot, until Fruition built a daily Quick Data Flow that automated the entire pipeline. The story is the recipe. The recipe is repeatable.
The Ingredients
Systems & platforms in this EHR integration with SimplePractice and HubSpot
SimplePractice
EHR and practice management with closed-platform exports
HubSpot
CRM destination for contacts, deals, and lifecycle stages
Google Sheets
Master file where the admin pastes the daily delta
Centralized Data Hub System (CDHS)
Identity matching, patient linking, lifecycle, and write-back governance
The Mess in the Kitchen
Before automation, the office admin spent twelve hours every month copying SimplePractice data into HubSpot by hand. SimplePractice offered no live API, no native CRM sync, and no unique client IDs that travelled with the data when it left the platform.
Everything came out as flat Excel files. The admin downloaded two reports daily: one row per individual in the Client Details Report, and one row per appointment in the Appointment Status Report. The two files shared no ID, so matching them meant joining on names, emails, phone numbers, and insurance fields.
Patient records appeared as combined strings in one file and as separate rows in another. Pro bono sessions mixed with paid ones in revenue reports. Lifecycle stages either lagged the practice by days or fell through the cracks entirely.
This created a context silo that leaked time, leads, and reporting accuracy every single day.
Where the Hours Went
12 Hours Lost Every Month
The admin entered data manually from two Excel exports into HubSpot, every day. Twelve hours a month of admin work that wasn’t really admin work.
Patient Records Matched by Hand
Shared appointments split patient records across files. Every match required manual joining on names, emails, and phone numbers.
Pro Bono Mixed With Paid
Pro bono sessions landed in the same files as paid ones. The admin filtered revenue reports by hand before anyone could trust them.
CRM Lagged the Practice
Lifecycle stages, duplicate checks, and payment reconciliation all required manual attention. The CRM ran days behind the actual practice.
The marketing team saw their work disappear into a lagging CRM. The owner saw revenue reports that couldn’t be trusted. The admin saw their week vanish into spreadsheet work. Everyone wanted the same thing.
What They Wanted to Serve
The practice wanted three things at once. Marketing wanted real-time CRM data so they could see which campaigns produced patient inquiries. The owner wanted clean revenue reporting that excluded pro bono and properly attributed paid sessions. The admin wanted their twelve hours back.
One source of truth. Zero technical lift on their end. And the EHR left exactly as it lives today.
Structured HubSpot records created from daily exports
Patient records automatically linked across files
Lifecycle stages assigned from deal history
Pro bono sessions auto-excluded from revenue reports
SimplePractice itself untouched (no write-back)
Zero technical lift for the office admin
Our EHR Integration Recipe
Fruition mapped the practice’s daily data flow, defined the matching and governance rules, and connected SimplePractice exports to HubSpot through CDHS. The recipe runs every day with no one watching it.
Connect Ingredients
Synced two SimplePractice exports into a single Master Google Sheet with delta date stamps. CDHS reads only the new rows tagged with today’s date.
Measure & Mix
Confidence-based identity matching scores three signals (email, phone, name). Two-signal matches auto-sync. Single-signal matches go to a Review Queue. Patient records link via a shared Unit ID. Lifecycle stages assign from deal history.
Taste & Adjust
CDHS creates or updates HubSpot Contacts and Deals, applies pro bono flags, and writes status back to the Master Sheet. The admin sees what synced, what’s queued, and what needs review at a glance.
How It's Served
Now the admin opens SimplePractice once a day, downloads the two reports, pastes the new rows into the Master Sheet, and stamps today’s date. That’s the entire job. Quick Data Flow handles the rest, processing the delta and pushing every record into HubSpot with full context attached.
HubSpot reflects yesterday’s clinical activity by mid-morning. Marketing sees real attribution. The owner sees clean reporting. And SimplePractice never gets touched.
Admin reclaims 12 hours per month
HubSpot reflects yesterday’s clinical activity by mid-morning
No write-back to the EHR, ever
The Review
✕ Before
12 hours of manual data entry every month
Patient records matched by hand, every single appointment
Pro bono mixed into revenue reports, distorting attribution
CRM lagged the practice by days or weeks
✓ After
12 minutes of paste-and-stamp per month
Patient records auto-linked across files, every time
Pro bono auto-excluded from revenue, preserved for clinical
CRM reflects yesterday’s clinical activity by mid-morning
Connect Your Practice Data Before It Becomes a Silo
We work with practices, agencies, and operators whose tools don’t talk to each other. EHR integration without an API is just one recipe.
See more recipes in the QDF Use Cases library, or read the Let Data Flow framework.