UK number cleansing for CRM — 2026 playbook
How to cleanse a UK phone number list in your CRM: format normalisation, libphonenumber, carrier-aware deduplication, TPS suppression, and Ofcom-aware quality scoring.
On this page
If you're a UK marketer, RevOps lead or sales ops engineer, your CRM is probably full of phone numbers that started life as 0203 9461234 and +44 20 7946 0000 and 02012345678 ext 123 and a thousand other shapes. This is the practical 2026 playbook for cleansing UK numbers — what 'cleansed' actually means, how to do it efficiently, and which third-party tools save you time vs cost you money.
Why cleanse?
Three concrete benefits:
- Lower SMS / call costs — sending to invalid numbers wastes credits and triggers carrier complaints.
- Higher deliverability — clean lists get better network reputation; spammy lists get throttled.
- Compliance — UK PECR + GDPR fines for marketing without lawful basis or in breach of TPS reach 4% of global revenue.
- Sales productivity — your SDR shouldn't be cold-dialling
0207-blah-blah-ext-3from a 2019 trade-show export.
Step 1 — Normalise to E.164
E.164 is the single canonical format every downstream tool understands. It's +44 followed by the national digits with the leading 0 dropped. So 020 7946 0000 becomes +442079460000.
import { parsePhoneNumberFromString } from "libphonenumber-js/min";
export function normaliseToE164(input: string): string | null {
const cleaned = input.trim().replace(/\s+/g, "");
const phone = parsePhoneNumberFromString(cleaned, "GB");
return phone?.isValid() && phone.country === "GB" ? phone.number : null;
}Run this across every phone column in your CRM export. Anything that returns null is either malformed or non-UK — quarantine, don't delete, in case there's a manual fix.
Step 2 — Drop syntactically-invalid numbers
After normalisation, anything still null is invalid. Common reasons:
- Extension suffixes (
...0000 ext 123) — strip theextportion before parsing. - Bracketed alternatives (
07700 900000 / 07700 900111) — split into separate rows. - Mistyped digits (10 digits where 11 expected, or vice versa).
- Non-UK numbers in a UK column — re-classify into a country column.
Step 3 — Deduplicate
After E.164 normalisation, deduplication is a simple GROUP BY phone_e164. The interesting decision is merging the rest of the row when the same number appears against multiple contacts:
- If two contacts share the same E.164, prefer the one with the most recent activity timestamp.
- Preserve emails / first names from both rows in a
merged_fromfield. - If they differ on company, mark for human review — could be a switchboard number for two different employees, or a shared receptionist.
Step 4 — Classify by line type
Some campaigns target only mobile (SMS), some only landline (cold call). Use libphonenumber's getType():
import { parsePhoneNumberFromString } from "libphonenumber-js/min";
export function classify(input: string) {
const phone = parsePhoneNumberFromString(input, "GB");
if (!phone?.isValid()) return "INVALID";
return phone.getType() ?? "UNKNOWN";
// possible values: 'MOBILE' | 'FIXED_LINE' | 'FIXED_LINE_OR_MOBILE'
// | 'TOLL_FREE' | 'PREMIUM_RATE' | 'SHARED_COST'
// | 'VOIP' | 'PERSONAL_NUMBER' | 'PAGER' | 'UAN' | ...
}Step 5 — Suppress TPS-registered numbers
The Telephone Preference Service (TPS) is the UK's official cold-call opt-out register. Calling a TPS-registered number for marketing without lawful basis is a PECR breach. Two ways to suppress:
- TPS Assured licence (~£1k/year + per-record fees) — official live API access.
- Bulk file purchase — quarterly TPS file from a reseller. Cheaper for one-off cleanups.
Either way, run your normalised list against TPS and flag matches. Don't delete — keep the contact, mark tps_registered=true, and route them to email-only sequences.
Step 6 — Optional in-service check
If your list is large and old, run a sample (or the whole thing) through a paid carrier-aware API to confirm in-service:
- Twilio Lookup with Line Type Intelligence — confirms current carrier post-port.
- Vonage Number Insight Advanced — adds reachability data.
- MessageBird Lookup HLR — live HLR query, fastest for SMS-readiness.
See UK phone number validation API for the full comparison.
Quality scoring — what 'good' looks like
| Score 0–10 | Meaning |
|---|---|
| 10 | E.164, recently observed via inbound call/SMS, in service, not on TPS |
| 7–9 | E.164, in-service via API, last activity < 12 months |
| 4–6 | E.164, valid format, no in-service check, last activity 1–3 years |
| 1–3 | E.164 format only, last activity > 3 years |
| 0 | Invalid, TPS-suppressed, or marked DNC |
Persist this score in the CRM and re-compute quarterly. Sales should default to working scores 7+; marketing email-only sequences for everything else.
GDPR + PECR compliance reminders
Organisations should screen their marketing call lists against the Telephone Preference Service no later than 28 days after the number was added. Calling a TPS-registered subscriber without consent is a breach of PECR Regulation 21.
- Lawful basis for marketing calls/SMS to UK numbers is opt-in (with limited soft-opt-in exceptions for existing customers).
- TPS suppression is mandatory for cold sales calls.
- International transfers — if your validation API is non-UK, check it's in your DPA + has UK adequacy / SCCs.
- Right to erasure — when a contact requests deletion, also remove the phone hash from any vendor cache.
Bottom line
Cleansing a UK CRM phone list is a six-step pipeline: normalise → drop invalid → dedupe → classify → TPS-suppress → optionally in-service-check. The first four are free with libphonenumber-js. The last two cost money but pay for themselves in deliverability, compliance and SDR productivity.
Look up a UK number now
Free, no signup. See the Ofcom range holder + AI internet check.
Frequently asked questions
What does UK number cleansing involve?
Normalising every number to E.164 format, dropping syntactically-invalid entries with libphonenumber, deduplicating against the canonical E.164, classifying by line type (mobile vs landline), suppressing TPS-registered entries, and optionally a carrier-aware in-service check via a paid API.
How do I bulk-validate UK phone numbers in a CRM?
Run libphonenumber-js across the export to drop malformed entries, then sample-check survivors with a paid API like Twilio Lookup or MessageBird HLR to estimate currency. Daily/weekly batch is fine; you don't need real-time for CRM work.
Do I need to suppress TPS-registered numbers?
Yes for cold sales calls — calling a TPS-registered number without lawful basis is a UK PECR breach. The TPS Assured live API or a quarterly TPS file from a reseller are the standard suppression sources.
Can I cleanse my UK list using a free tool only?
Mostly. libphonenumber-js handles format normalisation, validation, deduplication and line-type classification — all free. The two paid layers are TPS suppression (free if you have an Assured licence already) and carrier-aware in-service checks.
Sources & references
- libphonenumber-js — JavaScript port@catamphetaminegithub.com/catamphetamine/libphonenumber-js
- Telephone Preference Service (TPS)DMA / TPSwww.tpsonline.org.uk
- Privacy and Electronic Communications Regulations (PECR)Information Commissioner's Officeico.org.uk/for-organisations/direct-marketing-and-privacy-and-electronic-communications/guide-to-pecr/
- Data Protection Act 2018 + UK GDPR overviewInformation Commissioner's Officeico.org.uk/for-organisations/uk-gdpr-guidance-and-resources/
- Twilio Lookup API — Line Type IntelligenceTwiliowww.twilio.com/en-us/lookup
Continue reading
- UK phone number validation API — 2026 guideCompare the major UK phone number validation APIs (Twilio, Numverify, Vonage, MessageBird) on accuracy, cost, carrier data and Ofcom-equivalent coverage.
- Validate a UK mobile number (2026 guide)How to validate a UK mobile number in 2026: format check, prefix check, libphonenumber-js code, plus carrier-aware paid APIs for bulk B2B work.
- UK phone number format — E.164, regex, rulesThe complete UK phone number format reference: E.164 spec, the libphonenumber regex, valid prefixes, length rules, and a working JavaScript validator.
- UK phone number checker — validate any UK numberA free UK phone number checker that does three jobs: validates the format, identifies the line type, and verifies the number against Ofcom + a live AI internet check. No signup.
- British phone number search — landline or mobileBritish phone number search using free official Ofcom data and a live AI internet check. Find the provider, area, line type and reputation of any UK number.