Upgrade Labs Data Integration & Reporting
A custom booking experience and data pipeline connecting Zenoti, HubSpot, and reporting.
The Problem
Upgrade Labs needed its Zenoti guest and transaction data to support marketing in HubSpot. Appointments, trials, packages, and memberships had to be connected to the right people and translated into useful customer information.
Objectives
Build a shared data layer.
Make relevant Zenoti records available in HubSpot.
Create a foundation for reporting without relying only on manual exports.
Connect the intro-offer booking experience to campaign context and booking-step activity.
Challenge
This was not a simple field-for-field transfer. The U.S. and Canadian Zenoti environments returned different data structures, API limits affected extraction, and duplicate or missing email addresses complicated record matching. Customer lifecycle stages also had to be calculated from several types of activity.
Actual intro-offer pages: an archived before screenshot with handwritten annotation removed, and the current page with pricing masked. The offer and marketing copy have evolved between versions.
Strategic Approach
We replaced the embedded intro-offer widget with a custom booking flow connected to Zenoti. That gave us control over the website experience and a place to capture campaign context and booking-step activity alongside the booking workflow.
We built a middleware pipeline that extracts Zenoti data into a MySQL warehouse, combines related records, and loads the resulting contact and appointment information into HubSpot. Keeping the transformation logic in a separate data layer gave us a place to calculate fields that were not directly available from a single Zenoti record.
We mapped guest, appointment, membership, package, and trial data to HubSpot properties and maintained cross-references between the systems’ record IDs. The mapping included customer lifecycle stages, tour status, membership and package details, visit totals, and Zenoti email and SMS preference fields.
We worked through data-quality and mapping issues with the client and its marketing team, including duplicate emails, appointment associations, and changing status values. The work included ongoing troubleshooting of integration loads, not just an initial transfer.
We also made warehouse data available in Tableau, published guest and membership data sources, and built initial interactive dashboards. This extended the same data foundation beyond marketing integration into reporting and exploration.
What we delivered
- Custom intro-offer booking flow connected to Zenoti.
- Campaign context and booking-step activity capture.
- Custom Zenoti extraction and HubSpot loading pipeline.
- MySQL warehouse combining guest and transaction data.
- Contact and appointment mapping with cross-system ID references.
- Calculated lifecycle stages and membership, package, trial, and visit fields.
- Data-quality troubleshooting and integration maintenance.
- Tableau data sources and initial guest and membership dashboards.
A custom booking experience, operational records, marketing data, and reporting connected through a shared data layer.
Outcome
Upgrade Labs gained a working connection between its operational data and HubSpot, backed by a warehouse that also supported Tableau analysis. The value was in making related customer information usable across systems, with a separate data foundation for reporting and future integration work.
The widget replacement brought the website booking experience into that work: a branded flow with campaign context and step-level activity capture, rather than an embedded form outside our control.
Tags
Ready to Start the Conversation?
Every engagement begins with an introductory call. We’ll discuss your goals, answer your questions, and determine whether Virtual Window is the right fit.
