How to Import 50,000 Leads Without Breaking Your List
By Aisel Verdieva
Content, Apex Sales AI

The short answer
A lead list is a liability until it has been de-duplicated, normalised, scrubbed against Do-Not-Call, and stamped with a state so quiet-hour rules can apply. Doing that work at import takes about twenty minutes for 50,000 rows. Skipping it costs you dial time, number reputation, and — in a TCPA-regulated space — potentially a great deal more.
This is the walkthrough, in order, with the decisions you have to make at each step.
Before you upload: audit the file
Open the CSV and answer five questions. Two minutes, and it will save you an hour.
=COUNTA(B:B) against =SUMPRODUCT(1/COUNTIF(B2:B50000,B2:B50000)).(555) 123-4567, 555.123.4567, +15551234567 — will defeat duplicate detection unless normalised.If question four has no good answer, stop. That is not a data-hygiene problem, it is a compliance problem, and importing it does not make it go away.
Step 1 — Normalise the phone numbers
Strip everything that is not a digit, then handle the leading country code consistently. Every downstream step — deduplication, DNC matching, delivery — depends on this.
In a spreadsheet, a workable formula is a nested SUBSTITUTE chain removing spaces, parentheses, hyphens, and periods, then a RIGHT(...,10) to take the last ten digits. Do this before anything else.
Step 2 — Decide your duplicate policy deliberately
Most import tools default to something. Choose instead, because the three options produce genuinely different outcomes:
| Policy | What happens | Use when |
|---|---|---|
| Skip | Existing record wins; new row discarded | Your CRM data is richer than the vendor's |
| Merge | Fields combine; new data fills gaps | Most common and usually correct |
| Create | Both records exist | Almost never — this is how you double-dial |
Merge is the right default for nearly everyone. "Create" is the setting that produces the experience of calling the same person twice in one afternoon from two different records, which is the fastest way to burn a lead.
Step 3 — Scrub against DNC on the way in
This is the step that matters most, and the one people postpone.
The National Do Not Call Registry held roughly 258.5 million phone numbers as of 30 September 2025, up 1.9% year over year (FTC). Registrations are permanent. On a purchased consumer list, a non-trivial share of the file will match.
Two things to understand about scrubbing:
Scrubbing at import is necessary but not sufficient. Numbers move onto the registry between your import and your send. The control that actually protects you is a check that runs immediately before each call or message. APEX does both — a scrub during the CSV import pipeline, and a DNC check before every outbound call and text, with blocked sends written to an audit log.
Do not delete the matches. Suppress them. A deleted record can be re-imported next month by someone who does not know. A suppressed record with a reason on it stays suppressed.
APEX handles CSV imports of up to 50,000 rows with DNC scrubbing in the pipeline and a retry-safe design, so a partial failure does not leave you guessing which half went in.
Step 4 — Fill in the state, always
Federal telemarketing rules restrict calls and texts to 8:00 a.m. – 9:00 p.m. in the recipient's local time. States including Florida, Oklahoma, Alabama, Louisiana, Mississippi, Maryland, Oregon, Washington, Rhode Island, and Texas impose tighter windows, and Texas SB 140 (effective 1 September 2025) added treble damages and mandatory attorney's fees for texting violations.
Your platform cannot enforce any of this on a record with a blank state field. Where the state is missing, derive it from area code as a fallback and flag those records so you know they are inferred rather than sourced.
Step 5 — Tag the import session
Give every import a name and a date: medicare-aged-2026-09-19. This one habit gives you three things later:
APEX supports filtering by import session directly, so a tagged batch remains addressable as a group.
Step 6 — Set the pipeline state before you dial
Do not import leads into an undifferentiated pool. Assign stage, priority, and owner at import. On a team, round-robin distribution at import means nobody spends Monday morning deciding who gets what.
Step 7 — Verify before you launch
Five checks, three minutes:
The maintenance cadence
Importing clean is half the job. Lists decay.
Weekly: merge duplicates from the week's imports, mark hard-failed numbers as bad so they stop consuming dial time.
Monthly: re-scrub anything older than thirty days. Thirty-one days is widely treated as the floor for list-level scrubbing.
Quarterly: retire lists that have produced nothing. A list with three thousand records and zero replies across two campaigns is not an asset, it is a source of failed sends that damages your number reputation.
Before every seasonal push: full re-scrub, full de-duplication, full time-zone verification. Ahead of the annual enrollment window running 15 October to 7 December, do this in September, not October.
Related reading
FAQ
How often should I re-scrub my lead list against DNC?
Thirty-one days is commonly treated as the floor for list-level scrubbing. But list-level scrubbing is not the control that protects you — a check at the moment of send is, because registrations happen continuously. Do both: periodic list scrubs to keep the data clean, and a per-send check to prevent the violation.
What is the maximum CSV size I can import into APEX?
50,000 rows per import, with DNC scrubbing running as part of the import pipeline and a retry-safe design so a partial failure is recoverable. For larger files, split them into batches and tag each import session separately — which is better practice anyway, because it keeps source attribution intact.
Should I delete DNC matches from my list?
No — suppress them. A deleted record can be innocently re-imported later by someone who does not know its history. A suppressed record carries its reason with it and stays suppressed across future imports.
Why does my import show fewer records than my CSV?
Usually duplicates being merged, or DNC matches being suppressed. Both are the system working correctly. Check the import summary for the breakdown before assuming data loss, and reconcile the numbers: original rows minus duplicates minus suppressions should equal what landed.
Do I need consent records for leads I bought?
Yes, and you should require them from the vendor: the URL and the exact disclosure language as displayed, the named sellers in the consent, a timestamp with IP address, a consent-verification certificate token, and the opt-in method. If a vendor will not supply these, you are carrying the risk for their data collection practices.
What if the list has no state column?
Derive it from area code as a fallback, and flag those records as inferred. Area codes are imperfect — people keep numbers when they move — so treat inferred states as lower confidence and, where the stakes are high, verify before working the record.
Aisel Verdieva
Content, Apex Sales AI
Helping insurance agents grow their business through automation, compliance, and proven strategies.
