Cleaning a list of 5,000 numbers: what it costs, what you get back
Most of a big list is fine. The job is finding the part that is not, without ringing five thousand people to do it.
Somebody has handed you a spreadsheet. Five thousand rows, assembled over nine years by four different people, at least two of whom have left. It has a column called Notes that contains, variously, notes, second phone numbers, and the word "CHASE" in capitals.
You have been asked to clean it. Here is how that actually goes.
Before you verify anything, subtract
Verification costs money per check, so the cheapest win available is not checking things you did not need to check. In practice a list like this loses a good chunk of its rows to free, mechanical passes before a single message goes out.
- Strip the rows with no number at all. On an old list this is often surprisingly many, and no amount of verification will help them.
- Normalise the formatting. 07700 900123, +447700900123 and 447700900123 are one number wearing three hats, and if you skip this you will pay to check the same person three times.
- De-duplicate on the normalised number, not on the name. Names are spelled inconsistently; numbers are not.
- Split mobiles from landlines. Only mobiles can receive a code, so the two halves need different treatment and different expectations.
- Set aside anyone who has asked not to be contacted. This is not optional, and it should be the first filter you build rather than the last.
What the verification pass does
The mobiles get a one-time code by text. The person reads six digits and types them back, which is a thing only the holder of that handset can do. That is the entire mechanism, and its plainness is the point: there is no inference, no scoring, no probability.
Results land in three groups, and it is worth being precise about what each one means.
| Result | What it means | What it does not mean | What to do |
|---|---|---|---|
| Confirmed | Somebody holding that handset entered the code | That they want to hear from you | Nothing. It is right. |
| No answer | No code came back within the window | That the number is dead | Leave it. Try again in a few months. |
| Undeliverable | The network would not accept the message | That the person has moved | Shortlist for a human. |
That middle row is the one people misread. A quiet number is not a bad number. Somebody was driving, or the message went to a phone in a drawer, or they simply do not type codes from unknown senders - which is, frankly, sensible of them.
The costs, honestly
Bulk verification is priced per check, so the arithmetic is yours to do with your own numbers rather than ours to promise. What is worth comparing is the shape of the two options.
Ringing five thousand numbers at two minutes each is about 167 hours - four working weeks of somebody's time, and that is before you count the awkwardness. Verification puts a per-message cost against that, and reduces the human time to whatever is left in the undeliverable pile, which is usually a morning.
The comparison people forget to make is against doing nothing, which also has a cost - it is just deferred and paid by whoever needs to reach somebody urgently in eight months.
What you do with the results
This is where a cleaning exercise usually stops and where the value actually starts.
- Confirmed numbers get a verified badge with the date, so the next person to look at the record knows how fresh that claim is.
- The undeliverable shortlist gets a human - now a sensible use of a morning rather than four weeks.
- The quiet group gets left alone. No flag, no deletion, no red text.
- And then the important bit: invite the people who matter to maintain their own record, so this is the last time you do this.
Cleaning a list is a chore you repeat. Letting people maintain their own details is a chore you retire.
The thing nobody tells you about clean data
It does not stay clean. The half-life of a business contact list is short, and every month after your big clean it drifts a little further from the truth. Nine months later you are roughly back where you started and somebody suggests cleaning the list.
That loop is the actual problem. Verification is a good tool and it is worth running - but if it is the whole strategy, you have signed up to do it forever. The way out is structural: hold a link to a record the person keeps current rather than a copy you have to maintain.
Common questions
Do I need consent to send a verification code?
You need a lawful basis, and for keeping your own records accurate that is normally legitimate interests rather than consent. Accuracy is one of the principles the UK GDPR asks of you, so a proportionate check on data you already hold lawfully sits comfortably. Record what you sent and why.
Will this hurt my sender reputation?
Verification messages are transactional, expected and short, which is the well-behaved end of SMS. The thing that damages reputation is sending marketing to people who did not ask, which this is not.
What about people who have opted out?
They should be filtered out before the verification pass, not after. Build the suppression check as your first filter.
How often should I re-run this?
Annually is a sensible rhythm if you are doing it manually. If the people in your book maintain their own records, the honest answer is that you should not need to.
Can I verify a list I bought?
You can technically. Whether you should hold that list at all is the prior question, and it is usually the harder one.
Where to start
Run the free passes first - deduplicate, normalise, filter. Then verify the segment you would genuinely be upset to lose rather than the whole file. Then set up the part that stops you needing to do it again.