Cleaning a Legacy Contact List in GoHighLevel: From 3,000+ Contacts to 2,303 Usable Leads
By Alex Regueiro · October 25, 2026 · 5 min read
A contact list that has grown for years is only worth something if you can tell which names are still leads. That was the situation for the owner of a restoration company: more than 3,000 legacy contacts in poor shape, and no GoHighLevel account or lead tracking to put them in.
60-second check
Take the 2-minute AI readiness survey →
Talk it through
Book a call with the Reshape team →
This story covers a working session on a new GoHighLevel build, where the list was cleaned and the account stood up. If you run a service company with an old customer list, see our page for home service businesses.
The situation
The company had a large legacy list in poor shape. There was no GoHighLevel account, and no way to track where a lead came from or what happened to it.
The business also has a field crew. Their job data lives in a separate job system, so any plan for tracking had to leave room for that data to arrive in the CRM eventually.
What was broken
In general, an unclean list is a quiet cost. It inflates the number of contacts you think you have, it makes every future report harder to trust, and it puts messages in front of people who should never get them.
With no account and no lead tracking, the company also could not measure what any outreach did.
What we built
On the working session, we did four things.
- We set up a new GoHighLevel account for the company.
- We cleaned the legacy list of more than 3,000 contacts down to 2,303 usable leads.
- We began testing desktop automation of the job system, so that field data can eventually be pushed into GoHighLevel.
- We added a new dedicated number for outbound voicemail drops and lead tracking.
What changed
The measured result is the list: more than 3,000 contacts reduced to 2,303 usable leads. That is the only number stated, and it describes the size of the list, not any sales or response.
The rest of the build was still in progress. The plan was to finish the GoHighLevel setup over the weekend and return the following Monday.
How to clean your own list
This is advice for any owner with an old list, not a description of the criteria used here.
Export everything into one file. Remove exact duplicates, contacts with no working phone number or email, and anyone who asked not to be contacted. Check phone numbers against the do-not-call registry before any calling or voicemail campaign, and confirm you have permission to message the people you keep. Keep a copy of the original export before you delete anything, so a mistaken removal can be undone. Then load the clean list into the CRM with a field that records where each contact came from.
Decide up front what makes a contact usable, for example a working phone number or email and a recent interaction, and write that rule down so the next cleanup follows the same one. Count what you remove and note the reason for each group, so you can explain the new total to anyone who asks.
Frequently asked questions
How many contacts should be left after cleaning a legacy list?
There is no right number. In this case, more than 3,000 contacts became 2,303 usable leads. What matters is that every name left is reachable and permitted, so your reports reflect people you can actually contact.
Why start with a new GoHighLevel account instead of importing straight in?
This company had no account and no lead tracking at all. Building the account first, then loading a cleaned list, means the structure is right from the start and the old problems do not carry into the new system.
Why use a separate number for outbound voicemail drops?
A dedicated number lets you tell outbound activity from inbound calls in your tracking. It does not replace the checks you owe your contacts, including permission and do-not-call screening, before you send anything.
Can field job data flow into GoHighLevel automatically?
That was the aim. We began testing desktop automation of the job system so field data can eventually be pushed into GoHighLevel. It was an early test during this session, and no completed integration was reported.
If you are sitting on an old contact list and no way to track what it earns, book a 30-minute AI follow-up and reporting audit. We look at your list, your CRM and your lead sources, then show you how to turn names into trackable leads.