Case studies

Salted Stone Unified Salesforce and HubSpot in Under 19 Hours

Written by Himanshi | Aug 24, 2026, 10:06:16 PM

"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. "

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.