Customer and lead data from disconnected systems
The challenge they faced
A property tax consulting firm serving Texas businesses seeking to reduce personal property taxes and recover overpayments, the team was managing client data across Salesforce and a separate business intelligence system built by an external partner. Salesforce contained incomplete and inaccurate records, with missing property identifiers and mismatched data that hindered targeting and account management. Meanwhile, a large cleaned dataset from their primary lead source remained disconnected from the CRM, forcing manual processes and limiting the team's ability to identify growth opportunities in existing accounts.
The firm also faced operational friction in finance workflows. Client creation required manual data entry after deals closed, and invoicing contact information was maintained in a separate system, requiring bi-monthly validation by multiple team members. Additionally, their service line pricing calculator in Salesforce needed replication in the new system to ensure accurate revenue calculations for their finance partner. Bluleadz was engaged to migrate from Salesforce to HubSpot while integrating the cleaned external data and automating key finance processes.
The strategy we mapped
We prioritized data integrity and operational continuity by sequencing the migration and integrations carefully. The Salesforce migration had to come first: cleaned data in HubSpot was the foundation for downstream integrations with NetSuite and external systems. At the same time, we identified integration constraints early–dropdown fields in NetSuite that the native sync could not access, product naming mismatches, and unclear contact identification logic–and resolved them upfront by consulting NetSuite experts, disabling non-essential syncs (products and deals), and establishing filter criteria for the contact sync before activation.
This front-loaded troubleshooting prevented data pollution and kept the team moving. Parallel to the migration, we built out the invoicing workflow: defining which contacts should sync to NetSuite, creating deal properties to identify them reliably, and setting up reporting to catch contact changes after the fact since NetSuite cannot delete synced records. We also connected a large cleaned external dataset to HubSpot, mapped renewal opportunities to the new product catalog, and set up the finance integration to sync invoices back into HubSpot–all while the team was learning the new system.
The solutions we executed
We migrated all core Salesforce objects–Contacts, Accounts, Opportunities, and custom objects like Locations and Business Reviews–into HubSpot using both the native Salesforce integration and Smart Transfer, with post-migration testing to ensure data integrity. The migration captured most activity history, though orphaned tasks and notes with attachments did not transfer. We also identified and corrected data gaps during the process, such as missing company Lead Status values, and deferred parent-child company relationships to a later phase since NetSuite's complex structure was not yet replicated in HubSpot.
The HubSpot-to-NetSuite integration syncs only new companies and their invoicing contacts–filtered to closed-won deals after April 30, 2026–to ensure clean data and avoid re-triggering existing client records. We worked around native integration limitations by creating a custom text field in NetSuite to receive the Terms value via workflow, and defaulting Type and Category fields in HubSpot to standard values. Invoicing contacts are identified by two required deal properties (Invoicing Contact Name and Email) that the account managers populate before closing a deal; the sync uses these properties as filter criteria. We also built a HubSpot report to track when invoicing contacts are removed from billing roles so the team can identify stale NetSuite records, since the native integration cannot delete synced contacts.
The NetSuite invoice sync pulls completed invoices back into HubSpot, eliminating manual data entry for client creation after deals close. We also connected a cleaned external dataset of leads to HubSpot so the team could work segmented lists in bulk and track lead status at both the contact and company level using custom lead status values.
We disabled the HubSpot-to-NetSuite products and deals syncs to avoid data pollution. Products are created manually in both systems since they change infrequently and NetSuite's internal item numbers were overwriting sales-friendly names in HubSpot. Deals remain in HubSpot as the system of record; finance creates sales orders in NetSuite by reviewing associated company and deal records. We also set up the native DocuSign integration to sync contracts to the correct HubSpot records and configured an Azure Functions serverless host for the external data connection.
What changed after the engagement.
The team now syncs clean customer and contact data between HubSpot and NetSuite using filtered criteria that prevent data pollution and stale records. One-way syncs pull invoices from NetSuite back into HubSpot, eliminating manual client creation after deals close. A connected external dataset of leads enables bulk segmentation and tracking at both contact and company level, giving the team visibility into growth opportunities without manual processes. Products and deals remain in HubSpot as the system of record, with finance creating sales orders by reviewing associated records in NetSuite, simplifying the integration and protecting existing NetSuite data structures.
Want results like these?
Tell us where your revenue engine is stuck — we'll map the fix in one call.