How to Clean CRM Phone Numbers: Format, Validate, Dedupe and Sort by Line Type
Cleaning CRM phone numbers takes six steps: export, normalise to E.164, remove invalid numbers, merge duplicates, sort mobiles from landlines, and re-import with record IDs. The whole thing works the same way in HubSpot, Salesforce, Pipedrive, Zoho or any CRM that exports and imports CSV. Most teams can do it in an afternoon, and it makes every calling, SMS and deduplication tool work better afterwards.
What "dirty" looks like
A typical CRM phone column, after a few years of reps, forms, imports and integrations:
| As stored | Problem |
|---|---|
(415) 555-2671 |
No country code |
415.555.2671 x204 |
Extension in the number |
+1 415 555 2671 |
Fine, but won't match the two above as text |
07400 123456 |
UK number, no country code |
+44 07400 123456 |
Trunk 0 left in: one digit too many |
555-1234 |
Seven digits, no area code |
call reception first |
A note, not a number |
0000000000 |
Placeholder from a required form field |
Each row breaks something: dialing, SMS, deduplication or reporting.
Step 1: Export with record IDs
Export the contacts you want to clean with:
- the record ID (so you can update rather than create on re-import)
- every phone field: phone, mobile, work, home
- country and, if you have it, region
Keep an untouched copy of the export.
Step 2: Normalise to E.164
Convert every number to + country code national number, with no spaces. Use the contact's country for numbers without a +, and drop the trunk prefix (the leading 0 in most countries). The rules and a 12-country table are in international phone number format; the standard itself is in E.164 phone number format.
Move extensions to their own field and notes to a notes field before converting.
Step 3: Flag invalid numbers
A number is invalid if it's the wrong length for its country or in a range that isn't allocated. Common sources: typos, placeholders like 0000000000, fictional 555 numbers and numbers missing an area code.
Don't delete the contact. Clear the phone value into a "phone needs review" field so reps can find a real number later. More on what validity does and doesn't mean in how to check if a phone number is valid.
Step 4: Merge duplicates on the normalised number
Deduplicate after normalising, never before. (415) 555-2671 and +1 415 555 2671 only match once both are +14155552671. Sort by the E.164 value, review the groups, and merge in the CRM using its own merge tool so activity history is kept. See remove duplicate phone numbers.
Shared numbers aren't always duplicates: several contacts at one office may share a switchboard. Merge people, not phone numbers.
Step 5: Sort mobiles from landlines
Put mobiles in the mobile field and everything else in the main phone field. SMS tools usually read the mobile field, and a landline there means failed texts.
Outside North America the prefix usually tells you. In the US and Canada mobiles and landlines share area codes, so the numbering plan returns "mobile or landline" and you need a carrier lookup. See mobile vs landline lookup.
Step 6: Re-import with record IDs
Import the cleaned file, mapping the record ID so the CRM updates existing records. Test with 20–50 rows first and check them in the CRM before running the rest. CRM-specific steps:
Keeping it clean
- Forms: use a phone field with a country selector, and validate on submit.
- Imports: validate and normalise every file before it goes in.
- Integrations: check what format each sync sends; fix it at the source if you can.
- A quarterly check of records created since the last clean.
Doing steps 2, 3 and 5 in one upload
Upload the export on SimpleVerifier's verifier. It finds the phone column and adds these columns to your file. Numbers without a + are read as US numbers, so prefix other countries' numbers with + and their country code before uploading:
| Column | Use it for |
|---|---|
phone_e164 |
Step 2: the normalised number to re-import |
phone_status |
Step 3: valid, invalid or empty |
phone_country |
Checking the country matches the contact |
phone_type |
Step 5: mobile, landline, toll-free, VoIP or "mobile_or_landline" |
These checks are included on plans (see pricing), and your record IDs and other columns come back unchanged.
For US and Canadian contacts, live carrier lookups, a paid extra, return the real line type (mobile, landline or VoIP) and carrier. Failed lookups don't count. Email addresses in the same export get a live mailbox check, so one upload cleans both fields.
Check a single number first with the free phone number validator.
Related: clean phone numbers in a CSV · bulk phone number validation · validate phone numbers in Excel · how to clean HubSpot contacts
Common questions
How do I clean phone numbers in my CRM?
Export the contacts with their record IDs, convert every number to E.164 using each contact's country, flag numbers that fail validation, merge duplicates on the normalised number, check which numbers are mobiles, then re-import using the record ID so existing records are updated.
What format should CRM phone numbers be in?
E.164: a plus sign, the country code and the national number with no spaces, such as +14155552671. It works in every country and is what dialers, SMS tools and integrations expect.
Should I delete invalid phone numbers from my CRM?
Clear or flag them rather than deleting the contact. An invalid phone doesn't mean the contact is worthless; their email or company may still be good. Move the bad value to a notes field or a 'phone needs review' flag so reps can fix it.
How often should I clean CRM phone numbers?
Do a full clean once, then validate numbers at the point of entry: forms, imports and integrations. A quarterly check of new records catches anything that slipped through.
Check your list before you send
Real mailbox checks over SMTP, and nothing is sent to the address. Sign in with Google and your first 100 email checks are free, no card. Plans for bigger lists are on the pricing page.