UK number cleansing for CRM — 2026 playbook
How to cleanse a UK phone-number list in your CRM — E.164 normalisation, libphonenumber validation, dedup, TPS suppression, carrier-aware checks.
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 number right now
Type any UK number — Ofcom range holder + caller verdicts.
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 number validation APICompare the major UK phone number validation APIs (Twilio, Numverify, Vonage, MessageBird) on accuracy, cost, carrier data and Ofcom-equivalent coverage.
- Validate a UK mobile numberHow 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 formatThe complete UK phone number format reference: E.164 spec, the libphonenumber regex, valid prefixes, length rules, and a working JavaScript validator.
- Free UK Phone Number Checker — Check Any UK NumberFree UK phone number checker. Paste any landline, mobile, freephone or service number to check it's valid, see the Ofcom range holder, and read caller verdicts from other visitors. No signup.
- British phone number searchBritish phone number search using free official Ofcom data and community caller reports. Find the provider, area, line type and reputation of any UK number.
Related guides
- UK phone number format — E.164, regex, rulesReference
- Validate a UK mobile number (2026 guide)Reference
- UK phone number validation API — 2026 guideReference
- UK short codes — 999, 112, 101, 105, 116Reference
- UK area codes — every 01/02 dialling codeReference
- 020 London — 0203, 0207, 0208, 0204 explainedReference
- Lookup any UK numberFree reverse phone lookup
- UK area codesEvery 01/02 dialling code
- Range holdersEvery Ofcom-listed provider
- FAQCommon WhoCalledLookup questions
- About WhoCalledLookupWho we are and our sources
- About the authorEditorial profile