Importing and Cleaning an External CSV
What it does: turns a messy export from Apollo, ZoomInfo, Clay, a CRM or LinkedIn itself into a clean Reachium lead list.
Run it when: the leads already exist somewhere else and you are not going to rebuild them here.
Time: 20 minutes for a few thousand rows.
Depends on: SOP 04, Choosing How to Build the List. Reachium's own scrapes land clean and never need this.
Before you start
The CSV exported and openable
The row count, so you can reconcile afterwards
A lead list created, or a decision to add to an existing one
The steps
1. Find the profile URL column by its values, not its header.
This is the single thing that goes wrong most. Every source names it differently, and some ship two columns that look alike. The right column is the one whose values look like linkedin.com/in/..., whatever the header calls it. A profile URL is required on every row; without it the row cannot be imported at all.
2. Map the rest of the columns by meaning.
Source | Profile URL column | Watch out for |
|---|---|---|
LinkedIn Connections export |
| Older exports have no job title and no phone |
Sales Navigator via Evaboot |
| Email only present if enriched |
Sales Navigator via PhantomBuster |
|
|
Apollo |
|
|
ZoomInfo |
| Two phone columns, pick one |
Clay or a CRM | whichever column holds /in/ values | Headers are whatever someone typed |
The fields that carry over are profile URL, first and last name, email, company name, job title and phone. Everything else in the file is dropped, which is fine.
3. Split full names.
If the source has one name column, split on the first space: first token to first name, the rest to last name. Compound surnames and single-name profiles come out approximate, so expect a handful to need fixing later. At least one of first or last name must be present or the row is skipped.
4. Set aside the rows that cannot be imported.
Company page URLs, Sales Navigator lead URLs, and rows with an email but no profile URL. That last group is worth keeping in a separate file rather than quietly binning it: those people are real, they just need a profile URL before they can be reached on LinkedIn.
5. Do not bother normalizing URL formatting.
http versus https, a www or country subdomain, a trailing slash, tracking parameters on the end: all handled on import. Time spent tidying these is time wasted. Only the /in/ shape matters.
6. Import in batches of 500.
Three thousand leads is six batches, ten thousand is twenty. Re-sending a batch is safe, because rows are keyed on the profile URL and a retry after a lost response cannot duplicate anyone. No credits are charged; this is your own data.
7. Reconcile the count.
Compare the list total against the number of rows you sent. The difference is the skipped rows, and the response says which and why. Never report a list as fully imported without checking this. A 4,000-row file that landed 2,600 leads usually means the wrong URL column was mapped.
8. Know when to use the app instead.
Beyond roughly 10,000 rows, the importer in the app is built for the job and will be faster and safer than cleaning the file in a conversation.
9. Fix stragglers individually.
One lead with a typo'd company or a mangled name gets corrected in place. Do not re-import the whole file to fix six rows.
Do this / Not this
Do this | Not this |
|---|---|
Identify the URL column by its values | Trust a header called "LinkedIn" |
Apollo's Person Linkedin Url | Apollo's Company Linkedin Url |
Reconcile list total against rows sent | Announce "all imported" |
Keep the no-URL rows in a side file | Delete them silently |
Batches of 500 | One call with 4,000 rows |
Name the list after the ICP | Name it after the file |
Use the app importer past 10,000 rows | Grind through 40 batches |
Done when
Every row mapped to profile URL, name, and whatever optional fields exist
Rows without a valid /in/ URL identified and set aside, not lost
All batches sent and the list total reconciled against the input count
Skipped-row count and reason known and reported
List named after the ICP, ready for a campaign