Healthcare

Medicare Agency Migration: 424 Hours to 4 Days with Zero Data Loss

A Medicare insurance agency needed to move their entire client database from RadiusBob CRM to GoHighLevel. 1,593 contacts, 32,508 notes, 1,222 policies, and 793 relationships. Manual re-entry would have taken 400+ hours. We did it in 4 days.

All Case Studies

4 days Migration time vs 424 hours manual
1,593 Contacts migrated 38 custom fields each
Zero Records lost
$10K+ Labor cost avoided

Challenge

What Made This Migration Genuinely Hard

Most business owners think data migration is copying and pasting. Export from old system, import to new one. Done in a weekend. That's the theory. Reality is messier.

The agency's data lived in RadiusBob with no direct migration path to GoHighLevel. Each contact carried 38 custom fields, thousands of timestamped notes, multiple insurance policies, and family relationships that couldn't just disappear.

Four things made this genuinely hard:

Silent API Failures

GoHighLevel's API would return "200 OK" when updating contact fields, then quietly discard the data if you used the wrong field format. Fields would appear empty after a "successful" update. No error. No warning. Just gone.

The 10-Label Limit

GoHighLevel caps contact-to-contact relationship types at 10 labels. The agency needed 14+. The API rejected anything beyond 10 with a cryptic error message that didn't explain the actual constraint.

Duplicate Contact Chaos

When contacts shared email addresses or phone numbers, GoHighLevel merged them automatically using last-record-wins logic. Rich, detailed profiles got overwritten by sparse ones that happened to be processed later.

Medicare Integration Complexity

Each contact also needed to be matched or created in HealthSherpa for enrollment workflows. That required a three-pass matching strategy: Medicare ID lookup first, then name and date-of-birth search, then create a new contact if nothing matched.

Solution

The Pipeline

A Docker-containerized Python pipeline with 7 sequential tasks, built for the edge cases rather than the demo.

Environment Preparation

Validated all API connections, created custom fields in GoHighLevel using proper field IDs (not field keys, which the docs suggested and the API silently ignored), and set up rate limiters for both platforms.

Contact Import

Migrated 1,593 contacts with all 38 custom fields. For contacts sharing emails or phone numbers, we preserved the richest data record rather than letting GoHighLevel's merge logic decide. An idempotent pipeline meant the process could be interrupted and resumed without creating duplicates.

HealthSherpa Matching

The three-pass matching strategy tried Medicare Beneficiary Identifier first, fell back to name and date-of-birth, then created new contacts if nothing matched. Matched or created 1,321 of 1,593 contacts in HealthSherpa Medicare.

Policy and Notes Import

Created 1,222 insurance policies as GoHighLevel Custom Objects with searchable fields. Imported 32,508 notes using async parallelism with 8 concurrent requests, preserving original timestamps. Processed roughly 1,000 notes every 2 minutes.

Relationships and Validation

Created 350 contact-to-contact relationships using 10 carefully prioritized association labels. Used asymmetric label pairs to work around the 10-label API restriction. Final validation cross-referenced record counts, spot-checked field mappings, and generated error reports for manual review.

Results

The Final Numbers

Four days total. The manual estimate was 400+ hours. Zero records lost. Full Supabase backup maintained throughout. The agency could start using GoHighLevel on day five with complete client history and Medicare enrollment capabilities intact.

1,593 contacts migrated with all 38 custom fields
32,508 notes imported with timestamps preserved
1,222 insurance policies created as structured, searchable objects
1,321 HealthSherpa Medicare contacts matched or created
Zero data loss across all record types

The agency's team spent those four days serving clients instead of copy-pasting data for two and a half months. The underlying economics are explained in detail in the economics of replacing manual processes with systems. For a deeper look at platform-level risk in the same industry, see a healthcare platform rescue for the same industry.

Related: See more case studies →

Every project starts with a diagnostic.

Free 30-minute call. Map your operations. See what can be automated, or hear honestly that it cannot.