"Salted Stone used Switch by Suprdense to consolidate more than 2.5 million records and engagements from Salesforce and a 21-year-old HubSpot portal into a clean new HubSpot instance - giving five regional sales teams a governed single source of truth from day one. "
Salted Stone is a HubSpot Elite Solutions Partner. For this engagement, its team led a complex post-acquisition CRM consolidation for a global prop-tech scale-up operating across five countries.
Visit Salted Stone ↗HubSpot consulting and CRM transformation
Incline Village, Nevada
After acquiring a smaller competitor, a global prop-tech scale-up needed to bring two very different CRM environments together. The acquirer operated in Salesforce, while the acquired company relied on a 21-year-old HubSpot portal with a deep history of companies, contacts, deals, tickets and engagement data.
The migration could not interrupt revenue users selling across five countries. It also had to preserve a strict company reference ID policy, enrich records that had already been selectively imported through CSV files and maintain the correct owner, timestamp and association for every historic interaction.
Salted Stone had two weeks to complete the program, with a freeze window of no more than one week. The team needed a migration approach that could move high volumes quickly without allowing duplicate or uncontrolled Company records into the new HubSpot portal.
Salted Stone collaborated with Suprdense to architect and execute the migration using Switch. The result was a controlled production cut-over completed in 18 hours and 47 minutes, every SLA met and a unified HubSpot instance ready for five regional sales teams on day one.
Consolidating two CRM environments moves 2.5M+ records without rebuilding history
The migration footprint covered 521,978 Salesforce records and 2,047,222 records from the legacy HubSpot portal. The challenge was not simply moving data. Salted Stone had to decide which records should be updated, created, merged or skipped while preserving every valid relationship.
On the Salesforce side, Switch updated 39,689 Companies through sf_company_id, enriched 75,508 Contacts and created 23,819 Opportunities. It also inserted 331,476 activities, 51,407 notes and 79 files across the correct objects. If the required Company lookup was missing, the record was not migrated.
From the legacy HubSpot portal, the team processed 77,298 Companies, 260,614 Contacts, 14,939 Deals, 470,046 Calls, 277,941 Emails, 30,247 Meetings, 80,995 Notes, 829,361 Tasks and 5,781 Tickets. New-portal values took priority during merges, while legacy values filled only blank fields.
A final delta run captured Salesforce activities created during the first migration phase. Owners were mapped across the new portal, including inactive representatives whose historical ownership still needed to remain attached to their records.
The documented migration footprint totalled 2,569,200 records before deduplication, while approximately 2 million engagements retained their correct links and historical context.
Two tier reference ID matching protects governance and prevents uncontrolled Company creation
The new HubSpot portal already contained selectively imported records, so standard create-and-merge logic would have introduced duplicates and put governed company IDs at risk. Fuzzy company-name matching was not acceptable because names can change while regulated reference IDs must remain stable.
Switch exported 77,298 legacy Companies with company reference ID and potential company reference ID, then applied a two-tier deterministic match. When a match was confirmed, new-portal values won and legacy data filled blanks. Records with a primary key clash and a conflicting non blank value were skipped rather than forced through.
For Contacts, an alias resolver collapsed email identities across both systems. A secondary-email clash rule stopped 132 potential false merges, while a side-by-side merge simulator and human approval step prevented a 600-record chain merge before production.
Parallel runners and dynamic throttling compress the production cut-over to 18 hours 47 minutes
Moving millions of records inside a short freeze window required speed without overrunning HubSpot's API limits. Switch distributed the workload across multiple parallel Node.js runners, processing atomic batches of 5,000 records at a time.
Dynamic throttling kept utilisation at approximately 90% of HubSpot rate limits, while exponential back-off beginning at two seconds protected the run when limits tightened. Real-time progress appeared in the Switch dashboard and a shared Slack channel, giving Salted Stone and Suprdense one live view of the cut-over.
CSV validation and difference reports were archived securely without adding an external BI or warehousing layer. Switch did not store CRM data, keeping the migration architecture aligned with the engagement's data-security requirements.
Automations were paused at 05:00 on Monday and the production phases began at 06:15. Automated difference checks, HubSpot sign-off and smoke tests followed before the freeze was lifted with an all clear on Friday morning.
Layered quality assurance delivers zero field-level errors and a clean day one launch
Salted Stone and Suprdense built quality checks into every migration layer. Fifty-five automated schema assertions tested non null requirements, enumerations and dates. Fewer than 0.2% of records initially violated these rules, and every violation was corrected before launch.
The merge simulator exposed risky combinations before they reached production. After loading, the team manually verified a random 2% sample and confirmed 100% field parity across the reviewed records.
During the first seven days after go-live, the team received six data tickets. Every ticket related to configuration rather than migrated data, so no data defect patches were required.
A controlled migration foundation for complex CRM consolidation
Salted Stone came to Switch with a post-acquisition migration that combined high data volume, strict identity governance and a narrow production window. What the team delivered was more than a system transfer: it was a governed operating foundation for five regional sales teams.
Deterministic matching protected Company reference IDs. Parallel runners moved data at scale without compromising rate-limit control. Layered validation caught risks before production and confirmed field parity after the load.
With every SLA met, zero uncontrolled Company creation and zero field-level errors, the new HubSpot portal became the single source of truth on day one.